Programowanie w języku Delphi » FAQ

Jaki jest algorytm hashowania w GG v6.0

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; 

8 komentarzy

Kooba 2006-12-04 13:29

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

mcm 2006-03-20 00:53

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

wasyl 2004-04-01 19:05

A jak sie dobiera Seed, zeby porownac text zakodowany wczesniej z kodowanym teraz?

musio 2004-01-19 20:13

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ć?"

qas 2003-12-08 17:27

TGaduGadu albo TGGLite- skąd go wziąć???

Marooned 2003-10-19 14:48

To jak nie wiesz jak można go wykorzystać to raczej Ci się nie przyda...

Waldi__17 2003-10-18 21:35

a skąd to wźiąć(TGaduGadu) ??  tak <ort>wogóle</ort> to jak można ten algorytm <ort>wykorzuystać</ort>??

Szymek 2003-10-18 19:56

:P
Jesli ktoś jest leniwy to polecam TGaduGadu albo TGGLite.