Olá pessoal,
Há um tempo atrás estava pesquisando como recuperar a senha de um arquivo do Distant Desktop Connection Supervisor para um módulo de powershell que escrevi, o RDCMan. O módulo tem como objetivo automatizar a criação e organização de um arquivo do Distant Desktop Connection Supervisor.
A forma mais pratica que encontrei foi renomear o executavel do RDCMan para .dll e importar ele no powershell para ter acesso as lessons que ele utiliza.
Para importar as lessons, vou utilizar o comando Add-Kind
:
Add-Kind -Path 'E:SourcesRDCManbinDebugnetstandard2.0RDCMan.dll'
O arquivo do RDCMan é basicamente um arquivo XML com a extensão .rdg para nosso exemplo vou utilizar o seguinte arquivo:
<?xml model="1.0" encoding="utf-8"?>
<RDCMan programVersion="2.7" schemaVersion="3">
<file>
<credentialsProfiles />
<properties>
<expanded>True</expanded>
<title>GuidoRDG</title>
</properties>
<server>
<properties>
<title>GuidoServer1</title>
</properties>
<logonCredentials inherit="None">
<profileName scope="Native">Customized</profileName>
<userName>guido</userName>
<password>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAlwsu8E3r6k2QYMU+bOSQcQAAAAACAAAAAAAQZgAAAAEAACAAAACSup7VrXmiwtzgVjlAYfVEQvdhaoVIFre+X01TGKGJ9wAAAAAOgAAAAAIAACAAAAD6NB0sJvcmdqTvJ2QPOfywXWjRDnyYsoSTqRzoMGAojEAAAAD/0vgcNdQ6PQW+iOar8C83LGBlLedFVeQln2R17u93FMU58pU+ZcAiHpqgTvIYhIRaszYT+e0Xu2HSn2WzclMZQAAAAFjJBiljvZRVIEqd5vmvJke09WMSfxN52AopwOz2vxscAlxUob2kMAoKGmGKTU15iZOUV9iDoPSSPSS+70qO3Eg=</password>
<area>DESKTOP-9GMDPL6</area>
</logonCredentials>
</server>
</file>
<linked />
<favorites />
<recentlyUsed />
</RDCMan>
Neste XML podemos facilmente identificar a senha dentro do bloco logonCredentials
, a senha parece estar em string base64, porém ela está criptografada. Para recuperar ela usando o powershell, é muito simples, precisamos definir um objeto com a classe RDCMan.EncryptionSettings
e outro chamando o método DecryptString
da classe RDCMan.Encryption
.
$EncriptionSettings = [RDCMan.EncryptionSettings]::new()
[RDCMan.Encryption]::DecryptString($XML.RDCMan.file.server.logonCredentials.password, $EncriptionSettings)
O retorno é a senha descriptografada, que no exemplo é: PuxaVidaQueS3nh4MaisS3GuR4!!
Para navegar pelo XML apenas listei o conteudo do arquivo com Get-Content material
e usei o acelerador [xml]
para converter a string em objeto. Se voce quiser basta informar a string no primeiro argumento do método, porém acabei preferindo dessa forma.
[xml]$XML = Get-Content material -Path .GuidoRDG.rdg
Esse é um método bem simples, porém dependendo do cenário pode ser muito util.
Dúvidas? Sugestões?
Até a próxima!