Witam
Wyszlo pare dni temu GG w wersji 11 i z ciekawosci chcialem rozkminic kodowanie hasla do serwera.
Z tego co zauwazylem to silnik jest oparty na Mozilli (SeaMonk!?). Jednakze hasla jak to ma miejsce w Firefox czy Thunderbird, hasla sa zapisane w pliku signons.sqlite + key3db itd... W przypadku GG 11 haslo zapisywane jest w pliki pref.js :
user_pref("gg.MainWindowloginPswd", "Lw==");
haslo to literka "a"
Z tego co zauwazylem to na kazdym komputerze zakodowane ciąg w base64 jest inny, wiec zalezy od jakiegos indywidualnego klucza (poprzednio jednym z elementów był to numer seryjny partycji). Ponadto z obserwacji ciąg po odkodowaniu base64 ma taka dlugość jaka jest długość hasła oraz generując ciąg np: dla słowa "aaaaaa" dla każdej z liter wartość jest inna (po odkodowaniu base64) np: 2F C2 0E 1E E8 30 , ale zmieniając słowo na np: "asa" - 2F D0 0E. Wynika z tego z można stworzyć tablice dla danego komputera np: zmieniając hasła z "aaaaaaaaaaaaa" , potem "bbbbbbbbbb" itd. bo dla roznego hasla, jesli litera wystepuje pod dana pozycja to jej wartość hex jest wciąż ta sama.
Próbowałem złapać w Olly DBG moment odczytu ciągu z pliku ale niestety bez skutku - gdyż po odpaleniu ggapp.exe, moge wykonac tylko pare "step" (F8) i już odpala jestem zalogowany, więc nie potrwaie wyłapać momentu odczytu pliku i funkcji dekodującej.
Mogłby ktoś pomóc w tej kwesti ? bo nie wiem czy to jest poprostu ciąg wysylany do serwera i tam odkodowywany czy aplikacja dekoduje hash i wysyla w plain-text do serwera.
Zastanawia mnie obecność pliku enc.key, w ktorym to jets zawarty jakiś hash (uj wi czy to base64 czy coś innego).
Z gory dziekuje za odpowiedź