plain password parameter new encrypt credential convertto powershell powershell-v2.0 system.security

password - PowerShell-Decode System.Security.SecureString a la contraseña legible



powershell encrypt password (4)

Quiero decodificar la contraseña de System.Security.SecureString a una contraseña legible.

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

Esta parte del código funciona bien, puedo usar el objeto $ credentials. Pero más adelante en mi código necesito la contraseña en un formato legible. Porque un método necesita la contraseña en una cadena legible. Entonces debo descifrar la contraseña.

¿Cómo es posible descifrar la contraseña del objeto $ credentials?

Actualizar

No funciona:

$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


Aqui tienes:

$password = ConvertTo-SecureString ''P@ssw0rd'' -AsPlainText -Force $Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($password) $result = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr) [System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($Ptr) $result

P @ ssw0rd



Para un objeto "System.Net.NetworkCredential", todo lo que necesita hacer es leer la contraseña de 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;}

Si termina con un objeto PSCredential, desde un comando interactivo como Get-Credential use

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

Consulte http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/26/decrypt-powershell-secure-string-password.aspx para obtener más información.

Nota: utilicé PS 4 para este ejemplo.


($credentials.GetNetworkCredential()).Password