TortoiseSVNによって保存された資格情報を抽出する方法はありますか?
簡単な答え:TortoiseSVN Password Decrypterを使用して、パスワードなどのキャッシュされた資格情報を簡単に表示できます。
長い答え:ツールの仕組みは次のとおりです。
資格情報は、%APPDATA%\Subversion\auth\
のサブディレクトリに保存されます。 この前の回答 からリストされています:
svn.simple
には、基本認証の資格情報(ユーザー名/パスワード)が含まれますsvn.ssl.server
にはSSLサーバー証明書が含まれますsvn.username
には、ユーザー名のみの認証の資格情報が含まれます(パスワードは不要です)最初のディレクトリが対象です。 GUIDのような名前のファイルが含まれているようです。資格情報を保存したリポジトリごとに1つ。
これらのファイルのパスワードは Windows Data Protection API によって暗号化されます。上記のツールは、 Obviex のサンプルコードを使用して、このAPIとやり取りし、復号化を実行します。
それが機能するためには、「認証を保存する」チェックボックスにチェックマークを付けたときに実行していた同じWindowsユーザーアカウントにアクセスできる必要があります。これは、Windows Data Protection APIがWindowsアカウントに関連付けられている暗号化キーを使用するためです。このアカウントを紛失した場合(または、管理者がパスワードをリセットした場合)、ブルートフォース/ aを使用してパスワードを復号化することはできません(おそらくを除く) サードパーティ製ツール )。同じユーザー名/パスワード(またはSIDでさえ)を持つ新しいWindowsアカウントを持つだけでは十分ではありません。
以下の情報に基づいて、何らかの方法でローカルで復号化できる可能性があるようです...
PDATE: TortiseSVNコミュニティからの決定的な答え
暗号化された回線を介して送信される場合、接続時にハンドシェイクや合意済みのキーを使用して暗号化されます。
ローカルに保存/読み取りされると、Windowsアカウントに関連付けられたキーを使用するWindows Crypto APIを介して暗号化/復号化されます。
キーはアカウントのローカルにあるため、ローカルで暗号化されたコピーはサーバーで復号化できません。
そのため、接続すると(たとえばHTTPSを介して)、クライアントは適切なWindows APIを介して復号化された資格情報を取得し、HTTPS送信に含めます。 HTTPSは、資格情報だけでなくSSL証明書を使用して、クライアントとサーバー間のwhole通信を暗号化します。