Есть ли способ извлечь учетные данные, сохраненные TortoiseSVN?
Есть ли способ извлечь учетные данные, сохраненные TortoiseSVN?
Краткий ответ: вы можете использовать TortoiseSVN Password Decrypter, чтобы легко отображать кэшированные учетные данные, включая пароли.
Длинный ответ: вот как работает инструмент.
Учетные данные сохраняются в подкаталогах %APPDATA%\Subversion\auth\
. Перечисленные из этого предыдущего ответа, они:
svn.simple
содержит учетные данные для базовой аутентификации (имя пользователя / пароль)svn.ssl.server
содержит сертификаты сервера SSLsvn.username
содержит учетные данные для аутентификации только по имени пользователя (пароль не требуется)Первый каталог представляет интерес. Похоже, что он содержит файлы с именами, похожими на GUID; по одному для каждого репозитория, для которого вы сохранили учетные данные.
Пароли в этих файлах зашифрованы Windows Data Protection API . Приведенный выше инструмент использует образец кода от Obviex для взаимодействия с этим API и выполнения дешифрования.
Для того, чтобы он работал, у вас должен быть доступ к той же учетной записи пользователя Windows, под которой вы работали, когда вы установили флажок «Сохранить аутентификацию». Это связано с тем, что API защиты данных Windows использует ключ шифрования, привязанный к вашей учетной записи Windows. Если вы потеряете эту учетную запись (или, я полагаю, если администратор сбросит ваш пароль), вы больше не сможете расшифровать пароли (за исключением, возможно , использования грубой силы / стороннего инструмента ). Недостаточно иметь новую учетную запись Windows с тем же именем пользователя и паролем (или, возможно, даже SID).
Судя по приведенной ниже информации, вы можете каким-то образом расшифровать их локально ...
ОБНОВЛЕНИЕ: окончательный ответ от сообщества TortiseSVN
Когда они отправляются по сети в зашифрованном виде, они зашифровываются с использованием рукопожатия и / или согласованного ключа во время соединения.
Когда они хранятся / читаются локально, они зашифровываются / дешифруются через Windows Crypto API, который использует ключ, привязанный к вашей учетной записи Windows.
Локально зашифрованная копия не может быть расшифрована сервером, поскольку ключи являются локальными для вашей учетной записи.
Поэтому, когда вы подключаетесь (скажем, через HTTPS), ваш клиент получает учетные данные, дешифрованные через соответствующий Windows API, а затем включает их в передачу HTTPS. HTTPS шифрует всю связь между клиентом и сервером с использованием сертификатов SSL, а не только учетные данные.