Comment convertir une chaîne sécurisée en texte brut dans PowerShell
-
Utiliser la classe
Marshalpour convertir une chaîne sécurisée en texte brut dans PowerShell -
Utiliser le cmdlet
ConvertFrom-SecureStringpour convertir une chaîne sécurisée en texte brut dans PowerShell -
Utiliser la classe
NetworkCredentialpour convertir une chaîne sécurisée en texte brut dans PowerShell -
Utiliser la méthode
GetNetworkCredentialpour convertir une chaîne sécurisée en texte brut dans PowerShell - Conclusion
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 :

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 :

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 :

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 :

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.
Article connexe - PowerShell String
- Comment extraire une sous-chaîne PowerShell d'une chaîne
- Comment générer des chaînes aléatoires en utilisant PowerShell
- Comment remplacer un texte dans un fichier en utilisant PowerShell
- Comment supprimer les espaces d'une variable en utilisant PowerShell
- Comment trouver la position d'une sous-chaîne dans PowerShell
