Ionut Stoica

Programator PHP / Frontend developer / Pasionat de Electronica Auto
14Feb

Structura pachete Yahoo Messenger

Posted by Ionut Uncategorized 5 Comments

Vorbeam intr-un alt articol despre protocolul Yahoo Messenger (pe scurt, YMSG).

In acel articol, vorbeam din perspectiva teoretica despre acest protocol, care este unul closed-souce (protocol nativ Yahoo, nedezvaluit publicului). In prezentul articol voi vorbi despre headerele pachetelor si structura lor.

Dupa cum spuneam acolo, pachetul este structurat in 2 sectiuni intre care este introdusa si cheia de autentificare:

  1. Header
  2. Corp Pachet
1. Headerul:

Acesta incepe INTOTDEAUNA cu YMSG urmat de caracterul null ( chr(0) in PHP ).
Dupa caracterul null este trimisa versiunea protocolului ce va fi utilizat urmata de 1 caracter null si un spatiu.
Dupa aceste 2 caractere null se trimite valoarea intreaga din impartirea lungimii corpului pachetului la 256.
Daca am trimis intregul din impartirea lungimii la 256, urmeaza trimiterea modulului din aceasta impartire dupa care se mai trimite un caracter null.
Urmeaza cea mai importanta parte a header-ului si anume ceea ce voi numi mai departe HEADER PACHET (pentru ca, practic, este sigura variabila din header) urmata de un caracter null si 3 spatii.
Despre valorile ce le pot lua headerele voi vorbi mai tarziu in acest articol sau intr-un articol viitor, deoarece sunt destul de multe.

1. Corpul pachetului:
In corpul pachetului sunt transmise informatii despre utilizatorul-sursa, utilizatorul-destinatie, mesaj, status,  etc
Structura nu este standard ca in cazul header-ului, avand doar 3 constante care se regasesc in toate pachetele si anume:  utilizatorul-sursa, utilizatorul-destinatie si delimitatorul.
Delimitatorul este caracterul 192  alaturi de caracterul 128.

Exemplu pachet YMSG pentru trimitere mesaj:
Variabile:
Sursa = Id-ul sau profilul utilizatorului autentificat.
Delimitare = caracterul 192  alaturi de caracterul 128.
Destinatie = Id-ul sau profilul utilizatorului caruia ii este destinat mesajul.
CheieAuth = Cheie de autentificare generata la autentificarea pe serverul yahoo (scs.msg.yahoo.com:5050).
Mesaj = Mesajul transmis utilizatorului-destinatie.

1 . Delimitare . Sursa . Delimitare . 5 . Delimitare . Destinatie . Delimitare . 14 . Delimitare . Mesaj . Delimitare . 97 . Delimitare . 1 . Delimitare . 63 . Delimitare . Delimitare . 64 . Delimitare . 2 . Delimitare . 1002 . Delimitare . 1 . Delimitare . 266 . Delimitare . 0 . Delimitare

Pentru intrebari legate de acest protocol astept feedback.

Comments(5)
    pingback
  • Pingback: Headerele YMSG | Auto Scripts

  • Jun 10, 2009 at 3:12 pm,  Reply

    Daca ai putea sa dai mai multe detalii despre CheieAuth sau sa`mi dai adresa ta de email ar fi perfect!

  • George
    Oct 14, 2009 at 8:37 pm,  Reply

    Exemplul ala de pachet pentru trimitere mesaj e valabil pentru YMSG12, care a cam fost scos din folosinta. Din ce am studiat eu, pachetul are alta structura acum.

  • Oct 21, 2009 at 9:07 pm,  Reply

    Acelasi pachet este compatibil si cu YMSG15/16/17. Diferenta este ca Yahoo Messenger 9 trimite 2 pachete cu header-ul 0x06 la care difera o cheie (primul pachet are valoarea 0, in al 2-lea pachet are valoarea 1)

  • marius
    Jul 6, 2010 at 7:12 pm,  Reply

    buna de curand s-a lansat yahoo.pulse si acolo in loc de adresa “username”apare 26 de caractere , in sursa paginii mai apare dar cu 39 de caractere,cum as putea sa aflu adresa”username”?nu ma intereseaza parola, poate cineva sa-mi spuna?va multumesc

Leave a comment

Your email address will not be published.Field is required

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 Previous  All works Next