Recuperar senha salva do OpenVPN

Recuperar senha salva do OpenVPN

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, p12e .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.Securityno 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

informação relacionada