Crypter un mot de passe sous win7

de | 15/09/2016

Powershell permet de crypter un mot de passe, le stocker dans un fichier et le transmettre.

les commandes utilisées sont:

ConvertTo-SecureString et Convertfrom-securestring

Sur internet on trouve pas mal d’infos… mais très peu sur la possibilité d’exporter ce fichier vers une autre machine ou après une réinstallation complète. En effet si on réutilise le fichier contenant le mot de passe on ne peut pas le décrypter !!!

Je n’ai trouvé que un ou deux sites expliquant pourquoi clairement.

http://www.travisgan.com/2015/06/powershell-password-encryption.html

et à la fin de la page de

http://nicolaslang.blogspot.fr/2014/06/stocker-un-mot-de-passe-dans-un-script.html

Pour crypter

Il est très fortement déconseillé de mettre en claire le mot de passe à chiffré dans le script. Il faut donc privilégier la commande

read-host -assecurestring -prompt 'Votre mode de passe'|ConvertFrom-SecureString | Out-File C:\encrypted.txt

et pas

ConvertTo-SecureString ‘mOnP@ssw0rd’ -asplaintext -force|ConvertFrom SecureString | Out-File C:\encrypted.txt

Les deux commande font la même chose, elles sécurisent le mot de passe par encodage. On peut s’arrêter là si on veut juste stoker et réutiliser le fichier sur la même machine. Personnellement je ne voit pas trop l’intérêt! On stocke le mdp dans un fichier pour le transmettre ou pour le réutiliser sur une autre machine.

Et pourquoi on ne peut pas réutiliser le fichier sur une autre machine? Parce que pour encoder il faut un clé d’encodage et là par défaut la clé générée est propre à la machine. Elle est stockée ou cette clé??? Je ne sais pas!!!

On va donc utilisé une clé que l’on connait pour crypter. Grâce à l’option -securekey

Comment ça marche?

On fournit une clé de 16, 24 ou 32 digit (non accentué)

When you use the Key or SecureKey parameters to specify a key, the key length must be correct. For example, a key of 128 bits can be specified as a byte array of 16 digits. Similarly, 192-bit and 256-bit keys correspond to byte arrays of 24 and 32 digits, respectively.

(https://technet.microsoft.com/fr-fr/library/hh849814.aspx)

Cette clé doit être encodée. Une fois encodée elle servira comme clé de cryptage du mot de passe.

rem clé pour crypter
 $cle = read-host -prompt 'cle de cryptage (16 caracteres)'|ConvertTo-SecureString -asplaintext -force
rem mot de passe à crypter
 $passwd = read-host -assecurestring -prompt 'Votre mode de passe'
rem cryptage du mot de passe
 Convertfrom-securestring -securekey $cle -secureString $passwd  | out-file c:\encrypted.txt

Voilà le fichier encrypted.txt peut être réutilisé sur une autre machine ou une fresh install.

Pour décrypter le mot de passe

Il faut donc le fichier contenant le mot de passe crypté et connaitre le clé de cryptage.

$cle = read-host -prompt 'cle de cryptage (16 caracteres)'|ConvertTo-SecureString -asplaintext -force

$password=get-content c:\encrypted.txt | ConvertTo-SecureString -securekey $cle;

par exemple pour un script de connexion à un domaine

set-variable -name domaine -value %domain%;

set-variable -name username -value '%domain%\\%userDom%';

$cle=ConvertTo-SecureString '%cle%' -asplaintext -force;

$password=get-content c:\encrypted.txt | ConvertTo-SecureString -securekey $cle;

$Credential=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList %domain%\\%userDom%,$password;

Add-Computer -DomainName $domaine -Credential $Credential
Catégorie : News

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*