Comment convertir une chaîne sécurisée en texte brut dans PowerShell

  1. Utiliser la classe Marshal pour convertir une chaîne sécurisée en texte brut dans PowerShell
  2. Utiliser le cmdlet ConvertFrom-SecureString pour convertir une chaîne sécurisée en texte brut dans PowerShell
  3. Utiliser la classe NetworkCredential pour convertir une chaîne sécurisée en texte brut dans PowerShell
  4. Utiliser la méthode GetNetworkCredential pour convertir une chaîne sécurisée en texte brut dans PowerShell
  5. Conclusion
Comment convertir une chaîne sécurisée en texte brut dans PowerShell

PowerShell offre différentes méthodes pour gérer les objets SecureString, qui sont conçus pour protéger les informations sensibles en mémoire. Cependant, il y a des scénarios où il devient nécessaire de convertir SecureString en texte brut malgré les risques pour la sécurité.

Dans cet article, nous explorons différentes méthodes pour réaliser cette conversion, y compris l’utilisation de la classe Marshal, du cmdlet ConvertFrom-SecureString, de la classe NetworkCredential et de la méthode GetNetworkCredential(). Chaque méthode offre ses avantages et ses considérations, fournissant une flexibilité dans la gestion sécurisée des données sensibles au sein des scripts PowerShell.

Utiliser la classe Marshal pour convertir une chaîne sécurisée en texte brut dans PowerShell

Dans PowerShell, la classe [System.Runtime.InteropServices.Marshal] fournit des méthodes pour faciliter l’interaction avec du code non géré et manipuler la mémoire. Deux de ses méthodes, SecureStringToBSTR et PtrToStringAuto(), jouent un rôle crucial dans la conversion de SecureString en texte brut.

Exemple :

$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$secureStringPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($secureStringPtr)
$plainText

Dans cet exemple, nous créons d’abord un objet SecureString nommé $secureString contenant le mot de passe "MyPassword" en utilisant le cmdlet ConvertTo-SecureString. Ensuite, nous utilisons [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString) pour convertir le SecureString en une représentation BSTR (Basic String).

Enfin, [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($secureStringPtr) est utilisé pour convertir la représentation BSTR en texte brut et le stocker dans la variable $plainText.

Sortie :

chaine sécurisée PowerShell en texte brut - sortie 1

Utiliser le cmdlet ConvertFrom-SecureString pour convertir une chaîne sécurisée en texte brut dans PowerShell

Le cmdlet ConvertFrom-SecureString convertit la chaîne sécurisée en une chaîne standard chiffrée. À partir de PowerShell 7.0, un nouveau paramètre -AsPlainText a été ajouté, qui convertit une chaîne sécurisée en une chaîne en texte brut.

L’exemple suivant nécessite PowerShell version 7.0 ou supérieure.

Exemple :

$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$plainText = ConvertFrom-SecureString -SecureString $secureString -AsPlainText
$plainText

Dans cet exemple, nous commençons par créer un objet SecureString nommé $secureString contenant le mot de passe "MyPassword" en utilisant le cmdlet ConvertTo-SecureString. Nous utilisons ensuite le cmdlet ConvertFrom-SecureString pour convertir $secureString en sa représentation en texte brut, stockant le résultat dans la variable $plainText.

Sortie :

chaîne sécurisée PowerShell en texte brut - sortie 2

Utiliser la classe NetworkCredential pour convertir une chaîne sécurisée en texte brut dans PowerShell

Dans PowerShell, la classe [System.Net.NetworkCredential] fait partie de l’espace de noms System.Net du Framework .NET. Elle est principalement utilisée pour fournir des informations d’identification pour les opérations réseau, telles que l’accès aux services Web, aux serveurs FTP ou aux partages réseau.

Bien que son but principal soit l’authentification, elle peut également être utilisée pour convertir un SecureString en texte brut dans des scénarios où des informations d’identification en texte brut sont requises.

Exemple :

$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$networkCredential = New-Object System.Net.NetworkCredential("", $secureString)
$plainText = $networkCredential.Password
$plainText

Dans cet exemple, nous créons un objet SecureString nommé $secureString contenant le mot de passe "MyPassword" en utilisant le cmdlet ConvertTo-SecureString. Ensuite, nous instancions un objet System.Net.NetworkCredential, $networkCredential, en fournissant un nom d’utilisateur vide (car il n’est pas requis pour notre objectif) et le SecureString contenant le mot de passe comme paramètres.

Enfin, nous récupérons le mot de passe texte brut à partir de $networkCredential.Password et le stockons dans $plainText.

Sortie :

powershell securestring en texte clair - sortie 3

Utiliser la méthode GetNetworkCredential pour convertir une chaîne sécurisée en texte brut dans PowerShell

Dans PowerShell, la méthode GetNetworkCredential() fait partie de la classe PSCredential, qui est utilisée pour représenter un ensemble d’informations d’identification utilisateur. Cette méthode est principalement utilisée pour extraire la représentation en texte brut du mot de passe stocké dans un objet PSCredential.

Exemple :

$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("username", $secureString)
$plainText = $credential.GetNetworkCredential().Password
$plainText

Dans cet exemple, nous commençons par créer un objet SecureString nommé $secureString contenant le mot de passe "MyPassword" en utilisant le cmdlet ConvertTo-SecureString. Ensuite, nous créons un objet PSCredential nommé $credential avec un nom d’utilisateur fictif et le $secureString comme mot de passe.

Enfin, nous utilisons la méthode $credential.GetNetworkCredential().Password pour extraire le mot de passe en texte brut de l’objet PSCredential.

Sortie :

powershell securestring en texte clair - sortie 4

Conclusion

Dans les scripts PowerShell, convertir SecureString en texte brut est une exigence courante dans divers scénarios. En s’appuyant sur des méthodes comme la classe [System.Runtime.InteropServices.Marshal], le cmdlet ConvertFrom-SecureString, la classe [System.Net.NetworkCredential] ou la méthode GetNetworkCredential(), les utilisateurs peuvent gérer en toute sécurité des informations sensibles tout en répondant aux exigences opérationnelles.

Qu’il s’agisse d’interagir avec des systèmes externes, des API héritées ou des opérations réseau, ces méthodes offrent flexibilité et commodité. Cependant, il est crucial de manipuler les données sensibles avec précaution et de considérer les implications de sécurité impliquées.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Article connexe - PowerShell String