Jaki jest algorytm hashowania w GG v6.0
Adam Boduch
Oto kod, który został podany przez użytkownika Piechnata hashujący hasło w popularnym komunikatorze Gadu-Gadu. Taka funkcja jest potrzebna aby połączyć się z serwerem GG.
function GGLoginHash(Pass: string; Seed: Cardinal): Cardinal;
var
x, y, z, i : Cardinal;
begin
y := Seed;
x := 0;
for i := 1 to Length(Pass) do begin
x := (x and $ffffff00) or Ord(Pass[i]);
y := y xor x;
Inc(y, x);
x := x shl 8;
y := y xor x;
x := x shl 8;
Dec(y, x);
x := x shl 8;
y := y xor x;
z := y and $1f;
y := (y shl z) or (y shr (32 - z));
end;
Result := y;
end;
w tym samym pakiecie jest - 4 bajty = 0x001 potem 4 bajty zawierające długość pakietu (0x004) następne 4 bajty to seed
0x001
0x004
0x??? <-- seed
ogólnie odbierz pakiet długości 12 bajtów
ja niestety nie rozumiem skad wziac zmienna seed, lacze sie z serwerem gg na porcie 8074, otrzymuje pakiet 0x0001, potem powinienem dotac Seed a tu nic, lacze sie przez TClientSocket
A jak sie dobiera Seed, zeby porownac text zakodowany wczesniej z kodowanym teraz?
komponent można ściągnąć tutaj:
http://szymekns.republika.pl/gg/TGaduGadu.zip
Następnym razem troszeczke poszukajcie zanim zadacie pytanie "skąd to można pobrać?"
TGaduGadu albo TGGLite- skąd go wziąć???
To jak nie wiesz jak można go wykorzystać to raczej Ci się nie przyda...
a skąd to wźiąć(TGaduGadu) ?? tak <ort>wogóle</ort> to jak można ten algorytm <ort>wykorzuystać</ort>??
:P
Jesli ktoś jest leniwy to polecam TGaduGadu albo TGGLite.