web-dev-qa-db-ja.com

TortoiseSVNの保存パスワードを抽出する

TortoiseSVNによって保存された資格情報を抽出する方法はありますか?

120
Jus12

簡単な答え: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アカウントを持つだけでは十分ではありません。

221
rkagerer

以下の情報に基づいて、何らかの方法でローカルで復号化できる可能性があるようです...

PDATE: TortiseSVNコミュニティからの決定的な答え

暗号化された回線を介して送信される場合、接続時にハンドシェイクや合意済みのキーを使用して暗号化されます。

ローカルに保存/読み取りされると、Windowsアカウントに関連付けられたキーを使用するWindows Crypto APIを介して暗号化/復号化されます。

キーはアカウントのローカルにあるため、ローカルで暗号化されたコピーはサーバーで復号化できません。

そのため、接続すると(たとえばHTTPSを介して)、クライアントは適切なWindows APIを介して復号化された資格情報を取得し、HTTPS送信に含めます。 HTTPSは、資格情報だけでなくSSL証明書を使用して、クライアントとサーバー間のwhole通信を暗号化します。

8
Aaron McIver