Apakah ada cara untuk mengekstrak kredensial yang disimpan oleh TortoiseSVN?
sumber
Apakah ada cara untuk mengekstrak kredensial yang disimpan oleh TortoiseSVN?
Jawaban singkat: Anda bisa menggunakan TortoiseSVN Password Decrypter untuk dengan mudah menampilkan kredensial cache Anda, termasuk kata sandi.
Jawaban panjang: Begini cara kerja alat ini.
Kredensial disimpan dalam subdirektori dari %APPDATA%\Subversion\auth\
. Dari jawaban sebelumnya ini mereka adalah:
svn.simple
berisi kredensial untuk otentikasi dasar (nama pengguna / kata sandi)svn.ssl.server
berisi sertifikat server SSLsvn.username
berisi kredensial untuk otentikasi hanya nama pengguna (tidak diperlukan kata sandi)Direktori pertama adalah salah satu yang menarik. Tampaknya berisi file dengan nama yang terlihat seperti GUID; satu untuk setiap repositori yang kredensial Anda simpan.
Kata sandi dalam file ini dienkripsi oleh API Perlindungan Data Windows . Alat di atas menggunakan kode contoh dari Obviex untuk berinteraksi dengan API ini dan melakukan dekripsi.
Agar dapat berfungsi, Anda harus memiliki akses ke akun pengguna Windows yang sama dengan yang Anda gunakan saat Anda mencentang kotak "Simpan otentikasi". Ini karena API Perlindungan Data Windows menggunakan kunci enkripsi yang terkait dengan akun Windows Anda. Jika Anda kehilangan akun ini (atau, saya yakin, jika administrator menyetel ulang kata sandi Anda) maka Anda tidak akan lagi dapat mendekripsi kata sandi (kecuali mungkin dengan menggunakan brute force / alat pihak ketiga ). Memiliki akun Windows baru dengan nama pengguna / kata sandi yang sama (atau mungkin bahkan SID) tidak cukup.
Berdasarkan info di bawah, sepertinya Anda dapat mendekripsi mereka secara lokal dengan cara tertentu ...
UPDATE: Jawaban pasti dari komunitas TortiseSVN
Ketika dikirim melalui kabel yang dienkripsi, mereka dienkripsi menggunakan jabat tangan dan / atau kunci yang disepakati pada saat koneksi.
Ketika disimpan / dibaca secara lokal, mereka dienkripsi / didekripsi melalui Windows Crypto API yang menggunakan kunci yang terkait dengan akun Windows Anda.
Salinan yang dienkripsi secara lokal tidak dapat didekripsi oleh server karena kuncinya bersifat lokal ke akun Anda.
Jadi ketika Anda terhubung (katakanlah melalui HTTPS), klien Anda mendapatkan kredensial yang didekripsi melalui API Windows yang sesuai, lalu memasukkannya ke dalam transmisi HTTPS. HTTPS mengenkripsi seluruh komunikasi antara klien & server menggunakan sertifikat SSL, bukan hanya kredensial.