Comment convertir une chaîne sécurisée en texte brut dans PowerShell
-
Utiliser la classe
Marshal
pour convertir une chaîne sécurisée en texte brut dans PowerShell -
Utiliser le cmdlet
ConvertFrom-SecureString
pour convertir une chaîne sécurisée en texte brut dans PowerShell -
Utiliser la classe
NetworkCredential
pour convertir une chaîne sécurisée en texte brut dans PowerShell -
Utiliser la méthode
GetNetworkCredential
pour 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