恢复 OpenVPN 保存的密码

jwb*_*ley 9 openvpn windows-10

我正在更换用户笔记本电脑,他们在 OpenVPN GUI 中保存了他们的用户名和密码。他们自然不知道自己的密码,因为他们之前输入过密码并单击“保存密码”。无论如何,是否可以恢复这些详细信息,以便我可以将它们迁移到新的笔记本电脑,而无需重置 VPN 帐户(这将比应该的困难得多!)。

两台笔记本电脑都是 Windows 10。

我已经复制了.ovpn,p12.key文件,但 GUI 仍然提示输入用户名和密码。config 目录中没有密码文本文件(在 Program Files 下的 OpenVPN 下)。

我也搜索了注册表,但在那里找不到信息。

编辑:要清楚,我实际上并不需要“恢复”密码。例如,如果它在注册表项中加密,那很好,我可以从旧笔记本电脑导出密钥并将其导入新笔记本电脑。我需要找到一种方法将详细信息从笔记本电脑 1 复制到笔记本电脑 2。

小智 11

根据 OpenVPN GUI源代码,保存的密码存储在HKCU\Software\OpenVPN-GUI\configs.


Ale*_*lex 11

此链接中的 Powershell 脚本为我获取密码: OpenVPN 密码恢复

我电脑上的注册表名称有点不同;我的版本:

$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))
}
Run Code Online (Sandbox Code Playgroud)

您可能还需要Add-Type -AssemblyName System.Security在 Powershell 中执行才能使其工作。

编辑:在 Windows 10 上,OpenVPN v11.9, $encryptedbytes=$item.'key-data'

  • 为我工作将“关键数据”更改为“身份验证数据” (5认同)