Tomasz Wasilczyk

programista

libgadu

strona: libgadu.net

Otwarta biblioteka do obsługi protokołu Gadu-Gadu. Odkrywam nowe wersje protokołu i implementuję jego kolejne funkcje.

  • C
  • Linuks
  • inżynieria wsteczna
  • Windows

Stan bieżący

Jestem jedną z osób opiekujących się projektem od dnia 2013-09-19, uczestnicząc w jego rozwoju od 2011-10-10. Zacząłem pracować nad tą biblioteką, aby dostarczyć komunikatorowi Pidgin różne poprawki obsługi protokołu Gadu-Gadu.

Protokół GG11

Gadu-Gadu, wraz z wydaniem wersji 11 swojego komunikatora, znacząco zmienił jego protokół. Stara wersja wciąż działała, ale nie pozwalała na obsługę nowych usług (takich jak nowa metoda transferu plików, którą obiecałem zaimplementować podczas Google Summer of Code 2012).

Trudność polegała na tym, że nie było możliwości podsłuchania komunikacji między programem a serwerem, jak to było możlwe w przypadku poprzednich wersji. Na szczęście, udało mi się go mimo to odkryć i zaimplementować w libgadu. Okazało się, że GG11 było jednym z największych przełomów w konstrukcji protokołu.

Wersja dla Windows

Do tej pory biblioteka nie wspierała systemu Windows, więc libpurple posiadało własną wersję libgadu zaszytą w swoim kodzie źródłowym. Taka metoda używania zewnętrznych bibliotek powoduje dużo problemów, więc zacząłem pracować nad wsparciem dla Windowsa w głównym wydaniu. We współpracy z programistami komunikatora Kadu, udało nam się przygotować działającą wersję dla tego systemu.

Wtyczka analizująca dla Wiresharka

Przy pracy nad protokołem GG11, napisałem wtyczkę analizującą pakiety dla narzędzia Wireshark (udostępniona na GitHub). Niestety, po napisaniu większości kodu okazało się, że GG11 jest oparty na formacie Protocol Buffers od Google. To upraszcza wiele rzeczy, ale również oznacza, że trzeba przepisać całą wtyczkę od nowa. Kiedyś to zrobię.