web-dev-qa-db-ja.com

OpenVPNに保存されたパスワードを回復する

ユーザーのラップトップを変更し、ユーザー名とパスワードをOpenVPN GUIに保存しました。当然のことながら、しばらく入力して[パスワードを保存]をクリックしたため、パスワードがわかりません。とにかくこれらの詳細を回復して、VPNアカウントをリセットせずに新しいラップトップに移行できるようにすることはできますか(これは、かなり困難になるはずです!)。

どちらのラップトップもWindows 10です。

.ovpnp12、および.keyファイルをコピーしましたが、GUIは依然としてユーザー名とパスワードの入力を求めます。 configディレクトリ内(OpenVPNのProgram Filesの下)にパスワードテキストファイルはありません。

レジストリも検索しましたが、そこに情報が見つかりませんでした。

[〜#〜] edit [〜#〜]:明確にするために、実際にはパスワードを「回復」する必要はありません。たとえば、レジ​​ストリキーで暗号化されている場合は、古いラップトップからキーをエクスポートして、新しいラップトップにインポートできます。ラップトップ1からラップトップ2に詳細をコピーする方法を見つける必要があります。

5
jwbensley

OpenVPN GUI ソースコード に従って、保存されたパスワードはHKCU\Software\OpenVPN-GUI\configsの下のレジストリに保存されます。

5

このリンクのPowershellスクリプトは私のためにパスワードを取得します: OpenVPN Password Recovery

私のコンピュータのレジストリ名は少し異なります。私のバージョン:

$keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs"
$items = $keys | ForEach-Object {Get-ItemProperty $_.PsPath}

foreach ($item in $items)
{
  $encryptedbytes=$item.'key-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))
}

また、PowershellでAdd-Type -AssemblyName System.Securityを実行して機能させる必要がある場合もあります。

3
Alex