Восстановить сохраненный пароль OpenVPN

Восстановить сохраненный пароль OpenVPN

Я меняю ноутбук пользователя, и он сохранил свое имя пользователя и пароль в OpenVPN GUI. Естественно, они не знают свой пароль, потому что они ввели его некоторое время назад и нажали «сохранить пароль». Есть ли способ восстановить эти данные, чтобы я мог перенести их на новый ноутбук без необходимости сбрасывать учетную запись VPN (что было бы гораздо сложнее, чем должно быть!).

Оба ноутбука работают на Windows 10.

Я скопировал файлы .ovpn, p12и .key, но GUI все еще запрашивает имя пользователя и пароль. Текстового файла пароля внутри каталога config (в OpenVPN в Program Files) нет.

Я тоже искал в реестре, но не смог найти там эту информацию.

РЕДАКТИРОВАТЬ: Чтобы было ясно, мне на самом деле не нужно "восстанавливать" пароль. Если он зашифрован в ключе реестра, например, это нормально, я мог бы экспортировать ключ со старого ноутбука и импортировать его на новый. Мне нужно найти способ скопировать данные с laptop1 на laptop2.

решение1

Согласно графическому интерфейсу OpenVPNисходный код, сохраненные пароли хранятся в реестре в разделе 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

У меня та же проблема после миграции с Windows 10 с корпоративной конфигурацией OpenVPN на Windows 11 на рабочем месте. Скрипты в этой теме мне не помогли. И я сделал свой собственный. Может быть, это поможет кому-то еще... Просто замените путь реестра в Get-ItemPropertyValue на ваш сохраненный путь и запустите этот скрипт в окне PowerShell... Работает в 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

Связанный контент