Czy jest jakiś sposób, aby wyodrębnić dane uwierzytelniające zapisane przez TortoiseSVN?
źródło
Czy jest jakiś sposób, aby wyodrębnić dane uwierzytelniające zapisane przez TortoiseSVN?
Krótka odpowiedź: Możesz użyć narzędzia TortoiseSVN Password Decrypter, aby łatwo wyświetlić swoje dane uwierzytelniające z pamięci podręcznej, w tym hasła.
Długa odpowiedź: tak działa to narzędzie.
Poświadczenia są zapisywane w podkatalogach %APPDATA%\Subversion\auth\
. Wymienione z tej poprzedniej odpowiedzi są to:
svn.simple
zawiera dane uwierzytelniające do podstawowego uwierzytelnienia (nazwa użytkownika / hasło)svn.ssl.server
zawiera certyfikaty serwera SSLsvn.username
zawiera dane uwierzytelniające do uwierzytelniania tylko nazwy użytkownika (hasło nie jest potrzebne)Pierwszy katalog jest tym, który nas interesuje. Wygląda na to, że zawiera pliki o nazwach, które wyglądają jak identyfikatory GUID; po jednym dla każdego repozytorium, dla którego zapisałeś poświadczenia.
Hasła w tych plikach są szyfrowane przez interfejs API ochrony danych systemu Windows . Powyższe narzędzie wykorzystuje przykładowy kod z Obviex do połączenia się z tym interfejsem API i wykonania deszyfrowania.
Aby to działało, musisz mieć dostęp do tego samego konta użytkownika Windows, na którym byłeś uruchomiony, gdy zaznaczyłeś pole wyboru „Zapisz uwierzytelnianie”. Dzieje się tak, ponieważ interfejs API ochrony danych systemu Windows używa klucza szyfrowania, który jest powiązany z kontem systemu Windows. Jeśli stracisz to konto (lub, jak sądzę, jeśli administrator zresetuje twoje hasło), nie będziesz już w stanie odszyfrować haseł (z wyjątkiem być może za pomocą brutalnej siły / narzędzia innej firmy ). Posiadanie nowego konta Windows z tą samą nazwą użytkownika / hasłem (lub prawdopodobnie nawet identyfikatorem SID) nie jest wystarczające.
Na podstawie poniższych informacji wygląda na to, że możesz je odszyfrować lokalnie w jakiś sposób ...
AKTUALIZACJA: Ostateczna odpowiedź od społeczności TortiseSVN
Kiedy są przesyłane przez sieć zaszyfrowaną, są szyfrowane przy użyciu uzgadniania i / lub klucza uzgodnionego w momencie połączenia.
Gdy są przechowywane / odczytywane lokalnie, są szyfrowane / odszyfrowywane za pośrednictwem interfejsu Windows Crypto API, który używa klucza powiązanego z kontem Windows.
Kopia zaszyfrowana lokalnie nie może zostać odszyfrowana przez serwer, ponieważ klucze są lokalne dla Twojego konta.
Więc kiedy się łączysz (powiedzmy przez HTTPS), twój klient otrzymuje dane uwierzytelniające odszyfrowane przez odpowiedni Windows API, a następnie dołącza je do transmisji HTTPS. HTTPS szyfruje całą komunikację między klientem a serwerem za pomocą certyfikatów SSL, a nie tylko poświadczeń.