Een wachtwoord beveiligd en onleesbaar in een script plaatsen



Het probleem is dat als je Powershell scripts schrijft met enige regelmaat ook een wachtwoord nodig hebt om ergens naar connectie te maken. Maar als je dat leesbaar in een script zet kan iemand die het script leest daar ook misbruik van maken. 

Een mogelijke oplossing werkt op basis van certificaten. 

Maak eerst een certficaat (mag ook selfsigned). En plaats deze in de jouw eigen persoonlijke certificate store of de persoonlijke certificate store van het account waar het script onder werkt

Je kan dit b.v. doen met powershell door:

New-SelfSignedCertificate -Subject SecretCert -Certstorelocation Cert:\CurrentUser\My -NotAfter (Get-Date).AddYears(4) -Type DocumentEncryptionCertLegacyCsp



 Vervolgens kan je het wachtwoord encrypten met het certificaat:

'RealPassword' | Protect-CmsMessage -To CN=SecretCert


Met deze tekst kan je iets encrypted in je script zetten zodat iemand anders die het script leest er eigenlijk niets mee kan. Om het echte wachtwoord te achterhalen moet men al het certificaat hebben. Die is geinstalleerd in jouw afgeschermde user certificate store. 



Hoe zet je dat dan in een script:

$Secret = @"
-----BEGIN CMS-----
MIIBnQYJKoZIhvcNAQcDoIIBjjCCAYoCAQAxggFFMIIBQQIBADApMBUxEzARBgNVBAMMClNlY3Jl
dENlcnQCEFf29quwAF+ZT1TRrmAZvDgwDQYJKoZIhvcNAQEHMAAEggEAklaYpDWY1/XoKzMNAiGU
Qru+/964/+8mC8u2++TbDkkZXaPPgljakQg2zXnOY1QroY+/V4REyPjjXPfESz6TPy6ZRz3RCCub
U9s9QKRsUilmXP/n9xjWjI+0fK1692ffI7RBbJC6z/fENVDyWhxwKv9FAnkLAFZoONrgocJMn5z7
DaLvvSU+lSQUtcdcqtxSBD9iI9oTM3ev4vuqxGe45WZVj5N/baDE32b6UFzVtcxXNdB2cH5QJfOf
3EdyJHDfdILUhHhq9XvPD/T8Y9GNita6P4O1S4GNGeGYEkYHZabiEs1KyXGoEWnfbS9b9Mc/m5Fe
CE1Olf1vEO/oQ0aAHjA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDNe915yPWlJoUr+gTkvull
gBC9+pdnWznP08qmJ7w/jlVi
-----END CMS-----
"@
$RealSecret = Unprotect-CmsMessage -content $Secret
If ($RealSecret)
{
    "Ok. Het certficaat is geinstalleerd en het echte wachtwoord is leesbaar:"
    $RealSecret
    # Hier komt de rest van jouw eigen code die $RealSecret gebruikt.
}
Else
{
    "Error: Certificaat ontbreekt. Het echte wachtwoord is niet leesbaar:"
    $RealSecret
}





Populaire posts van deze blog

SDRDuo van SDR play remote FT8 monitoring

WinGet