Jakub 'darkjames' Zawadzki napisał(a):
> +struct gg_login70 {
> +     uint32_t uin;                   /* mój numerek [gg_login60] */
> +     uint8_t dunno0;                 /* 02 */
> +     unsigned char hash[20];         /* sha1 [haslo i seed] */
> +     unsigned char empty[44];        /* ??? duzo 00 ??? */

Pokombinowałem, pohakowałem libgadu i już wiem, że to wygląda tak:

  struct gg_login70 {
        uint32_t uin;
        uint8_t hash_type;
        uint8_t hash[64];
        /* ... */
  } GG_PACKED;

Nieznana zmienna określa rodzaj hasha. 0x01 to dotychczasowy, 32-bitowy
hash, 0x02 to SHA-1. Pakiet od razu zawiera miejsce na większe hashe
(SHA-512?), stąd duża liczba zer. Jeśli poda się inny rodzaj hasha niż
0x01 i 0x02, serwer zwraca pakiet typu 0x16. Możliwe, że to informacja o
tym, że dana metoda hashowania jest niedostępna i należy spróbować
starszej, bo np. z powodów ,,technicznych'' zrezygnowano z nowego,
64-krotnego hashowania SHA-512, dla pewności poczwórnie szyfrowanego za
pomocą RSA z 2048-bitowym kluczem.

I tak właściwie to jestem zdania, że jeśli mamy obsługiwać nowy sposób
logowania to od razu domyślnie. Gadu-Gadu jeszcze nigdy się nie wycofało
z nowości w protokole, nie licząc SSL/TLS z wersji beta.

w.

_______________________________________________
libgadu-devel mailing list
[email protected]
http://lists.ziew.org/mailman/listinfo/libgadu-devel

Reply via email to