Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z logowanie do gg
Forum PHP.pl > Forum > PHP
rastafari
Siemka, w oparciu o http://libgadu.net/protocol/ chciałem napisać własną blibliotekę gg , ale coś nie trybi, nie chce się zalogować. Kod:

  1. <?php
  2.  
  3. class GG {
  4. const P_LOGIN80 = 0x0031;
  5. const P_HEADER_L = 8; // DLUGOSC HEADERA PAKIETU
  6.  
  7. const GG_VERSION = 'Gadu-Gadu Client build 10.0.0.10450';
  8.  
  9. function __construct($NUMER, $HASLO) {
  10. // ZAPISUJEMY NUMER I HASLO
  11. $this->NUMER = $NUMER;
  12. $this->HASLO = $HASLO;
  13.  
  14. // POBIERANIE ADRESU I PORTU SERWERA GG
  15. $odpowiedz = file_get_contents('http://appmsg.gadu-gadu.pl/appsvc/appmsg.asp?fmnumber='.$this->NUMER.'&version=8.0.0.7669');
  16. preg_match('/\s([^\s]*?):(.*?)\s/', $odpowiedz, $wynik);
  17. $this->ADRES = $wynik[1];
  18. $this->PORT = $wynik[2];
  19. }
  20.  
  21. private function PobierzPakiet() {
  22. $odpowiedz = fread($this->POLACZENIE, self::P_HEADER_L);
  23.  
  24. $wynik_headera = unpack('Vtyp/Vrozmiar', $odpowiedz);
  25.  
  26. $wynik_docelowy = fread($this->POLACZENIE, $wynik_headera['rozmiar']);
  27.  
  28. return $wynik_docelowy;
  29. }
  30.  
  31. private function WyslijPakiet($id, $pakiet) {
  32. $DlugoscPakietu = strlen($pakiet);
  33. $OstatecznyPakiet = pack('VVa'.$DlugoscPakietu, $id, $DlugoscPakietu, $pakiet);
  34. fwrite($this->POLACZENIE, $OstatecznyPakiet);
  35. }
  36.  
  37. function ZakodujHaslo2($haslo, $klucz)
  38. {
  39. $x0=0;
  40. $x1=0;
  41. $y0=0;
  42. $y1=0;
  43. $z=0;
  44. $tmp=0;
  45. $y0 = ($klucz << 16) >> 16;
  46. $y1 = $klucz >> 16 ;
  47.  
  48. for ($i=0; $i<strlen($haslo); $i++)
  49. {
  50. $x0 = ($x0 & 0xFF00) | ord($haslo[$i]); $x1 &= 0xFFFF;
  51. $y0 ^= $x0; $y1 ^= $x1;
  52. $y0 += $x0; $y1 += $x1;
  53. $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
  54. $y0 ^= $x0; $y1 ^= $x1;
  55. $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
  56. $y0 -= $x0; $y1 -= $x1;
  57. $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
  58. $y0 ^= $x0; $y1 ^= $x1;
  59. $z = $y0 & 0x1F;
  60.  
  61. $y0 &= 0xFFFF; $y1 &= 0xFFFF;
  62. if ( $z <= 16 )
  63. {
  64. $tmp= ($y1 << $z) | ($y0 >> (16-$z));
  65. $y0 = ($y1 >> (16-$z)) | ($y0 << $z);
  66. $y1 = $tmp;
  67. }
  68. else
  69. {
  70. $tmp= $y0 << ($z-16);
  71. $y0 = ($y0 >> (32-$z)) | ( (($y1 << $z) >> $z) << ($z-16) );
  72. $y1 = ($y1 >> (32-$z)) | $tmp;
  73. }
  74. $y0 &= 0xFFFF; $y1 &= 0xFFFF;
  75. }
  76.  
  77. $hash = hexdec(sprintf("%04x%04x", $y1, $y0));
  78. settype($hash, 'integer');
  79.  
  80. return $hash;
  81. }
  82.  
  83. public function Loguj() {
  84. // LACZYMY SIE Z SERWEREM GG
  85.  
  86. $this->POLACZENIE = fsockopen($this->ADRES, $this->PORT);
  87. stream_set_timeout($this->POLACZENIE, 5);
  88.  
  89. $odpowiedz = $this->PobierzPakiet();
  90. $ziarno = unpack('Vziarno', $odpowiedz);
  91.  
  92. $ZakodowaneHaslo = $this->ZakodujHaslo2($this->HASLO, $ziarno['ziarno']);
  93.  
  94. $pakiet = pack('Va2ca64VVVVvVvccVa23V',
  95. $this->NUMER,
  96. 'pl',
  97. 0x01,
  98. $ZakodowaneHaslo,
  99. 0x0002,
  100. 0,
  101. 0x00000007,
  102. 0,
  103. 0,
  104. 0,
  105. 0,
  106. 100,
  107. 0x64,
  108. 0x23,
  109. 'Gadu-Gadu Client build 10.0.0.10450',
  110. 0
  111. );
  112.  
  113. $this->WyslijPakiet(self::P_LOGIN80, $pakiet);
  114.  
  115.  
  116. $wiad = 'czesc';
  117. $this->WyslijPakiet(0x002d, pack('VVVVVa'.strlen($wiad).'cc', 895868, time(), 0x0008, 20, 20+strlen($wiad), $wiad, 0, 0));
  118. sleep(4);
  119. }
  120.  
  121. }


Pomoże ktoś bardziej ogarnięty?
Wazniak96
Ta biblioteka juz dawno nie działa... Lepiej przestań się bawić w jakieś kombinacje i po prostu skorzystaj z BotApi Gg i będzie śmigało wszystko bez problemów działało smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.