DecryptRDCManager
is a .NET port of Decrypt-RDCMan.ps1 which was written by Ben Turner and Rich Hicks. This tool will decrypt credentials from Remote Desktop Manager by using the functionality from the RDCMan.DLL as done here.
When a .rdg
file is identified, the contents will look something like this:
<?xml version="1.0" encoding="utf-8"?>
<RDCMan programVersion="2.7" schemaVersion="3">
<file>
<credentialsProfiles>
<credentialsProfile inherit="None">
<profileName scope="Local">testprofile</profileName>
<userName>DEV\testinguser</userName>
<password>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAlSnFmjEAH0SsyduD82ZosAAAAAACAAAAAAADZgAAwAAAABAAAABimXpySiTYAbe0keAEpZs7AAAAAASAAACgAAAAEAAAACklkBrjv0x63t1+OWBCrCggAAAAvCOw3knvjfpvWFRKJDPI+8ipmOA208hh3EijNOAQG0QUAAAAEX45lKeHqHDty7J9S1/GDw9pcIA=</password>
<domain>DEV</domain>
</credentialsProfile>
</credentialsProfiles>
<properties>
<expanded>True</expanded>
<name>testing</name>
</properties>
<server>
<properties>
<name>192.168.100.102</name>
</properties>
<logonCredentials inherit="None">
<profileName scope="File">testprofile</profileName>
</logonCredentials>
</server>
</file>
<connected />
<favorites />
<recentlyUsed />
</RDCMan>
Credentials can either be stored in <credentialsProfile>
, or <logonCredentials>
. During testing, it was found that <logonCredentials>
would either fail to decrypt, or decrypt to 0123456789
. However, <credentialsProfile>
was identified to be way more reliable.
Make sure the RDCMan.DLL
reference is added into the solution, and then build it. After building the solution, ILMerge.exe
it:
.\ILMerge.exe /out:c:\DecryptRDCManager.exe .\DecryptRDCManager\DecryptRDCManager\bin\Debug\DecryptRDCManager.exe .\DLLs\AxMSTSCLib.dll .\DLLs\MSTSCLib.dll .\DLLs\RDCMan.dll
A path to a .rdg
can be passed in, or DecryptRDCManager
will read the following settings file to determine where any .rdg
files are:
"C:\Users\<username>\AppData\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings"
Example without path:
Example with path: