PowerShell - System.Security.secureString к читаемому паролю

Я хочу декодировать пароль из системы. Security.secureString к читаемому паролю.

$password = convertto-securestring "TestPassword" -asplaintext -force
$credentials = New-Object System.Net.NetworkCredential("TestUsername", $password, "TestDomain")

Эта часть кода работает нормально, я могу использовать объект $ Complents. Но позже в моем коде мне нужен пароль в читаемом формате. Поскольку меток нуждается в пароле в читаемой строке. Поэтому я должен определить пароль обратно.

Как можно декодировать пароль из объекта учетных данных $?

Обновление

Не работает:

$password = convertto-securestring "TestPassword" -asplaintext -force
$credentials = New-Object System.Net.NetworkCredential("TestUsername", $password, "TestDomain")

$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($credentials.password)
$result = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr)
[System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($Ptr)
$result 
21
задан LaPhi 19 September 2011 в 16:12
поделиться

2 ответа

Для объекта «System.Net.NetworkCredential» все, что вам нужно сделать, это прочитать пароль String.

$password = convertto-securestring "TestPassword" -asplaintext -force
$credentials = New-Object System.Net.NetworkCredential("TestUsername", $password, "TestDomain")
$credentials.Password
TestPassword

$credentials | gm

TypeName: System.Net.NetworkCredential

Name           MemberType Definition
----           ---------- ----------
Equals         Method     bool Equals(System.Object obj)
GetCredential  Method     System.Net.NetworkCredential GetCredential(uri uri, str
GetHashCode    Method     int GetHashCode()
GetType        Method     type GetType()
ToString       Method     string ToString()
Domain         Property   string Domain {get;set;}
Password       Property   string Password {get;set;}
SecurePassword Property   securestring SecurePassword {get;set;}
UserName       Property   string UserName {get;set;}

Если у вас получится объект PSCredential, то из интерактивной команды, такой как Get-Credential, используйте

$credentials=Get-Credential
$credentials.GetNetworkCredential().UserName
TestUsername
$credentials.GetNetworkCredential().Domain
TestDomain
$credentials.GetNetworkCredential().Password
TestPassword

См. http://blogs.technet.com/b/heyscriptingguy. /archive/2013/03/26/decrypt-powershell-secure-string-password.aspx для подробностей.

Примечание: я использовал PS 4 для этого примера.

14
ответ дан 29 November 2019 в 06:59
поделиться
($credentials.GetNetworkCredential()).Password
5
ответ дан 29 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: