
Estou trocando o laptop de um usuário e eles salvaram seu nome de usuário e senha na GUI do OpenVPN. Naturalmente eles não sabem a senha porque a inseriram há algum tempo e clicaram em "salvar senha". Existe alguma maneira de recuperar esses detalhes para que eu possa migrá-los para o novo laptop sem precisar redefinir a conta VPN (o que seria muito mais difícil do que deveria ser!).
Ambos os laptops são Windows 10.
Copiei os arquivos .ovpn
, p12
e .key
, mas a GUI ainda solicita o nome de usuário e a senha. Não há arquivo de texto de senha dentro do diretório de configuração (em OpenVPN em Arquivos de Programas).
Também pesquisei no registro, mas não consegui encontrar as informações lá.
EDITAR: Para ser claro, na verdade não preciso "recuperar" a senha. Se estiver criptografado em uma chave de registro, por exemplo, tudo bem, eu poderia exportar a chave do laptop antigo e importá-la para o novo. Preciso encontrar uma maneira de copiar os detalhes do laptop1 para o laptop2.
Responder1
De acordo com a GUI do OpenVPNCódigo fonte, as senhas salvas são armazenadas no registro em HKCU\Software\OpenVPN-GUI\configs
.
Responder2
O script Powershell neste link obtém a senha para mim: Recuperação de senha OpenVPN
Os nomes de registro do meu computador são um pouco diferentes; minha versão:
$keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs"
$items = $keys | ForEach-Object {Get-ItemProperty $_.PsPath}
foreach ($item in $items)
{
$encryptedbytes=$item.'auth-data'
$entropy=$item.'entropy'
$entropy=$entropy[0..(($entropy.Length)-2)]
$decryptedbytes = [System.Security.Cryptography.ProtectedData]::Unprotect(
$encryptedBytes,
$entropy,
[System.Security.Cryptography.DataProtectionScope]::CurrentUser)
Write-Host ([System.Text.Encoding]::Unicode.GetString($decryptedbytes))
}
Você também pode precisar executar Add-Type -AssemblyName System.Security
no Powershell para que funcione.
editar: no Windows 10, OpenVPN v11.9,$encryptedbytes=$item.'key-data'
Responder3
Tenho o mesmo problema depois de migrar do Windows 10 com configuração openVPN corporativa para o local de trabalho do Windows 11. Os scripts neste tópico não me ajudaram. E eu fiz o meu próprio. Pode ser que isso ajude outra pessoa... Basta substituir o caminho do registro em Get-ItemPropertyValue pelo seu caminho armazenado e executar este script na janela do power shell... Trabalhando no Windows 10x64, OpenVPN 2.4.9
$keyBinEncrupted = Get-ItemPropertyValue 'HKCU:\SOFTWARE\OpenVPN-GUI\configs\corpnet' 'key-data'
$entropyBin = Get-ItemPropertyValue 'HKCU:\SOFTWARE\OpenVPN-GUI\configs\corpnet' 'entropy'
$entropyBin = $entropyBin[0..(($entropyBin.Length)-2)]
$keyBinDecrupted = [System.Security.Cryptography.ProtectedData]::Unprotect(
$keyBinEncrupted,
$entropyBin,
[System.Security.Cryptography.DataProtectionScope]::CurrentUser)
Write-Host ([System.Text.Encoding]::Unicode.GetString($keyBinDecrupted))
Responder4
Adicionando à resposta de Alex:
Você também pode extrair facilmente o nome de usuário, se necessário, adicionando as duas linhas a seguir:
$username=$encryptedbytes=$item.'username'
Write-Host ([System.Text.Encoding]::Unicode.GetString($username))
Observe também que, dependendo da configuração do PowerShell, talvez seja necessário executar os dois comandos a seguir antes que o script possa funcionar (para permitir scripts e ativar os tipos de segurança necessários para o processo de descriptografia):
set-executionpolicy remotesigned
Add-Type -AssemblyName System.Security