2016-03-23 17 views
0

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

+1

Değişim '" 'için' 'bu satırda:' $ Şifre = "Sy $ tem @ dmin" | ConvertTo-SecureString -AsPlainText -Force' –

+0

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. –

+0

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. –

cevap

2

Sen çift tırnak kullanıyor:

$Password = "[email protected]" | ConvertTo-SecureString -AsPlainText -Force 

dize enterpolasyon için izin " beri ayrıştırıcı muhtemelen bir in sonuçları varolmadığı, hangi, $tem genişletmeye çalışır boş dize, böylece çıktınızda gördüğünüz dize ile sonuçlanırsınız. yerine

Kullanım tek tırnak:

$Password = '[email protected]' | ConvertTo-SecureString -AsPlainText -Force 
İlgili konular