Извлечь сохраненный пароль TortoiseSVN

Ответы:

226

Краткий ответ: вы можете использовать TortoiseSVN Password Decrypter, чтобы легко отображать кэшированные учетные данные, включая пароли.

Длинный ответ: вот как работает инструмент.

Учетные данные сохраняются в подкаталогах %APPDATA%\Subversion\auth\. Перечисленные из этого предыдущего ответа, они:

  • svn.simple содержит учетные данные для базовой аутентификации (имя пользователя / пароль)
  • svn.ssl.server содержит сертификаты сервера SSL
  • svn.username содержит учетные данные для аутентификации только по имени пользователя (пароль не требуется)

Первый каталог представляет интерес. Похоже, что он содержит файлы с именами, похожими на GUID; по одному для каждого репозитория, для которого вы сохранили учетные данные.

Пароли в этих файлах зашифрованы Windows Data Protection API . Приведенный выше инструмент использует образец кода от Obviex для взаимодействия с этим API и выполнения дешифрования.

Для того, чтобы он работал, у вас должен быть доступ к той же учетной записи пользователя Windows, под которой вы работали, когда вы установили флажок «Сохранить аутентификацию». Это связано с тем, что API защиты данных Windows использует ключ шифрования, привязанный к вашей учетной записи Windows. Если вы потеряете эту учетную запись (или, я полагаю, если администратор сбросит ваш пароль), вы больше не сможете расшифровать пароли (за исключением, возможно , использования грубой силы / стороннего инструмента ). Недостаточно иметь новую учетную запись Windows с тем же именем пользователя и паролем (или, возможно, даже SID).

rkagerer
источник
8

Судя по приведенной ниже информации, вы можете каким-то образом расшифровать их локально ...

ОБНОВЛЕНИЕ: окончательный ответ от сообщества TortiseSVN

Когда они отправляются по сети в зашифрованном виде, они зашифровываются с использованием рукопожатия и / или согласованного ключа во время соединения.

Когда они хранятся / читаются локально, они зашифровываются / дешифруются через Windows Crypto API, который использует ключ, привязанный к вашей учетной записи Windows.

Локально зашифрованная копия не может быть расшифрована сервером, поскольку ключи являются локальными для вашей учетной записи.

Поэтому, когда вы подключаетесь (скажем, через HTTPS), ваш клиент получает учетные данные, дешифрованные через соответствующий Windows API, а затем включает их в передачу HTTPS. HTTPS шифрует всю связь между клиентом и сервером с использованием сертификатов SSL, а не только учетные данные.

Аарон МакИвер
источник
вы уверены, что пароль не расшифровывается на стороне клиента?
Jus12 07
Совершенно определенно ... не задавая явного вопроса людям TortiseSVN, вот что я нашел ... tortoisesvn.net/docs/release/TortoiseSVN_en/ ... Кроме того, если он был расшифрован на стороне клиента, а затем передан обычным текстом в сервер это победит цель. Думаю, вы могли бы отправить его по SSH.
Аарон МакИвер
но в этом случае любой может отправить зашифрованный текст на сервер, а tortoiseSVN не обеспечивает дополнительной защиты с помощью шифрования.
Jus12 07
Верно, поэтому они сообщают об удалении данных аутентификации с вашего ПК при выключении или, по крайней мере, периодически, если это вызывает беспокойство. Если компьютер, на котором хранятся данные аутентификации, был скомпрометирован, то это не проблема TotoriseSVN как таковая.
Аарон МакИвер
Спасибо за работу. Я надеялся, что для этого уже есть инструмент.
Jus12