BCB6 - Klient Gadu Gadu

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez mko000 » niedziela, 17 stycznia 2010, 12:57

Z nudów postanowiłem powrócić do tego tematu jako że teraz mam Rad Studio 2009 mam problem z odczytywaniem tego co przesyła mi server. Trzeba użyć innych komponentów. Lecz TTcpClient lub TUdpSocket z zakładki internet nie odczytują nic. Co może być nie tak ? Ustawiam działające ip i port oraz zdążenie on receive (w starym komponencie było on read może to jest problemem) lecz nic nie odczytuje.
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPChrome

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez mko000 » środa, 27 stycznia 2010, 16:24

Użyłem komponentu TClientSocket i jest ok. Napisalem juz caly protokol lecz mam problem z wysylaniem wiadomosci. Mianowicie wysyla mi tylko numer i pustą treść. Kod wygląda tak :
Kod: Zaznacz cały
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
wysylanie.recipient = 5688868;
wysylanie.clas = 0x0008;
sprintf(wysylanie.plain_message,"Wiadomosc");
wysylanie.offset_plain = 0;
Client->Socket->SendBuf(&wysylanie,sizeof(wysylanie));
msglist->Lines->Add("WYSYLANIE WIADOMOSCI");

Mógłby mi ktoś pomoc?
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPChrome

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez polymorphism » środa, 27 stycznia 2010, 18:32

Czy przypadkiem offset_plain i offset_attributes nie powinny być ustawione względem początku struktury gg_send_msg80?



Kod: Zaznacz cały
sprintf(wysylanie.plain_message,"Wiadomosc");

Od tego jest strcpy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
mko000
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez mko000 » środa, 27 stycznia 2010, 20:15

Tak wygląda struktura wysyłania wiadomości.
Kod: Zaznacz cały
#define GG_SEND_MSG80 0x002d

struct gg_send_msg80 {
   int recipient;      /* numer odbiorcy */
   int seq;      /* numer sekwencyjny */
   int class;      /* klasa wiadomości */
   int offset_plain;   /* położenie treści czystym tekstem */
   int offset_attributes;   /* położenie atrybutów */
   char html_message[];   /* treść w formacie HTML (zakończona \0) */
   char plain_message[];   /* treść czystym tekstem (zakończona \0) */
   char attributes[];   /* atrybuty wiadomości */
};

A tak mam kod teraz:
Kod: Zaznacz cały
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
wysylanie.recipient = 18199693;
wysylanie.seq = 0;
wysylanie.clas = 0x0008;
wysylanie.offset_plain = 0;
wysylanie.offset_attributes = 0;
strcpy(wysylanie.plain_message,"Wiadomosc");
Client->Socket->SendBuf(&wysylanie,sizeof(wysylanie));
Dalej efekt ten sam. Przychodzi tylko numer brak wiadomości. Jak powinienem wypełnić wysyłanie.html_message jeżeli nie chcę z tego kożystać?
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPChrome

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez polymorphism » środa, 27 stycznia 2010, 21:02

Tak wygląda struktura wysyłania wiadomości.

No nie wygląda, bo masz tam:
Kod: Zaznacz cały
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
...
strcpy(wysylanie.plain_message,"Wiadomosc");


Dalej efekt ten sam.

Nie rozumiem, a dlaczego miał być inny? Nic tam nie zmieniłeś, poza strcpy, co jest zmianą raczej kosmetyczną.

Jak powinienem wypełnić wysyłanie.html_message jeżeli nie chcę z tego kożystać?

Tego nie wiem. Korzystam z tlena, a ten przedstawia się jako klient GG6, więc nie jestem w stanie tak na szybko sprawdzić snifferem, jak to powinno wyglądać. Opis też niewiele mówi. Ale spróbuj dać tam pusty string. Myślę, że kluczowe są tutaj te offsety. Ustaw je poprawnie, względem początku (oryginalnej) struktury gg_send_msg80.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
mko000
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez mko000 » środa, 27 stycznia 2010, 22:28

No nie wygląda, bo masz tam:

Faktycznie strukturę skopiowałem ze strony projektu.
Kod: Zaznacz cały
struct gg_send_msg80 {
gg_header header;
   int recipient;      // numer odbiorcy
   int seq;      // numer sekwencyjny
   int clas;      // klasa wiadomości
   int offset_plain;   // położenie treści czystym tekstem
   int offset_attributes;   // położenie atrybutów
   char html_message[0];   // treść w formacie HTML (zakończona \0)
   char plain_message[2000];   // treść czystym tekstem (zakończona \0)
   char attributes[0];   // atrybuty wiadomości

Oto jest moja struktura.

Możesz powiedzieć jak za pomocą sniffera coś sprawdzić ? Posiadam ethereal.

I co masz na myśli pisząc ustaw je poprawnie? Mój kod jest po kolei tak jak idzie struktura
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPChrome

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez polymorphism » środa, 27 stycznia 2010, 23:16

Oto jest moja struktura.

Po co wciskasz tam gg_header, przecież pokazałem Ci, jak to powinno wyglądać?

I co masz na myśli pisząc ustaw je poprawnie? Mój kod jest po kolei tak jak idzie struktura

No dobrze, tylko co ustawia? Dlaczego offset_plain i offset_attributes ustawiasz na zero? Według mnie nie jest to poprawna wartość.

Możesz powiedzieć jak za pomocą sniffera coś sprawdzić ?

A co to za filozofia? Zresztą nie posiadam ethereal, tylko jakiś darmowy sniffer.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
mko000
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez mko000 » czwartek, 28 stycznia 2010, 11:13

Strasznie zagmatwane te wysyłanie wiadomości. W protokole pisze tak:
Długość treści wiadomości nie powinna przekraczać 2000 znaków. Oryginalny klient zezwala na wysłanie do 1989 znaków. Treść w formacie HTML jest kodowana UTF-8. Treść zapisana czystym tekstem jest kodowana zestawem znaków CP1250.

Mam zakodować tekst tym CP1250 ?
Dla czystego tekstu dodawane są informacje o tym, że tekst ma kolor czarny:
Bajty Opis
0x02 Flaga formatowania tekstu
0x06 0x00 Długość bloku formatowania wynosi 6 bajtów
0x00 0x00 Atrybut tekstu od pozycji 0
0x08 Tekst kolorowy
0x00 0x00 0x00 Kolor czarny

Jak to zrozumiec? I jak uzupelnic dla czystego czarnego tekstu? Nawet w google nie mogę znaleść przykładów użycia offset_plain i offset_attributes;
Numer sekwencyjny w poprzednich wersjach protokołu był losową liczbą pozwalającą przypisać potwierdzenie do wiadomości. Obecnie jest znacznikiem czasu w postaci uniksowej (liczba sekund od 1 stycznia 1970r. UTC).

Czy to jest konieczne? (z numerem sekwencyjnym równym 0 lub równym liczbie sekund różnicy nie widac)
Po co wciskasz tam gg_header, przecież pokazałem Ci, jak to powinno wyglądać?

Tak jest mi wygodniej a problemów to raczej nie robi. Wszystko działa oprócz tego wysyłania wiadomości.
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPInternet Explorer 6

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez polymorphism » czwartek, 28 stycznia 2010, 12:51

Mam zakodować tekst tym CP1250 ?

Tak masz tam napisane. Chodzi oczywiście o tekst plain, nie html. Ale uspokoję Cię, windows w polskiej wersji językowej domyślnie działa w kodowaniu CP1250, więc nic nie musisz robić, tzn. żadnych konwersji.

Tak sobie myślę, że dla samego protokołu, sewerów itd. kwestia kodowania tekstu plain jest obojętna.

Jak to zrozumiec?

Nie wiem. Opis niewiele mi mówi, trzeba by użyć sniffera.

Nawet w google nie mogę znaleść przykładów użycia offset_plain i offset_attributes;

Offsety to raczej sprawa prosta. Tylko jest pytanie, jak są liczone, czy względem początku struktury gg_send_msg80, czy może jej końca? Znowu sniffer...

Czy to jest konieczne? (z numerem sekwencyjnym równym 0 lub równym liczbie sekund różnicy nie widac)

Może jest, może nie jest. Co za problem dać tam czas, tak jak jest to w opisie?

Tak jest mi wygodniej a problemów to raczej nie robi.

Może i tak, tylko niepotrzebnie zaciemnia obraz. Osobiście nie bawiłbym się w te struktury, tylko wszystko składałbym w jakimś strumieniu pamięciowym.

Autor zrobił zasadniczy błąd dydaktyczny, opisując protokół GG za pomocą struktur C zawierających tablice o nieokreślonym rozmiarze, bo nie dość, że nie się kompilują, to jeszcze początkujący mają z nimi poważne problemy. Znacznie sensowniej byłoby, gdyby opisał to wszystko za pomocą tabel. No ale jest jak jest i nie ma co narzekać.




p.s. może jak będę miał czas, zainstaluje GG8 i sprawdzę na snifferze jak te pakiety wyglądają.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
mko000
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez mko000 » czwartek, 28 stycznia 2010, 15:36

Próbowałem wyłapać pakiet snifferem lecz nie za bardzo umiem się nim posługiwać. O to co dostałem wysyłając wiadomość o treści "WIADOMOSC TEKSTOWA" zapewne jest to struktura odbioru i wysylania
Kod: Zaznacz cały
0000  00 1b 11 f8 34 1e 00 0f  ea 6d 87 80 08 00 45 00   ....4... .m....E.
0010  00 c5 2a c2 40 00 80 06  a5 44 c0 a8 00 96 5b c5   ..*.@... .D....[.
0020  0d 29 04 48 1f 8a 40 76  4e 3d d9 70 fc cd 50 18   .).H..@v N=.p..P.
0030  bb 9c 2a e4 00 00 2d 00  00 00 95 00 00 00 24 ce   ..*...-. ......$.
0040  56 00 46 96 61 4b 08 00  00 00 79 00 00 00 8c 00   V.F.aK.. ..y.....
0050  00 00 3c 73 70 61 6e 20  73 74 79 6c 65 3d 22 63   ..<span  style="c
0060  6f 6c 6f 72 3a 23 30 30  30 30 30 30 3b 20 66 6f   olor:#00 0000; fo
0070  6e 74 2d 66 61 6d 69 6c  79 3a 27 4d 53 20 53 68   nt-famil y:'MS Sh
0080  65 6c 6c 20 44 6c 67 20  32 27 3b 20 66 6f 6e 74   ell Dlg  2'; font
0090  2d 73 69 7a 65 3a 39 70  74 3b 20 22 3e 57 49 41   -size:9p t; ">WIA
00a0  44 4f 4d 4f 53 43 20 54  45 4b 53 54 4f 57 41 3c   DOMOSC T EKSTOWA<
00b0  2f 73 70 61 6e 3e 00 57  49 41 44 4f 4d 4f 53 43   /span>.W IADOMOSC
00c0  20 54 45 4b 53 54 4f 57  41 00 02 06 00 00 00 08    TEKSTOW A.......
00d0  00 00 00                                           ...             

Kod: Zaznacz cały
0000  00 0f ea 6d 87 80 00 1b  11 f8 34 1e 08 00 45 00   ...m.... ..4...E.
0010  00 c9 1c 4c 40 00 3a 06  f9 b6 5b c5 0d 29 c0 a8   ...L@.:. ..[..)..
0020  00 96 1f 8a 04 25 d3 ce  1b fd 21 8f ff 29 50 18   .....%.. ..!..)P.
0030  23 70 3f dd 00 00 2e 00  00 00 99 00 00 00 e5 18   #p?..... ........
0040  2f 01 04 00 00 00 48 96  61 4b 08 00 00 00 7d 00   /.....H. aK....}.
0050  00 00 90 00 00 00 3c 73  70 61 6e 20 73 74 79 6c   ......<s pan styl
0060  65 3d 22 63 6f 6c 6f 72  3a 23 30 30 30 30 30 30   e="color :#000000
0070  3b 20 66 6f 6e 74 2d 66  61 6d 69 6c 79 3a 27 4d   ; font-f amily:'M
0080  53 20 53 68 65 6c 6c 20  44 6c 67 20 32 27 3b 20   S Shell  Dlg 2';
0090  66 6f 6e 74 2d 73 69 7a  65 3a 39 70 74 3b 20 22   font-siz e:9pt; "
00a0  3e 57 49 41 44 4f 4d 4f  53 43 20 54 45 4b 53 54   >WIADOMO SC TEKST
00b0  4f 57 41 3c 2f 73 70 61  6e 3e 00 57 49 41 44 4f   OWA</spa n>.WIADO
00c0  4d 4f 53 43 20 54 45 4b  53 54 4f 57 41 00 02 06   MOSC TEK STOWA...
00d0  00 00 00 08 00 00 00                               .......         

Jeszcze wraz z tymi pakietami gdzie jest treść mojej wiadomości przyszło 5 innych mniej więcej takich:
Kod: Zaznacz cały
0000  00 0f ea 6d 87 80 00 1b  11 f8 34 1e 08 00 45 00   ...m.... ..4...E.
0010  00 28 1c 4d 40 00 3a 06  fa 56 5b c5 0d 29 c0 a8   .(.M@.:. .V[..)..
0020  00 96 1f 8a 04 25 d3 ce  1c 9e 21 8f ff 35 50 10   .....%.. ..!..5P.
0030  23 70 2d 57 00 00 00 00  00 00 00 00               #p-W.... ....   
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPChrome

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez polymorphism » czwartek, 28 stycznia 2010, 16:42

OK, dobrze, że dałeś te zrzuty, nie muszę już instalować GG ;)

Wygląda na to, że offsety obliczane są względem początku struktury.

html_message -> <span style="color:#000000; font-family:'MS Shell Dlg 2'; font-size:9pt; ">WIADOMOSC TEKSTOWA</span> (w utf8)
plain_message -> WIADOMOSC TEKSTOWA (w CP1250)
attributes -> 02 06 00 00 00 08 00 00 00

Jak widać klient wysyła tekst w dwóch wersjach - plain i html.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
mko000
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez mko000 » czwartek, 28 stycznia 2010, 17:24

Kod: Zaznacz cały
time_t sekundy;
sekundy = time (NULL);
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
wysylanie.recipient = 18199693;
wysylanie.seq = sekundy;
wysylanie.clas = 0x0008;
wysylanie.offset_plain = 0x00;
wysylanie.offset_attributes =0x0;
strcpy(wysylanie.html_message,"<span style=""color:#000000; font-family:'MS Shell Dlg 2'; font-size:9pt; "">Test</span>");
strcpy(wysylanie.plain_message,"Test");
strcpy(wysylanie.attributes, "02 06 00 00 00 08 00 00 00");
Client->Socket->SendBuf(&wysylanie,sizeof(wysylanie));

Nie wiem jak to uzupełnić jeszcze jestem za mało umiejącym programistą i mam problem. Po pierwsze wiem że html_message i attributes są zle wypelnione. Ale nie mam pojęcia jak inaczej to zrobić. Co do html_message występują tam " więc zakańcza mi string czy dodanie jeszcze jednego " eliminuje problem ?
I co z offsetami jakie tam podac wartości?
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPFirefox

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez Cyfrowy Baron » czwartek, 28 stycznia 2010, 17:58

" więc zakańcza mi string czy dodanie jeszcze jednego "


Jeżeli chcesz wstawić cudzysłów między inne cudzysłowy to poprzedź go ukośnikiem

Kod: Zaznacz cały
"<span style=\" color:#000000; font-family:'MS Shell Dlg 2'; font-size:9pt; \">Test</span>"

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
mko000
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez mko000 » czwartek, 28 stycznia 2010, 21:03

Kod: Zaznacz cały
time_t sekundy;
sekundy = time (NULL);
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
wysylanie.recipient = 18199693;
wysylanie.seq = sekundy;
wysylanie.clas = 0x0008;
wysylanie.offset_plain = 0x00;
wysylanie.offset_attributes =0x0;
strcpy(wysylanie.html_message,"<span style=\"color:#000000; font-family:'MS Shell Dlg 2'; font-size:9pt; \">Test</span>");
strcpy(wysylanie.plain_message,"Test");
wysylanie.attributes[0] = 02;
wysylanie.attributes[1] = 06;
wysylanie.attributes[2] = 00;
wysylanie.attributes[3] = 00;
wysylanie.attributes[4] = 00;
Client->Socket->SendBuf(&wysylanie,sizeof(wysylanie));

W tym kodzie już widać poprawę, tzn otrzymuje cos takiego :
Kod: Zaznacz cały
Dostarczono do:18199693
18199693
(ô

Czyli jakaś wiadomość jest. Wiem że atrybutów miało być więcej ale 08 wywala błędy. Co trzeba jeszcze zmodyfikować?
Struktura ze sniffera:
Kod: Zaznacz cały
0000  00 1b 11 f8 34 1e 00 0f  ea 6d 87 80 08 00 45 00   ....4... .m....E.
0010  05 dc 16 f7 40 00 80 06  b3 cd c0 a8 00 96 5b c5   ....@... ......[.
0020  0d 54 04 bb 1f 8a 6d 15  60 af 35 bb e3 24 50 10   .T....m. `.5..$P.
0030  ff df 30 26 00 00 2d 00  00 00 e4 07 00 00 8d b4   ..0&..-. ........
0040  15 01 8c e1 61 4b 08 00  00 00 00 00 00 00 00 00   ....aK.. ........
0050  00 00 54 65 73 74 00 20  73 74 79 6c 65 3d 22 63   ..Test.  style="c
0060  6f 6c 6f 72 3a 23 30 30  30 30 30 30 3b 20 66 6f   olor:#00 0000; fo
0070  6e 74 2d 66 61 6d 69 6c  79 3a 27 4d 53 20 53 68   nt-famil y:'MS Sh
0080  65 6c 6c 20 44 6c 67 20  32 27 3b 20 66 6f 6e 74   ell Dlg  2'; font
0090  2d 73 69 7a 65 3a 39 70  74 3b 20 22 3e 54 65 73   -size:9p t; ">Tes
00a0  74 3c 2f 73 70 61 6e 3e  00 00 00 ee 12 00 f6 1a   t</span> ........
00b0  1d 5b e6 04 01 00 7d 00  00 00 f0 ff ff ff 08 f3   .[....}. ........
00c0  12 00 08 f3 12 00 d0 78  18 00 7e 88 d3 77 db 1a   .......x ..~..w..
00d0  1d 5b e0 ee 12 00 08 f3  12 00 d0 78 18 00 7e 88   .[...... ...x..~.
00e0  d3 77 84 00 00 00 00 00  00 00 41 03 a5 02 04 00   .w...... ..A.....
00f0  00 00 00 00 00 00 08 00  00 00 7a b2 d3 77 00 00   ........ ..z..w..
0100  00 00 1c ee 12 00 3d 1b  1d 5b 00 00 00 00 00 00   ......=. .[......
0110  00 00 00 00 39 00 f5 a1  94 7c 40 f0 12 00 f4 b5   ....9... .|@.....
0120  91 7c 86 b6 91 7c 70 00  00 00 00 00 39 00 01 00   .|...|p. ....9...
0130  00 00 50 b2 d3 77 08 f3  12 00 00 00 00 00 7e 88   ..P..w.. ......~.
0140  d3 77 20 00 00 00 00 00  00 00 70 05 3b 00 00 00   .w ..... ..p.;...
0150  00 00 00 08 b2 00 d8 ee  12 00 40 de 1c 50 4f 1c   ........ ..@..PO.
0160  01 ac 00 00 00 00 88 ee  12 00 d0 f1 12 00 90 ee   ........ ........
0170  12 00 00 08 b2 00 d8 ee  12 00 16 e4 1c 50 4f 1c   ........ .....PO.
0180  01 ac 90 ee 12 00 00 00  00 00 00 08 b2 00 88 e5   ........ ........
0190  1c 50 00 00 00 00 00 00  00 00 a0 15 af 00 f0 52   .P...... .......R
01a0  b0 00 d0 ab 29 50 d0 f1  12 00 a0 15 af 00 58 f1   ....)P.. ......X.
01b0  12 00 ef 20 2c 50 a0 15  af 00 58 f1 12 00 04 00   ... ,P.. ..X.....
01c0  00 00 03 00 00 00 00 00  00 00 00 00 00 00 06 00   ........ ........
01d0  00 00 4f 1c 01 ac a0 15  af 00 48 ef 12 00 5a a9   ..O..... ..H...Z.
01e0  29 50 50 ef 12 00 83 a9  29 50 8a a9 29 50 d0 f1   )PP..... )P..)P..
01f0  12 00 a0 15 af 00 58 f1  12 00 73 02 00 00 b3 1b   ......X. ..s.....
0200  10 0d a0 15 af 00 00 00  00 00 70 05 3b 00 15 d4   ........ ..p.;...
0210  d3 77 4f 1c 01 ac 21 00  f0 00 2c ef 12 00 00 f0   .wO...!. ..,.....
0220  fd 7f 00 00 00 00 48 ef  12 00 55 98 f1 77 70 05   ......H. ..U..wp.
0230  3b 00 01 00 00 00 00 00  00 00 d0 f1 12 00 a0 15   ;....... ........
0240  af 00 58 f1 12 00 01 00  00 00 78 ef 12 00 e9 ea   ..X..... ..x.....
0250  29 50 4f 1c 01 ac 01 00  00 00 09 eb 29 50 28 f1   )PO..... ....)P(.
0260  12 00 27 eb 29 50 2e eb  29 50 77 00 00 00 01 00   ..'.)P.. )Pw.....
0270  00 00 58 f1 12 00 a0 15  af 00 a8 f0 12 00 ff 5d   ..X..... .......]
0280  29 50 d0 f1 12 00 c8 0f  c7 00 58 f1 12 00 ff ff   )P...... ..X.....
0290  ff ff a5 01 00 00 0e c0  d3 77 00 00 00 00 a0 0d   ........ .w......
02a0  00 00 e6 04 01 00 7d 00  00 00 f0 ff ff ff 78 01   ......}. ......x.
02b0  39 00 78 01 39 00 00 00  00 00 58 62 39 00 f0 52   9.x.9... ..Xb9..R
02c0  b0 00 e0 ef 12 00 34 c0  d3 77 11 00 00 00 e6 04   ......4. .w......
02d0  01 00 7d 00 00 00 88 00  00 00 08 f3 12 00 00 00   ..}..... ........
02e0  00 00 50 62 39 00 c5 a7  29 50 50 62 39 00 58 62   ..Pb9... )PPb9.Xb
02f0  39 00 7d 00 00 00 11 00  00 00 08 f3 12 00 00 00   9.}..... ........
0300  00 00 cc f1 12 00 f0 52  b0 00 cc f1 12 00 00 00   .......R ........
0310  00 00 00 00 00 00 68 01  39 00 00 00 03 00 78 01   ......h. 9.....x.
0320  39 00 88 00 00 00 00 00  39 00 24 ee 12 00 00 00   9....... 9.$.....
0330  00 00 b4 f0 12 00 18 ee  90 7c 90 b6 91 7c ff ff   ........ .|...|..
0340  ff ff 86 b6 91 7c c4 f0  12 00 a2 d8 96 7c 08 06   .....|.. .....|..
0350  39 00 86 d8 96 7c 00 00  39 00 00 00 00 00 00 00   9....|.. 9.......
0360  39 00 54 f1 12 00 01 00  00 00 50 f1 12 00 01 00   9.T..... ..P.....
0370  00 00 00 00 39 00 f5 a1  94 7c a0 f2 12 00 00 00   ....9... .|......
0380  15 00 f5 a1 94 7c ac f2  12 00 f4 b5 91 7c 86 b6   .....|.. .....|..
0390  91 7c 0e 00 00 00 00 00  15 00 01 00 00 00 84 00   .|...... ........
03a0  00 00 24 00 00 00 00 00  00 00 f4 f0 12 00 c5 a6   ..$..... ........
03b0  29 50 28 00 00 00 58 f1  12 00 b8 c4 18 00 a8 d8   )P(...X. ........
03c0  96 7c 1a 00 00 00 86 d8  96 7c b0 01 15 00 00 00   .|...... .|......
03d0  39 00 61 01 00 50 86 b6  91 7c 00 00 00 00 70 00   9.a..P.. .|....p.
03e0  00 00 00 00 39 00 7a b2  d3 77 4a 00 00 00 58 f1   ....9.z. .wJ...X.
03f0  12 00 00 00 00 00 20 f1  12 00 91 f5 2b 50 d0 f1   ...... . ....+P..
0400  12 00 c8 0f c7 00 a0 15  af 00 a0 49 06 50 8b 2a   ........ ...I.P.*
0410  1d 50 00 00 39 00 f5 a1  94 7c 40 f3 12 00 f4 b5   .P..9... .|@.....
0420  91 7c 86 b6 91 7c 70 00  00 00 00 00 39 00 01 00   .|...|p. ....9...
0430  00 00 82 9d 29 50 ec f1  12 00 00 00 00 00 08 c4   ....)P.. ........
0440  18 00 80 00 00 00 a0 0d  00 00 b0 01 15 00 d8 62   ........ .......b
0450  39 00 68 f1 12 00 18 00  00 00 18 03 00 00 78 01   9.h..... ......x.
0460  39 00 04 00 00 00 00 00  00 00 94 f1 12 00 09 87   9....... ........
0470  d3 77 d4 04 04 00 18 03  00 00 4f 1c 01 ac 04 00   .w...... ..O.....
0480  00 00 40 06 39 00 4f 1c  01 ac 06 00 00 00 00 00   ..@.9.O. ........
0490  00 00 0c 00 00 00 01 00  00 00 b1 8b d3 77 d8 f1   ........ .....w..
04a0  12 00 64 7d f1 77 4f 1c  01 ac 29 00 00 00 06 00   ..d}.wO. ..).....
04b0  00 00 00 00 00 00 00 00  00 00 5c f2 12 00 00 00   ........ ..\.....
04c0  00 00 06 00 00 00 0c 00  00 00 00 00 00 00 4f 1c   ........ ......O.
04d0  01 ac 06 00 00 00 5c f2  12 00 60 f4 12 00 78 01   ......\. ..`...x.
04e0  39 00 4f 1c 01 ac 29 00  00 00 06 00 00 00 5c f2   9.O...). ......\.
04f0  12 00 06 00 00 00 29 00  00 00 78 01 39 00 e0 62   ......). ..x.9..b
0500  39 00 43 b7 d3 77 00 00  00 00 28 00 00 00 d4 04   9.C..w.. ..(.....
0510  04 00 18 03 00 00 4f 1c  01 ac 04 00 00 00 fc b6   ......O. ........
0520  67 00 00 00 00 00 34 f2  12 00 88 01 15 00 16 a9   g.....4. ........
0530  00 00 0b 00 00 00 05 00  00 00 d8 f3 12 00 30 4d   ........ ......0M
0540  b0 00 28 00 00 00 ff 5d  29 50 d8 f3 12 00 90 c4   ..(....] )P......
0550  18 00 30 4d b0 00 4f 1c  01 ac ff ff 00 00 50 00   ..0M..O. ......P.
0560  4f 00 4c 00 41 00 43 00  5a 00 00 00 40 00 4a 00   O.L.A.C. Z...@.J.
0570  00 00 53 dc 1e 5b d0 62  39 00 98 c4 18 00 10 75   ..S..[.b 9......u
0580  18 00 7e 88 d3 77 00 00  03 00 b0 01 15 00 28 00   ..~..w.. ......(.
0590  00 00 a5 01 00 00 90 f0  12 00 00 00 00 00 a0 0d   ........ ........
05a0  00 00 18 ee 90 7c c0 f2  12 00 a1 b2 d3 77 78 01   .....|.. .....wx.
05b0  39 00 78 01 39 00 00 00  00 00 58 62 39 00 00 00   9.x.9... ..Xb9...
05c0  00 00 b1 8b d3 77 68 00  d9 77 11 00 00 00 08 f3   .....wh. .w......
05d0  12 00 74 b2 d3 77 88 00  00 00 98 c4 18 00 10 75   ..t..w.. .......u
05e0  18 00 50 62 39 00 00 00  00 00                     ..Pb9... ..     


Ps. Jednak ta otrzymana wiadomość nie wiadomo skąd się wzięła bo po każdej kompilacji innej kompilacji już jej nie otrzymuje. Jak w snifferze wykryć w którym miejscu są offsety? Nie mam pojęcia jak je ustawić.
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPChrome

Re: BCB6 - Klient Gadu Gadu

Nowy postprzez polymorphism » czwartek, 28 stycznia 2010, 22:10

Dobra, zrób mały test. Zobaczymy, czy koniecznie trzeba podawać wiadomość w formie kodu html, może wystarczy tylko plain.

Struktura wygląda tak:
Kod: Zaznacz cały
struct gg_send_msg80
{
   int recipient;      
   int seq;      
   int class;      
   int offset_plain;   
   int offset_attributes;   
};

kod testowy:
Kod: Zaznacz cały
vector<char>    buff(sizeof(gg_header) + sizeof(gg_send_msg80));
gg_header*      gg_hdr = (gg_header*) &buff[0];
gg_send_msg80*  gg_send = (gg_send_msg80*)(gg_hdr + 1);
string          msg = "blablabla";

gg_hdr->type = GG_SEND_MSG80;

msg.append(1,'\0');

/* tu wypełnij pozostałe pola gg_send_msg80 */

gg_send->offset_plain = sizeof(gg_send_msg80) + 1;
gg_send->offset_attributes = gg_send->offset_plain + msg.size();

buff.push_back('\0');
buff.insert(buff.end(),msg.begin(),msg.end());

char tab[] = { 2, 6, 0, 0, 0, 8, 0, 0, 0 };
buff.insert(buff.end(),tab,tab + sizeof(tab));

gg_hdr = (gg_header*) &buff[0];
gg_hdr->length = buff.size() - sizeof(gg_header);

Client->Socket->SendBuf(&buff[0],buff.size());


____
p.s. kod może nie jest zbyt ładny, ale na chwilę obecną to nie jest istotne.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
mko000
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Poprzednia stronaNastępna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość