
我正在更換使用者筆記型電腦,他們已將使用者名稱和密碼保存在 OpenVPN GUI 中。他們自然不知道自己的密碼,因為他們不久前輸入過密碼,然後點擊「儲存密碼」。無論如何,有沒有辦法恢復這些詳細信息,以便我可以將它們遷移到新筆記型電腦,而不必重置 VPN 帳戶(這會比實際情況困難得多!)。
兩台筆記型電腦均運行 Windows 10。
我已經複製了.ovpn
、p12
和.key
文件,但 GUI 仍然提示輸入使用者名稱和密碼。 config 目錄中沒有密碼文字檔案(在 Program Files 下的 OpenVPN 下)。
我也搜尋過註冊表,但找不到那裡的資訊。
編輯:需要明確的是,我實際上不需要「恢復」密碼。例如,如果它在註冊表項中加密,那就沒問題,我可以從舊筆記型電腦中匯出該金鑰並將其匯入到新筆記型電腦上。我需要找到一種方法將詳細資訊從laptop1複製到laptop2。
答案1
根據 OpenVPN GUI原始碼,保存的密碼保存在註冊表下HKCU\Software\OpenVPN-GUI\configs
。
答案2
此連結中的 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))
}
您可能還需要Add-Type -AssemblyName System.Security
在 Powershell 中執行才能使其工作。
編輯:在 Windows 10、OpenVPN v11.9 上,$encryptedbytes=$item.'key-data'
答案3
從具有企業 openVPN 配置的 Windows 10 遷移到 Windows 11 工作場所後,我遇到了相同的問題。該線程中的腳本對我沒有幫助。我自己做了。可能這對其他人有幫助...只需將 Get-ItemPropertyValue 中的註冊表路徑替換為您的儲存路徑,然後在 power shell 視窗中執行此腳本...在 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))
答案4
加入亞歷克斯的答案:
如果需要,您還可以透過新增以下兩行輕鬆提取使用者名稱:
$username=$encryptedbytes=$item.'username'
Write-Host ([System.Text.Encoding]::Unicode.GetString($username))
另請注意,根據您的 PowerShell 配置,您可能需要先執行以下兩個命令,然後腳本才能運作(以允許腳本並啟用解密過程所需的安全性類型):
set-executionpolicy remotesigned
Add-Type -AssemblyName System.Security