[SPOILER=Prémices]
Bonjour tout le monde , ayant récemment essayer de faire un bot MITM, j'ai décidé de vous partager une base de comment en faire un sans trop se compliqué à la tâche.
Avant de partager une petite explication de comment ça marche , afin que vous puissez appliquez toute les modifications que vous souhaitez ^^
1) La redirection du client
J'ai utilisé le SocketHook de Nameless , que j'ai un peu modifié afin de retirer la restrictions des IPs à rediriger et rediriger toutes les IPs sortantes sans aucunes distinctions ( C'est juste pour éviter de désérialiser le messages qui indique l'IP du serveur de jeu lors de la connection à celui-ci ) J'ai aussi ajouter une fonction qui sera appeler lors de cette redirection.
2) Le protocol
Comme je suis un flemmard , et je m'en excuse , j'ai directement récupérer le protocol à partir de LaBot ( https://louisabraham.github.io/LaBot/protocol.js ) ( j'avais vu un parseur de protocol qui fesait la même chose , mais comme je comprennais rien à l'installation du bail , j'ai préférer faire les choses facilements sans me prendre la tête )
( Avant d'executer le bot , assurer vous d'avoir https://github.com/Mrpotatosse/Botox/blob/master/Botox/Protocol/dofusprotocol.json dans le dossier bin )
Merci au bg qui a fais ça : https://cldine.gitlab.io/-/protocol-autoparser/-/jobs/691246963/artifacts/protocol.json
3 ) Comment il marche ton truc ?
Ce MITM fait transité chaque packet reçu directement ( un peu comme WPE pro si vous connaissez ).
Voici un petit schéma de comment ça fonctionne :
![img]()
Un autre schéma un peu plus détaillé:

Je tien à m'excuser pour la qualité du code qui n'est clairement pas ouf , étant données que je ne peux pas prétendre être un expert du haut de ma maigre expérience dans le domaine , mais je voulais avant tout aider et guider ceux qui veulent s'y mettre ^^
Le MITM n'est pas fonctionnel à 100% parce que je n'ai pas bien compris , comment les packets qui sont coupé sont gérer ( ducoup il peut encore y avoir énormement de problème à ce niveau ) , mais si vous avez bien compris , ce sera assez facile pour vous de le faire. Actuellement , ce MITM ne contient que la lecture du header de chaque packet mais si vous voulez l'améliorer libre à vous de le faire.
Actuellement il n'y a aucun traitement intégrale des données reçu , mais si vous avez quelque connaissances ça ne devrait pas être trop compliqué.
Le seul point fort de ce MITM ( si je peux appeler ça un point fort x) ) c'est qu'il n'y a pas besoin de modifier le client , ni les packets reçu , ni même de traiter les données reçu pour que celui fonctionne.
Lien : https://github.com/Mrpotatosse/Botox ( ancien lien , utiliser celui la pour faire vos premier test si jamais vous comprenez pas trop le nouveau )
Nouveau lien : https://github.com/Mrpotatosse/BotoxCore ( c'est pour facilite l'implémentation de nouveau contenu , ou même si vous voulez utiliser Botox pour un autre jeu que Dofus )
Update :
- les données reçu sont bien gérer à 100% ( normalement , j'ai fait un c/c de la classe Buffer de ce lien , qui marche très bien dailleurs merci à l'auteur )
- j'ai modifié le protocol pour que celui-ci soit directement pris de https://cldine.gitlab.io/-/protocol-autoparser/-/jobs/691246963/artifacts/protocol.json ducoup j'ai laissé tombé le protocol de LaBot qui me prenais quelque milliseconde à prendre , mais celui de Botofu , et directement mis à jour , donc merci au bg qui à fait ça x)
- botox traite intégralement les packets reçu
- botox peut maintenant gérez plusieurs client dofus à la fois
- il n'y a pas encore d'envoye de messages fabriqué , car je ne comprend pas pourquoi le client Dofus oublie de compter certain messages
- d'ici quelque jours je devrais ajouter une partie handler pour pouvoir handle les messages pour enfin commencer la partie bot
Update :
- j'ai ajouter un système d'action rapide et d'évenement rapide que je peaufinerai au fil du temps
- j'ai ajouter une interface graphique avec WPF pour les puristes (je m'excuse d'avance car je ne suis pas très callé niveau front-end ducoup je fais ça avec les connaissances du bord) , pour l'instant elle ne permet que de voir quelque info du personnage et des perso présente sur la map , mais j'ajouterai au fur et à mesure des fonctionnalité un peu plus poussé ( comme l'automatisation de certaine tache )