21 lutego 2013

Obsługa bramki SMS Orange w.. C++

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. 

3 komentarze:

  1. Sugerowałbym używanie sizeof lub #define aby uniknąć podobnych błędów w przyszłości:
    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:)

    OdpowiedzUsuń
    Odpowiedzi
    1. Ło. Miło, że ktoś jednak looknął w kod :) Dzięki wielkie.

      Usuń