W programie Gadu-Gadu mamy doczynienia z dwoma rodzajami haseł. Pierwsze z nich to hasło do profilu na serwerze, a drugie zabezpiecza przed wejściem osób niepowołanych, korzystających z tego samego komputera co ty, do twojego konta które jest "zdefiniowane" na dysku twardym.
Jeżeli chodzi o hasło pierwsze (do serwera), to użytkownik konta GG wybiera, czy hasło to ma być zapisane (oczywiście w formie zaszyfrowanej) na komputerze, czy musi je wpisywać każdorazowo podczas logowania się na swoje konto. Większość osób które znam wybiera zapisywanie (jak na razie spotkałem tylko jednego gościa, który wybrał opcje drugą). Drugie hasło natomiast nie jest obowiązkowe, jednakże daje jakieś poczucie bezpieczeństwa (jak się za chwile okaże bardzo nieuzasadnione) i zawsze jest zapisywane na dysku twardym.
Dobra, do rzeczy. Zacznijmy od hasła pierwszego. O ile jest ono zapisane na dysku, znajduje się w pliku "C:\Documents and Settings\%Profil%\Gadu-Gadu\%ProfilGG%\config.dat" (XP), gdzie %Profil% to nazwa użytkownika komputera, a %ProfilGG% to nazwa użytkownika GG. Aby rozszyfrować to hasło wystarczy nam notatnik (NOTEPAD.EXE)!!! Otwieramy wyżej opisany plik za pomocą tegoż notatnika i odnajdujemy ciąg znaków "Password2". Po dwóch kolejnych bajtach tego pliku znajduje się już zakodowane hasło (po dwóch kolejnych bajtach oznacza tyle co po dwóch kolejnych znakach, u mnie te dwa znaki wyglądają jak spacja i prostokąt). Hasło jest w postaci ciągu dużych liter od A do P włącznie. Każde z dwóch kolejnych liter tworzą jedną literę prawdziwego hasła. Zanim przejdę do algorytmu opisującego dekodowanie hasła przedstawie dwie tabelki:
Pierwsza litera Wartość
A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7
I 8
J 9
K 10
L 11
M 12
N 13
O 14
P 15
Druga litera Wartość
A 0
B 16
C 32
D 48
E 64
F 80
G 96
H 112
I 128
J 144
K 160
L 176
M 192
N 208
O 224
P 240
Oki, a teraz finał. Jak już mówiłem każda litera prawdziwego hasła jest zapisana jako dwie inne litery (od A do P). Sumując wartości tych liter wychodzi nam kod ascii prawdziwej litery hasła. Najprostszym sposobem na zamiane kody ascii na odpowiadający mu znak, jest otworzenie notatnika, wciśnięcie klawisza NumLock (chyba że lampka Num Lock już się świeci), wciśnięcie i przytrzymanie lewego klawisza "Alt", wypisanie na klawiaturze alfanumerycznej (tej po prawej stronie z cyferkami) kodu ascii i puszczenie klawisza Alt. Korzystając z dwóch powyższych tabelek spróbujemy rozszyfrować przykładowe hasło:
Przykładowe hasło do serwera:
Password2 FECHCHPGCHFD
1. Owórz notatnik
2. Podziel zaszyfrowane hasło na ciągi po dwie litery: FE CH CH PG CH FD
3. Pierwszy znak hasła ma kod: 5 (F) + 64 (E) = 69 (FE)
Drugi znak hasła ma kod: 2 © + 112 (H) = 114 (CH)
Trzeci znak hasła ma kod: 2 © + 112 (H) = 114 (CH)
Czwarty znak hasła ma kod: 15 (P) + 96 (G) = 111 (PG)
Piąty znak hasła ma kod: 2 © + 112 (H) = 114 (CH)
Pierwsza litera hasła ma kod: 5 (F) + 48 (D) = 53 (FD)
4. Wciśnij lub nie (tak aby lampka Num Lock się świeciła) klawisz "Num Lock".
5. W notatniku przytrzymaj lewy alt, wpisz pierwszy kod (69) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz drugi kod (114) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz trzeci kod (114) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz czwarty kod (111) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz piąty kod (114) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz szósty kod (53) na klawiaturze alfanumerycznej i puść "alt"
I to wszystko, jęzeli dobrze wykonałeś powyższy przykład, powinien wyskoczyć ci w notatniku ciąg znaków "Error5", który w naszym przykładzie jest hasłem do serwera
.
Jak już mówiłem są dwa rodzaje haseł do GG. To bardziej popularne właśnie omówiłem, a teraz czas na to drugie - zabezpieczające przed wejściem na profil GG z jakiegoś komputera.
Hasło to jest kodowane nieco trudniejszym sposobem. Tak właściwie jedynym utrudnieniem jest fakt, że do jego rozkodowania, potrzebny nam jest jakiś edytor szesnastkowy (Polecam "Hex Workshop"). A więc tym edytorem szesnastkowym otwieramy ten sam plik co ostatnio i szukamy ciągu "70 72 6F 66 69 6C 65 00 68 61 73 70 61 73 73 77 6F 72 64 00 01 01" (są to kody ascii w zapisie szesnastkowym ciągu "profile haspassword" i trzy bajty dodatkowe). Jeżeli taki ciąg się znajduje w pliku (dokładnie taki sam!!!), to znaczy że dany profil jest zabezpieczony omawianym hasłem.
Hasło to znajduje się w formie zakodowanej po ciągu bajtów "70 61 73 73 77 6F 72 64 73 74 72 00 02" i przed bajtem oznaczonym jako 00. Algorytm kodowania każdej litery jest taki:
1. Wylicz: 255 - kod_ascii_danej_litery
2. Zapisz wynik do pliku
Tak więc aby hasło to rozkodować musimy z każdym bajtem wykonać kolejno następujące operacje:
1. Zamienić wartość szesnastkową bajtu na wartość dziesiętną
2. Wykonać działanie: 255 - otrzymana_wartość
3. Np w notatniku zamienić kod ascii (otrzymany wynik) na odpowiadający mu znak. (Opisałem to w części poświęconej pierwszemu hasłu, ale opisze to jeszcze raz w przykładzie).
Przykładowe hasło zabezpieczające (w postaci szesnastkowej):
70 61 73 73 77 6F 72 64 73 74 72 00 02 BA 8D 8D 90 8D CA
1. Otwórz systemowy kalkulator i z jego menu Widok wybierz opcję naukowy.
2. Po lewej stronie kalkulatora zaznacz "Hex", wpisz do kalkulatora pierwszy bajt (BA), po lewej stronie kalkulatora zaznacz "Dec". Powinno wyjść 186. Wykonaj: 255 - otrzymany_wynik (255 - 186). Powinno wyjść 69.
Po lewej stronie kalkulatora zaznacz "Hex", wpisz do kalkulatora drugi bajt (8D), po lewej stronie kalkulatora zaznacz "Dec". Powinno wyjść 141. Wykonaj: 255 - otrzymany_wynik (255 - 141). Powinno wyjść 114.
Po lewej stronie kalkulatora zaznacz "Hex", wpisz do kalkulatora trzeci bajt (8D), po lewej stronie kalkulatora zaznacz "Dec". Powinno wyjść 141. Wykonaj: 255 - otrzymany_wynik (255 - 141). Powinno wyjść 114.
Po lewej stronie kalkulatora zaznacz "Hex", wpisz do kalkulatora czwarty bajt (90), po lewej stronie kalkulatora zaznacz "Dec". Powinno wyjść 144. Wykonaj: 255 - otrzymany_wynik (255 - 144). Powinno wyjść 111.
Po lewej stronie kalkulatora zaznacz "Hex", wpisz do kalkulatora piąty bajt (8D), po lewej stronie kalkulatora zaznacz "Dec". Powinno wyjść 141. Wykonaj: 255 - otrzymany_wynik (255 - 141). Powinno wyjść 114.
Po lewej stronie kalkulatora zaznacz "Hex", wpisz do kalkulatora szósty bajt (CA), po lewej stronie kalkulatora zaznacz "Dec". Powinno wyjść 202. Wykonaj: 255 - otrzymany_wynik (255 - 202). Powinno wyjść 53.
3. Otwórz notatnik.
4. Wciśnij lub nie klawisz Num Lock (tak aby lampka Num Lock się świeciła).
5. W notatniku przytrzymaj lewy alt, wpisz pierwszy kod (69) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz drugi kod (114) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz trzeci kod (114) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz czwarty kod (111) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz piąty kod (114) na klawiaturze alfanumerycznej i puść "alt"
przytrzymaj lewy alt, wpisz szósty kod (53) na klawiaturze alfanumerycznej i puść "alt"
I znów to wszystko, powinno ci wyskoczyć "Error5", co oznacza, że hasłem znów jest ciąg Error5.