2.0 Couille dans mon Protocol 2.0

Inscrit
21 Mars 2023
Messages
6
Reactions
1
#1
Salut les gars, je suis entrain de recréer le protocol dofus 2.0 pour récupérer les packets envoyé par mon Sniffer cpp, mais j'ai un problème suspect.... J'arrive à récupérer les packets sans problème, mais il y a certains packet qui me donne des erreurs avec soit des tailles gigantesque ou bien un id invalide. Est-ce-que ce sont des enums ou des entitées ou autres ? Voici une petite image pour vous montrez (et au passage j'ai refait exactement le même protocol que dofus et avec le bail de instance_id du client)

1694420430006.png 1694420449184.png
 
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#2
Si tu reçois des valeurs random c'est que tu tapes à des endroits random du paquet.

Si tu pars du principe que chaque début de trame TCP est le début d'un paquet protocolaire. Dans ce cas tu te trompes car une trame TCP peut contenir deux paquets. Ainsi la trame A contiendra le paquet A1 et le debut du paquet A2. et la trame B contiendra la fin du paquet A2 et potentiellement une partie ou la totalité du paquet B1 etc. etc.

Ce qui veut dire que si tu essayes de lire un en-tête dans la trame B tu tomberas sur des valeurs randoms comme celles que tu obtiens (car ce que tu liras sera en fait le contenu du paquet A2)

Il faut faire attention aux tailles des paquets protocolaires et lire l'entièreté des trames TCP à chaque fois. Aucune data n'est inutile.

En espérant pouvoir t'aiguiller :)

Edit : Coquille c'est plus joli que Cou`lle.
 
Inscrit
21 Mars 2023
Messages
6
Reactions
1
#3
Si tu reçois des valeurs random c'est que tu tapes à des endroits random du paquet.

Si tu pars du principe que chaque début de trame TCP est le début d'un paquet protocolaire. Dans ce cas tu te trompes car une trame TCP peut contenir deux paquets. Ainsi la trame A contiendra le paquet A1 et le debut du paquet A2. et la trame B contiendra la fin du paquet A2 et potentiellement une partie ou la totalité du paquet B1 etc. etc.

Ce qui veut dire que si tu essayes de lire un en-tête dans la trame B tu tomberas sur des valeurs randoms comme celles que tu obtiens (car ce que tu liras sera en fait le contenu du paquet A2)

Il faut faire attention aux tailles des paquets protocolaires et lire l'entièreté des trames TCP à chaque fois. Aucune data n'est inutile.

En espérant pouvoir t'aiguiller :)

Edit : Coquille c'est plus joli que Cou`lle.
Salut merci pour ta réponse ! Enfaite je hook les fonctions recv et send de Ws3_32.dll pour récupérer les packets tcp, donc d'après ce que j'avais compris un packet Dofus pouvais avoir plusieurs packets à l'intérieur, mais ça veut dire que les packets tcp que je reçois eux aussi ? Pourtant ça marche parfaitement ? J'arrive pas vraiment à comprendre ce que tu me dis.
 
Inscrit
21 Mars 2023
Messages
6
Reactions
1
#4
C'est bon, j'ai trouvé d'où ça venait. En fait, j'avais tout juste. C'est juste que les fonctions 'send' et 'recv' me donnaient des paquets inconnus. J'ai vérifié avec le client Dofus, et je ne les ai pas vus. Sinon, le reste était correct.
 
Haut Bas