05/06/2021

Powershell taşınabilir enrypted veri oluşturmak

Normalde convertto-securestring veya convertfrom-securestring komutları lokal userın objectini kullanarak veriyi şifreler yani aynı ağ kullanıcısıyla başka bir bilgisayara gittiğinizde ve şifreli veriyi taşırsanız artık açamazınız. taşınabilir yapmak için anahtar a ihtiyacınız var.

Ben kendi ssh anahtarımın public keyini kullandım. Benim amacıma uyuyordu çünkü tüm sistemlerimde aynı SSH anahtar ikilisini kullanıyorum ve dolayısıyla dosya eriştiğim tüm sistemler için uygun.

$veri = gc "C:\Users\$env:username\.ssh\id_rsa.pub"
$LimitedVeri = $veri -replace '\D+(\d+)','$1'
$lc16 = $LimitedVeri.Substring(0,16)
$anahtar = ($lc16[0],$lc16[1],$lc16[2],$lc16[3],$lc16[4],$lc16[5],$lc16[6],$lc16[7],$lc16[8],$lc16[9],$lc16[10],$lc16[11],$lc16[12],$lc16[13],$lc16[14],$lc16[15])

şimdi önce gc (get-content) ile publickey imizi okuttuk

sonra $Limited veri olarak içinden sadece rakanları çektik.

sonra substring ile ilk 16sını aldık

Sonra bunları yan yana yazdırıp anahtar dizisini oluşturduk.

Şimdi bir şifre alalım ve bu anahtar ile encrypt edelim.

$newPass = Read-host " şifreyi girin : " -AsSecurestring | Convertfrom-Securestring -key $anahtar

Daha sonra bu $newPass değişkeni nasıl oldu diye bakarsak

PS C:\Users\can> $newPass
76492d1116743f0423413b16050a5345MgB8AGEAVwB0AE0AWgBoAGsARgAxAEYARgBzAFoAUQBHAHkAZQBtAHAAUQBGAEEAPQA9AHwAYgA1ADUAOAA2AGQANgAyAGQANABmAGYAMgA3ADcAYwA1ADUANABjAGQANAA0ADcAN
wA5ADQAMQA5AGYAYgAxAA==

İşte bunu bir dosyaya kaydedersek başka bir sisteme taşıyabiliriz.

Diyelim ki taşıdık diğer sistemdeyiz. İlk yapmamız gereken onu bir değişkene atmak

$PasSecStr = gc "C:\Users\can\file_saved.txt"

ve onu çevirmek

$PassSecObj = ConvertTo-SecureString $PasSecStr -key $Anahtar
$UnsecurePasswordEnd = (New-Object PSCredential "user", $PassSecObj).GetNetworkCredential().Password

Önce Securestring i bir objecte çeviriyoruz. Sonra

Unencrypt yapmak için PScredential object ini kullanıyoruz.

Not: eğer bir csv nin bir bölümünü aldıysak (CSV de bir header string)

$PassSecObj = ConvertTo-SecureString ($PasSecStr).string -key $Anahtar

Leave a Reply