Answers:
这是一个可以完成这项工作的Powershell脚本...
使用记事本打开RDG文件以获取加密的密码。我发现RDG包含我保存的“配置文件”以及每台服务器保存的密码。
现在,使用创建RDG文件的同一台计算机和Windows帐户运行以下powershell命令来查看密码。您必须使用相同的帐户进行解密。
> $PwdString = 'EnCryptEdStringFRoMRDGfile==' > Copy-Item 'C:\Program Files (x86)\Microsoft\Remote Desktop Connection Manager\RDCMan.exe' 'C:\temp\RDCMan.dll' > Import-Module 'C:\temp\RDCMan.dll' > $EncryptionSettings = New-Object -TypeName RdcMan.EncryptionSettings > [RdcMan.Encryption]::DecryptString($PwdString, $EncryptionSettings)
来源: THOMAS PRUD'HOMME的https://blog.prudhomme.wtf/use-powershell-to-decrypt-password-stored-in-a-rdg-file/
使用以下Powershell脚本一次性解密RDG文件中的所有密码。 https://github.com/nettitude/PoshC2/blob/master/resources/modules/Decrypt-RDCMan.ps1
如果链接失败,请参考以下内容:
function Decrypt-RDCMan ($FilePath) {
<#
.SYNOPSIS
This script should be able to decrpt all passwords stored in the RDCMan config file
Function: Decrypt-RDCMan
Author:Ben Turner @benpturner, Rich Hicks @scriptmonkey_
.EXAMPLE
Decrypt-RDCMan -FilePath
#>
if (!$FilePath) {
[xml]$config = Get-Content "$env:LOCALAPPDATA\microsoft\remote desktop connection manager\rdcman.settings"
$Xml = Select-Xml -Xml $config -XPath "//FilesToOpen/*"
$Xml | select-object -ExpandProperty "Node"| % {Write-Output "Decrypting file: " $_.InnerText; Decrypt-RDCMan $_.InnerText}
} else {
[xml]$Types = Get-Content $FilePath
$Xml = Select-Xml -Xml $Types -XPath "//logonCredentials"
# depending on the RDCMan version we may need to change the XML search
$Xml | select-object -ExpandProperty "Node" | % { $pass = Decrypt-DPAPI $_.Password; $_.Domain + "\" + $_.Username + " - " + $Pass + " - " + "Hash:" + $_.Password + "`n" }
# depending on the RDCMan version, we may have to use search through the #text field in the XML structure
$Xml | select-object -ExpandProperty "Node" | % { $pass = Decrypt-DPAPI $_.Password."#text"; $_.Domain + "\" + $_.Username + "`n" + $Pass + " - Hash: " + $_.Password."#text" + "`n"}
}
}
function Decrypt-DPAPI ($EncryptedString) {
# load the Security Assembly into the PS runspace
Add-Type -assembly System.Security
$encoding= [System.Text.Encoding]::ASCII
$uencoding = [System.Text.Encoding]::UNICODE
# try and decrypt the password with the CurrentUser Scope
try {
$encryptedBytes = [System.Convert]::FromBase64String($encryptedstring)
$bytes1 = [System.Security.Cryptography.ProtectedData]::Unprotect($encryptedBytes, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser)
[System.Text.Encoding]::Convert([System.Text.Encoding]::UNICODE, $encoding, $bytes1) | % { $myStr1 += [char]$_}
echo $myStr1
}
catch {
# try and decrypt the password with the LocalMachine Scope only if the CurrentUser fails
try {
$encryptedBytes = [System.Convert]::FromBase64String($encryptedstring)
$bytes1 = [System.Security.Cryptography.ProtectedData]::Unprotect($encryptedBytes, $null, [System.Security.Cryptography.DataProtectionScope]::LocalMachine)
[System.Text.Encoding]::Convert([System.Text.Encoding]::UNICODE, $encoding, $bytes1) | % { $myStr1 += [char]$_}
echo $myStr1
}
catch {
echo "Could not decrypt password"
}
}
}
在Powershell ISE中执行脚本,该脚本应注册功能。然后简单运行:
Decrypt-RDCMan -FilePath MyRDGfile.rdg
适用于旧版本的Nirsoft远程桌面PassView或适用于较新版本的RDG文件的Nirsoft网络密码恢复应有所帮助。
在Windows 64位版本上使用x64版本。