Bir dosyadan parola okuyan bir powershell komut dosyası var, parola oluşturulmuş bir AES Anahtarı kullanılarak 'güvenli' oldu. işleminde kullanılan üç dosya vardır
AES Anahtar Dosya Üretimi:
$KeyFile = "\\server\path\AES.key"
$Key = New-Object Byte[] 16
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($Key)
$Key | out-file $KeyFile
Şifre Dosya Üretimi:
: Parola Dosyası Grabs ve Düz Metin geri dönüştürür$PasswordFile = "\\server\path\Password.txt"
$KeyFile = "\\server\path\AES.key"
$Key = Get-Content $KeyFile
$Password = "[email protected]" | ConvertTo-SecureString -AsPlainText -Force
$Password | ConvertFrom-SecureString -key $Key | Out-File $PasswordFile
Senaryo
$User = "myuser"
$PasswordFile = "\\server\path\Password.txt"
$KeyFile = "\\server\path\AES.key"
$key = Get-Content $KeyFile
$MyCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)
$PlainPassword2 = $MyCredential.GetNetworkCredential().Password
$PlainPassword2
Düz metne dönüşümü gerçekten sadece yapabilmemiz için yapıldı Verilerin başlangıçta oluşturulduğu ile aynı olduğunu düşünün.
yerine beklendiği gibi Sy $ tem @ dmin görme $ PlainPassword2 içerdiği verileri görüntülemek
, biz Sy @ dmin görüyoruz.Bunu düzeltmek için neler yapabiliriz? Orijinal şifre dize dönüştürürken
Değişim '" 'için' 'bu satırda:' $ Şifre = "Sy $ tem @ dmin" | ConvertTo-SecureString -AsPlainText -Force' –
Mathias - vay ... Bunu özlemediğime inanamıyorum, üçüncü senaryoya çok odaklanmıştım, diğer ikisine hiç bakmadım. Bu benim meselemi tamamen düzeltti. Teşekkür ederim. –
Ayrıca ne işe yaradığı da $ işareti kaçmak Bir backtick ile http://ss64.com/ps/syntax-esc.html @ Boş bir dize değerlendiren başlatılmamış "değişken" $ tem sonlandırır gibi görünüyor. –