Analyse Demande d'aide pour interprétation élémentaire de paquet

Inscrit
1 Juin 2020
Messages
43
Reactions
29
#1
Bonjour a tous.

J'ouvre ce post afin de demander un peu d'aide/compagnonnage dans la compréhension des paquets et de leur interprétation pour Dofus 2.57

Je développe essentiellement en Python et j'utilise un module WireShark pour intercepter des paquets.

Déjà, je n'arrive a sniff les paquets qu'en continu via sniff_continiously, j'ai une erreur si j'utilise le timeout comme LaBo l'a suggéré mais qu'importe.
Je filtre les paquets < 66 bytes, je me met en TCP port 5555 comme recommandé et je lance le soft.

Pour m'essayer a la pratique je me suis mis sur une map vide. Aucun paquet détecté, jusque la normal. Quand je clique, apparait immédiatement un paquet. Que je m'essaye alors a interpréter.

Voila le paquet que j'essaye de lire :

6e6100016771420004416631654173417241a3680000000000ac6b3ffa50319edb88ee8489ead5f3b960f063ea14a1ad7347ae5068a405c7aa91fc7e9c7c4a3356f1222bab69bc9c10
882114000401660165017301720000423a25eb00de0000115c

Je me lance donc dans son analyse :

2 premiers octets : 6e61 ->110111001100001
Soit ID = 7064 et et longueur de la taille = 1


Je regarde donc le premier octet suivant pour savoir la taille du message

6e61 00 016771420004416631654173417241a3680000000000ac6b3ffa50319edb88ee8489ead5f3b960f063ea14a1ad7347ae5068a405c7aa91fc7e9c7c4a3356f1222bab69bc9c10
882114000401660165017301720000423a25eb00de0000115c

Cet octet vaut 0, j'en conclus donc que la taille de ce message est 0 ?... C'est la ou je suis un peu perdu .. Est ce que ça veut dire que ce qui vient après correspond a un autre message ..? Si oui allons y.

0167 = 101100111
soit ID = 89 et longueur de la taille = 3

Je regarde donc les 3 octets suivants pour savoir la taille du message

6e6100
0167
714200 04416631654173417241a3680000000000ac6b3ffa50319edb88ee8489ead5f3b960f063ea14a1ad7347ae5068a405c7aa91fc7e9c7c4a3356f1222bab69bc9c10
882114000401660165017301720000423a25eb00de0000115c

3 octets suivants = 714200, ce qui en décimal correspond a 7422464 octets de taille ... Le truc c'est que dans le reste du paquet que j'ai reçu ya (évidemment ) pas autant d'octets .. donc je me suis forcément chier quelque part .. Si quelqu'un pouvait m'éclairer je serais vraiment preneur parce que la j'y comprends absolument rien ...
 
Dernière édition:
Inscrit
10 Mai 2017
Messages
26
Reactions
30
#2
Si le packet provient du client c'est : 2 bytes pour l'id -> 4 bytes (1uint) pour l'instance id -> taille -> donné
Si le packet provient du serveur c'est : 2 bytes pour l'id -> taille -> donné

La ton packet lui provient du client
 
Inscrit
1 Juin 2020
Messages
43
Reactions
29
#3
Aaaaahhh .!!! Oooookkk .. Ok je vais donc tout refaire en prenant en compte cette nuance. Merci énormément de ta réponse
 
Inscrit
26 Janvier 2016
Messages
99
Reactions
34
#4
je rajoutes que tu as déjà visualisé ta prochaine problématique :
"Est ce que ça veut dire que ce qui vient après correspond a un autre message ..? Si oui allons y."

Un paquet TCP ne correspond pas forcément à un seul message dofus ainsi tu peux avoir les situations suivantes :
-Un paquet TCP = un message dofus
-X paquet TCP = un message dofus
-Un paquet TCP = X message dofus

En lançant ton sniffer en étant déjà connecté tu t'exposes a recevoir un paquet TCP qui contient une partie d'un message dofus et donc ta lecture s'en verra faussé !
 
Inscrit
1 Juin 2020
Messages
43
Reactions
29
#5
Ah oui d'accord... Et il n'existe pas de façon de lire " en cours de route" ? Si je veux etre capable de lire tout le livre, je dois commencer des la première page et lire chaque phrase jusqu'a arriver a celle qui m'interesse ? Ou il y a un moyen de simplement ouvrir le livre a la page qui m'interesse et en lire une phrase ?
 
Inscrit
26 Janvier 2016
Messages
99
Reactions
34
#6
Ah oui d'accord... Et il n'existe pas de façon de lire " en cours de route" ? Si je veux etre capable de lire tout le livre, je dois commencer des la première page et lire chaque phrase jusqu'a arriver a celle qui m'interesse ? Ou il y a un moyen de simplement ouvrir le livre a la page qui m'interesse et en lire une phrase ?
Il faut comprendre que c'est un flux , donc si tu lis en cours de route tu vas pas comprendre ce qu'il s est passé avant et donc ton histoire n'aura pas de sens !

MAIS , tu peux ruser et regarder la table des matières et ainsi si tu tombes sur un chapitre que tu connais, tu sais où tu te situes.

Bon sans imager ça donne :
En vérité seul quelques paquets TCP provoquent des débordements, donc quand tu le lances il te suffit de "tester" l'id du message et de comparer avec la liste des ids message existant :
-si il existe bingo tu peux commencer a lire sans problème la suite.
-si il existe pas laisse passer jusqu'à tomber sur un message existant
C'est pas fou mais bon je vois mal comment tu peux t'assurer de la lecture en venant lire en cours de route ^^'

Attention toutefois tu pourrais potentiellement tombé par hasard sur un bon id mais au moment de la lecture de la taille et du contenu voir que ça va pas donc pense à te faire un garde-fou !
 
Haut Bas