Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

És mentse el egy fájlba későbbi felhasználásra. Miért is? Legalábbis annak érdekében, hogy ne adja meg a jelszót minden alkalommal meg a kezét. Inkább egy CSV-fájlt. És kívánatos, hogy titkosítja a jelszót erős titkosítási algoritmus. A kezdéshez tartsa meg felhasználónevét és jelszavát a megfelelő mezőkben az objektum példány PSCredential.

Tekintsük többféleképpen be adatokat:

- A párbeszédablak:

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

$ Name = Read-Host -Prompt 'felhasználónév'
$ Pass = Read-Host -Prompt 'jelszó' -AsSecureString

$ Cred = Új-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ name, $ menetben

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

$ Name = 'myname' # felhasználónév
$ Pass = ConvertTo-SecureString -String 'mypass' -AsPlainText -Force # jelszó

$ Cred = Új-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ name, $ menetben

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Ügyeljen arra, hogy a termelés a konzol objektum tulajdonságai: felhasználónév - myname, jelszó - System.Security.SecureString.

Úgy tűnik, a jelszóval védett.

Adatok küldése egy CSV-fájl tárolására.

$ Name = 'myname' # felhasználónév
$ Pass = ConvertTo-SecureString -String 'mypass' -AsPlainText -Force # jelszó

$ Cred = Új-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ name, $ menetben

New-Object -TypeName PSObject -property @<`
'Username' = $ cred.UserName; `
'Jelszó' = (ConvertFrom-SecureString $ cred.Password) `
> | Export-CSV -path "$ env: USERPROFILE / cred.csv" -encoding UTF8 -NoTypeInformation Fűzze hozzá

Futtatni a kódot egy-két alkalommal.

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Olvassa el a tartalmát a CSV-fájlt.

$ CsvPath = "$ env: USERPROFILE / cred.csv"
if (Test-Path $ csvPath) Import-CSV -path $ csvPath | Foreach-Object
>

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Úgy tűnik, mindenki a karácsonyfa - a jelszó titkosított.

Át az adatokat CSV-fájlt egy PSCredential objektum példány, miért objektumok létrehozásához használ kivitelező, és próbálja átalakítani az ingatlan jelszó minden objektum egy húr.

$ CsvPath = "$ env: USERPROFILE / cred.csv"
if (Test-Path $ csvPath) Import-CSV -path $ csvPath | Foreach-Object New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ _. Felhasználónév, (ConvertTo-SecureString $ _. Jelszó) `
) .Password.ToString ()>
>

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Különös, de a módszer toString () van.

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Most figyeljen, nézd meg a kezét.

$ CsvPath = "$ env: USERPROFILE / cred.csv"
if (Test-Path $ csvPath) Import-CSV -path $ csvPath | Foreach-Object New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ _. Felhasználónév, (ConvertTo-SecureString $ _. Jelszó) `
) .GetNetworkCredential (). Password>
>

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Következtetés - A jelszó oly módon, hogy biztonságos.

„Mit tehetünk?” - engem kérdezel.

Megjegyzés: a transzformációs parancsmagot biztonságos string [System.Security.SecureString] titkosított string [System.String] - ConvertFrom-SecureString.
Ez az, amit már használt a folyamat előkészítése a jelszót export CSV fájlba.

'Jelszó' = (ConvertFrom-SecureString $ cred.Password)

Cmdlet kínál nekünk egy pár lehetőséget titkosításra: Kulcs és SecureKey.
Azt javasoljuk, hogy használja az egyik legfontosabb byte tömb, amely 16, 24 vagy 32 (alapértelmezett) elemek - 128, 192 vagy 256-bites kulcsot, ill.

Megjegyzik minden elemét a tömb - problémás.
Egyszerűsített: levelet funkció, amely megkapja a 4. szám (például a PIN-kódot - legalábbis akkor emlékszem), és adja vissza egy tömbben bájt egy adott hosszúságú.

funkció Get-Key [CmdletBinding ()]
param (
[Parameter (Kötelező = $ Igaz, Position = 0, HelpMessage = "Négy pin-kód szimbólum")]
[Byte []] $ pin,
[Paraméter (pozíció = 1, HelpMessage = "kulcs hossza - 16, 24 vagy 32 bájt")]
[Int] $ LEN = 32
)
Írja-Verbose $ pin.Length
if ($ pin.Length -ne 4) Írja-Error "Number PIN-kód karakterek egyenlőnek kell lennie 4"
>
if (($ len -ne 16) -és ($ len -ne 24) -és ($ len -ne 32)) Write-Error "A kulcs hossza legyen 16, 24 vagy 32 bájt"
>
$ Len = $ len / 4
[Byte []] $ kulcs = @ ()
A ($ i = 0; $ i -lt $ len; $ i ++) for ($ j = 0; $ j -lt $ pin.Length; $ j ++) $ kulcs + = $ pin [$ j]
>
>
Write-Output $ kulcs
>
(Get-Key 1,2,3,8 -verbose) -join ""

Egy egyszerű algoritmus sikertelen, akkor kell (kellene) navayal saját - hogyan képzelet lehetővé teszi.
Tesztelés funkciót.

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Írj egy új script: adatokat exportálni CSV fájlba titkosítják a jelszó algoritmust, AES, majd néhány másodperc után próbál olvasni.

funkció Get-Key [CmdletBinding ()]
param (
[Parameter (Kötelező = $ Igaz, Position = 0, HelpMessage = "Négy pin-kód szimbólum")]
[Byte []] $ pin,
[Paraméter (pozíció = 1, HelpMessage = "kulcs hossza - 16, 24 vagy 32 bájt")]
[Int] $ LEN = 32
)
if ($ pin.Length -ne 4) Írja-Error "Number PIN-kód karakterek egyenlőnek kell lennie 4"
>
if (($ len -ne 16) -és ($ len -ne 24) -és ($ len -ne 32)) Write-Error "A kulcs hossza legyen 16, 24 vagy 32 bájt"
>
$ Len = $ len / 4
[Byte []] $ kulcs = @ ()
A ($ i = 0; $ i -lt $ len; $ i ++) for ($ j = 0; $ j -lt $ pin.Length; $ j ++) $ kulcs + = $ pin [$ j]
>
>
Write-Output $ kulcs
>
$ Kulcs = Get-Key 1,2,3,8
$ Name = 'myname' # felhasználónév
$ Pass = ConvertTo-SecureString -String 'mypass' -AsPlainText -Force # jelszó

$ Cred = Új-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ name, $ menetben

New-Object -TypeName PSObject -property @<`
'Username' = $ cred.UserName; `
'Jelszó' = (ConvertFrom-SecureString -SecureString $ cred.Password gombos $ kulcs) `
> | Export-CSV -path "$ csvPath" -encoding UTF8 -NoTypeInformation Fűzze hozzá

Start-Sleep -Seconds 2

if (Test-Path $ csvPath) Import-CSV -path $ csvPath | Foreach-Object New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ _. Felhasználónév, (ConvertTo-SecureString $ _. Jelszó gombos $ kulcs) `
) .GetNetworkCredential (). Password>
>

Úgy tűnik, jól.
Megváltoztatjuk a „PIN” és indítsa újra a szkriptet.

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Nyilvánvaló: a titkosított jelszó először (egy másik kulcs), akkor nem lehet beszerezni.

Vissza fogunk térni az eredeti értelmét „PIN”, és végül, hogy megbizonyosodjon arról, hogy minden működik rendeltetésszerűen, A script a harmadik alkalommal.

Hogyan juthat a jelszót pscredential, vr-line - ingyenes e-zine az összes

Az eredmény - az első és a harmadik jelszó, a második - a hiba, hogy nem volt szükség.

SIM viszlát. Az egész világ.

Ui Véleményem szerint a megoldás szinte minden feladatot, beleértve a törés kriptográfiai algoritmus - idő kérdése és a költségvetést.

Kapcsolódó cikkek