ПредишенСледващото

И го запишете във файл за по-нататъшна употреба. Защо го направи? Най-малко, за да не въведете парола всеки път, когато ръцете ви. Бих предпочел CSV файл. И това е желателно да се криптира паролата, като използвате силна криптографски алгоритъм. За да започнете, имайте си име и парола в съответните полета на обект инстанция PSCredential.

Помислете за няколко начина за въвеждане на данни:

- в диалоговия прозорец:

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

$ Наименование = Read-домакин -Prompt "Потребител"
$ Pass = Read-домакин -Prompt "Парола" -AsSecureString

$ Cred = Нова обект -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ име, $ пас

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

$ Наименование = 'myname' # потребителско име
$ Pass = ConvertTo-SecureString -String "mypass" -AsPlainText -Force # парола

$ Cred = Нова обект -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ име, $ пас

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Обърнете внимание на изхода на свойствата на конзола обект: потребителско име - myname, парола - System.Security.SecureString.

Струва ни е защитена с парола.

Изпращане на данни към CSV файл за съхранение.

$ Наименование = 'myname' # потребителско име
$ Pass = ConvertTo-SecureString -String "mypass" -AsPlainText -Force # парола

$ Cred = Нова обект -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ име, $ пас

Нова обект -TypeName PSObject -Имуществената @<`
"Потребителското име" = $ cred.UserName; `
'Парола' = (ConvertFrom-SecureString $ cred.Password) `
> | Експортно-CSV, -path "$ Околна среда: USERPROFILE / cred.csv" -Encoding UTF8 -NoTypeInformation -Добавете

Стартирайте код няколко пъти.

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Прочетете съдържанието на CSV-файл.

$ CsvPath = "$ ENV: USERPROFILE / cred.csv"
ако (Тест-Path $ csvPath) Внос-CSV, -path $ csvPath | ForEach-Object
>

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Изглежда, всички в коледната елха - паролата е криптирана.

Трансформация на данни от CSV файл в рамките на PSCredential обект случаи, защо създават обекти с помощта на конструктор, и се опитват да конвертирате имот парола всеки обект в низ.

$ CsvPath = "$ ENV: USERPROFILE / cred.csv"
ако (Тест-Path $ csvPath) Внос-CSV, -path $ csvPath | ForEach-обект Ню обект -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ _. Потребителско име, (ConvertTo-SecureString $ _. Password) `
) .Password.ToString ()>
>

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Странно, но метод ToString () е.

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Сега се обърне внимание, да гледате вашите ръце.

$ CsvPath = "$ ENV: USERPROFILE / cred.csv"
ако (Тест-Path $ csvPath) Внос-CSV, -path $ csvPath | ForEach-обект Ню обект -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ _. Потребителско име, (ConvertTo-SecureString $ _. Password) `
) .GetNetworkCredential (). Password>
>

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Заключение - паролата по такъв начин да се пази.

"Какво можем да направим?" - питате мен.

Обърнете внимание на трансформиране на кратката команда сигурна низ [System.Security.SecureString] в криптиран низ [System.String] - ConvertFrom-SecureString.
Това е, което сме използвали в процеса на подготовка на паролата за износ в CSV файл.

"Парола" = (ConvertFrom-SecureString $ cred.Password)

Кратката команда ни предлага няколко опции за криптиране: Основни и SecureKey.
Аз препоръчваме да използвате като ключов масив от байтове, състоящ се от 16, 24 или 32 (по подразбиране) елементи - 128, 192 или 256-битов ключ, съответно.

Запомнете всички елементи на масива - обезпокоителни.
Опростена: напишете функция, която ще получи 4 числа (като ПИН-код - най-малкото можете да си спомните) и връща масив от байтове на дадена дължина.

Получаване функция ключ [CmdletBinding ()]
Парам (
[Параметър (Задължително = $ Вярно е, Позиция = 0, HelpMessage = "Четири ПИН-код символ")]
[Байт []] $ щифт,
[Параметър (Позиция = 1, HelpMessage = "Ключ Дължина - 16, 24 или 32 байта")]
[Int] $ дъл = 32
)
Напишете-Verbose $ pin.Length
ако ($ pin.Length -NE 4) Напишете-грешка "PIN номер кодови знаци трябва да бъдат равни на 4"
>
ако (($ LEN -NE 16) и ($ LEN -NE 24) и ($ дъл -NE 32)) Напишете-грешка "дължина на ключа трябва да бъде 16, 24 или 32 байта"
>
$ Len = $ дъл / 4
[Байт []] $ ключ = @ ()
за ($ аз = 0; $ аз -lt $ Len; $ аз ++) за ($ J = 0; $ й $ -lt pin.Length; $ й ++) $ ключ + = $ щифт [$ й]
>
>
ключ Write-Output $
>
(Get-Key 1,2,3,8 -Verbose) -join ""

А просто алгоритъм е неуспешно, можете да (трябва да) navayal собствения си - как въображение позволява.
функция тестване.

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Напишете нов скрипт: да изнася данни в CSV файл криптиране алгоритъм за парола, AES, а след това след няколко секунди, опитвайки се да го прочетете.

Получаване функция ключ [CmdletBinding ()]
Парам (
[Параметър (Задължително = $ Вярно е, Позиция = 0, HelpMessage = "Четири ПИН-код символ")]
[Байт []] $ щифт,
[Параметър (Позиция = 1, HelpMessage = "Ключ Дължина - 16, 24 или 32 байта")]
[Int] $ дъл = 32
)
ако ($ pin.Length -NE 4) Напишете-грешка "PIN номер кодови знаци трябва да бъдат равни на 4"
>
ако (($ LEN -NE 16) и ($ LEN -NE 24) и ($ дъл -NE 32)) Напишете-грешка "дължина на ключа трябва да бъде 16, 24 или 32 байта"
>
$ Len = $ дъл / 4
[Байт []] $ ключ = @ ()
за ($ аз = 0; $ аз -lt $ Len; $ аз ++) за ($ J = 0; $ й $ -lt pin.Length; $ й ++) $ ключ + = $ щифт [$ й]
>
>
ключ Write-Output $
>
$ Key = Get-Key 1,2,3,8
$ Наименование = 'myname' # потребителско име
$ Pass = ConvertTo-SecureString -String "mypass" -AsPlainText -Force # парола

$ Cred = Нова обект -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ име, $ пас

Нова обект -TypeName PSObject -Имуществената @<`
"Потребителското име" = $ cred.UserName; `
"Парола" = (ConvertFrom-SecureString -SecureString $ cred.Password -бутона $ ключ) `
> | Експортно-CSV, -path "$ csvPath" -Encoding UTF8 -NoTypeInformation -Добавете

Започнете-Sleep -Seconds 2

ако (Тест-Path $ csvPath) Внос-CSV, -path $ csvPath | ForEach-обект Ню обект -TypeName System.Management.Automation.PSCredential `
-ArgumentList $ _. Потребителско име, (ConvertTo-SecureString $ _. Парола -бутона $ ключ) `
) .GetNetworkCredential (). Password>
>

Изглежда добре.
Ние променяме "PIN" и стартирайте скрипта отново.

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Очевидно е: криптирана парола за първи път (друг ключ), ние не може да бъде получена.

Ние ще се върне първоначалното значение на "PIN", и най-накрая да се уверите, че всичко работи според очакванията, изпълнение на скрипта за трети път.

Как да получите паролата от pscredential, VR-онлайн - безплатно електронно списание за всички

Резултатът - първия и третия парола, на втория - грешка, която е необходима.

За СИМ довиждане. Всички по света.

послепис По мое мнение решението за почти всяка задача, включително счупване криптографски алгоритъм - въпрос на време и бюджет.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!