
Estoy cambiando la computadora portátil de un usuario y han guardado su nombre de usuario y contraseña en la GUI de OpenVPN. Naturalmente, no conocen su contraseña porque la ingresaron hace un tiempo y hicieron clic en "guardar contraseña". ¿Existe alguna forma de recuperar estos detalles para poder migrarlos a la nueva computadora portátil sin tener que restablecer la cuenta VPN (lo cual sería mucho más difícil de lo que debería ser!).
Ambas computadoras portátiles son Windows 10.
He copiado los archivos .ovpn
, p12
y .key
pero la GUI todavía solicita el nombre de usuario y la contraseña. No hay ningún archivo de texto de contraseña dentro del directorio de configuración (en OpenVPN en Archivos de programa).
También busqué en el registro pero no pude encontrar la información allí.
EDITAR: Para ser claros, en realidad no necesito "recuperar" la contraseña. Si está cifrada en una clave de registro, por ejemplo, está bien, podría exportar la clave desde la computadora portátil vieja e importarla a la nueva. Necesito encontrar una manera de copiar los detalles de la computadora portátil1 a la computadora portátil2.
Respuesta1
Según la GUI de OpenVPNcódigo fuente, las contraseñas guardadas se almacenan en el registro en HKCU\Software\OpenVPN-GUI\configs
.
Respuesta2
El script de Powershell en este enlace me proporciona la contraseña: Recuperación de contraseña de OpenVPN
Los nombres de registro de mi computadora son un poco diferentes; mi version:
$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))
}
Es posible que también deba ejecutar Add-Type -AssemblyName System.Security
en Powershell para que funcione.
editar: en Windows 10, OpenVPN v11.9,$encryptedbytes=$item.'key-data'
Respuesta3
Tengo el mismo problema después de migrar desde Windows 10 con la configuración corporativa de openVPN al lugar de trabajo de Windows 11. Los guiones de este hilo no me ayudaron. Y yo hice el mío propio. Puede que esto ayude a alguien más... Simplemente reemplace la ruta de registro en Get-ItemPropertyValue con la suya almacenada y ejecute este script en la ventana de Power Shell... Trabajando en 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))
Respuesta4
Agregando a la respuesta de Alex:
También puede extraer fácilmente el nombre de usuario si es necesario agregando las dos líneas siguientes:
$username=$encryptedbytes=$item.'username'
Write-Host ([System.Text.Encoding]::Unicode.GetString($username))
También tenga en cuenta que, dependiendo de su configuración de PowerShell, es posible que deba ejecutar primero los dos comandos siguientes antes de que el script pueda funcionar (para permitir scripts y habilitar los tipos de seguridad necesarios para el proceso de descifrado):
set-executionpolicy remotesigned
Add-Type -AssemblyName System.Security