Ostatnio postanowiłem się pobawić nieco socketami i obsługą protokołu HTTP. Przeglądarki własnej pisać nie będę (przynajmniej nie w przeciągu najbliższych kilku dni), chciałem jednak nieco podglądnąć jak wygląda komunikacja serwerem a klientem z wykorzystaniem HTTP. Tak oto powstał ten niewielki programik. Możemy za jego pomocą wysłać SMSa na dowolny numer w Orange (jeśli jego właściciel aktywował możliwość otrzymywania wiadomości z internetu). Nie jest tu potrzebna znajomość obsługi web-service'ów czy innych baz danych. Po prostu, ściągamy stronkę gdzie znajduje się obrazek CAPTCHA, wpisujemy jego zawartość i wysyłamy odpowiednio spreparowane zapytanie metodą POST. Nie odbyło się bez zabawy w "reverse engineering" - na początek trzeba podglądnąć jakie informacje wysyła przeglądarka internetowa.
Program miał być miał i lekki, dlatego GUI pisane w czystym WinApi (o zgrozo!). Cała część "internetowa" znajduje się w plikach HTTPDriver oraz HTMLParser. Cały chaos związany z interfejsem użytkownika, znajduje się w pliku main.cpp.
Oczywiście brakuje kilka podstawowych ficzerów - mieszkanie w tray'u oraz książka adresowa. To może jednak, innym razem.
Wszelakie uwagi mile widziane.
Sugerowałbym używanie sizeof lub #define aby uniknąć podobnych błędów w przyszłości:
OdpowiedzUsuń1. Deklaracja
static char f_szAuthorName[18];
static char f_szPhoneNumber[10];
2. Użycie
GetWindowText(f_hAuthorInput, f_szAuthorName, 512);
GetWindowText(f_hPhoneNumberInput, f_szPhoneNumber, 512);
...i buffer overflow gotowy:)
Ło. Miło, że ktoś jednak looknął w kod :) Dzięki wielkie.
UsuńMuszę dbać o morale...
OdpowiedzUsuń