Montag, Februar 22, 2010

SecureStrings und Encryption mit Powershell

In einem von aussen nicht direkt einsehbaren Speicherbereich werden SecureStrings gespeichert. Damit man diese in einem Script dastellen kann, werden Sie encrypted. Die Verschlüsselung ist an die erstellende Maschine gebunden.


#$SecureString=read-host -assecurestring

Sichere
Eingabe des SecureStrings an der Console

$Encrypted=convertfrom-securestring
-securestring $securestring

Encrypted
(für Skripting geeignet)

0..6|%{$A[$_]=$encrypted.substring(($_ * 44),44)}

$A Array
von 7 Teilen, wegen der Übersichtlichkeit
$encrypted.length/7=44


#"`$E=`$null";$A|%{"`$E+=""$_"""}

Folgende
Skriptzeilen erstellen

$E=$null
$E+="01000000d0...fc297eb0100"
$E+="0000fcd684... 96300000000"
$E+="0200000000...0000253b9b1"
$E+="4c835c1f40...04800000a000"
$E+="0000100000...c02d2784f47d"
$E+="1000000065...34e88821400"
$E+="00003d43c0...5f56b26949c5"

Skriptzeilen

$SecureString=Convertto-Securestring -string $E

SecureString aus Encrypted String

$Ptr = [System.Runtime.InteropServices
.Marshal]::SecureStringToBSTR($SecureString)

Pointer
darauf

$Decoded=[System.Runtime.InteropServices
.Marshal]::PtrToStringAuto($ptr)

Entschlüsselt

Keine Kommentare: