首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PowerShell -将System.Security.SecureString解码为可读的密码

PowerShell -将System.Security.SecureString解码为可读的密码
EN

Stack Overflow用户
提问于 2011-09-19 16:47:00
回答 5查看 60K关注 0票数 33

我想将密码从System.Security.SecureString解码为可读的密码。

代码语言:javascript
复制
$password = convertto-securestring "TestPassword" -asplaintext -force
$credentials = New-Object System.Net.NetworkCredential("TestUsername", $password, "TestDomain")

这部分代码运行得很好,我可以使用$credentials对象。但是稍后在我的代码中,我需要一个可读格式的密码。因为方法需要可读字符串形式的密码。所以我必须破解密码。

如何从$credentials对象中解码密码?

更新

不工作:

代码语言:javascript
复制
$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 
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-19 18:27:13

这就是了:

代码语言:javascript
复制
$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

票数 51
EN

Stack Overflow用户

发布于 2015-01-30 05:20:04

对于"System.Net.NetworkCredential“对象,您需要做的就是读取字符串密码。

代码语言:javascript
复制
$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等交互式命令使用

代码语言:javascript
复制
$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

注意:我在这个例子中使用了PS4。

票数 20
EN

Stack Overflow用户

发布于 2014-02-05 20:01:21

代码语言:javascript
复制
($credentials.GetNetworkCredential()).Password
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7468389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档