Bien le bonjour,
J'ouvre un petit journal de bord inclusif pour partager mon apprentissage avec les petits et éventuellement recevoir un petit coup de pouce des plus grands qui passeraient par là. Mon objectif à terme est d'exploiter les données transitant entre le client et le serveur pour assister mon bot pixel (c'est mon bébé chéri que j'ai mis 10 jours à coder, sisi ) et le rendre plus puissant. Pour ça, il va falloir comprendre le protocole de Dofus 1: c'est le sujet de ce journal de bord.
Comme nous sommes quand même dans la partie Questions/Réponses, pourquoi ne pas commencer avec notre 1er problème et tenter d'y répondre ? Prêt ? C'est parti !
Comment détecter et décoder les paquets nous indiquant qu'une ressource (ici, un arbre) est en train d'être récoltée par un autre ?
1. Dabord toi chercher, après toi parler
Après plusieurs heures de recherche dans les tréfonds de Cadernis, les vénérables tutos de Labo et Bouh2 ou réponses d'internautes nous indiquent qu'il nous faut un sniffer comme Wireshark auquel on appliquera un filtre de capture tcp port 5555 and len > 66 pour sniffer de manière sélective les paquets qui nous intéressent. Ensuite on se connecte en jeu, on trouve une petite map tranquille histoire de pas être inondée de paquets par des bots qui traversent la map, j'ai donc pour ma part choisi la Merveilleuse Forêt d'Astrub worst idea ever On lance la capture, un petit click sur un arbre et hop dès qu'il est récolté j'arrête la capture de paquets. Facile non ? Sauf que...
En regardant le contenu des paquets, je me rends compte que c'est du bordel de chinois ce protocole !
GA0;1;90128766; Kéza koiii ?! Mais dis donc bouh2, tu m'avais vendu du rêve dans ton tuto en me faisant croire que c'était aussi facile que de lire "Bonjour|123"
Première réaction : je me persuade que j'ai du louper une étape de décodage, j'essaie des conversions en tout genre entre décimal/hexa/ascii sans rien comprendre jusqu'à me rendre à l'évidence que... faut fouiller dans le code source mon coco, comme le dit si bien tonton Labo dans ses tutos.
2. L'expérimentation/observation/déduction est ta meilleure amie
Du coup après plusieurs heures de recherche et d'incompréhension, le seul mot clé que j'arrive à capter est "GA" pour Game Action, mais je ne trouve ni la correspondance des id des actions, ni rien d'autre de très utile. Du coup, une seule solution: on va faire chauffer wireshark hell yeah, baby !
Je load les sources partagées de Maxoubot et trouve des fichiers .txt contenant les id des map et des ressources pour m'aider à trouver une correspondance. Je me reco sur notre map de la forêt d'astrub sur une map tranquille et test des actions simples comme se déplacer sur la map, couper un chataigner, puis un frêne et ainsi de suite plusieurs fois en analysant systématiquement les paquets pour identifier une éventuelle redondance. Bingo, ça fonctionne ! Bah forcément coco, c'est du chinois, mais du chinois logique !
Voilà ce que j'arrive à déduire :
-lorsque je clique sur une ressource et que mon perso court pour la chopper, mon client envoyait un paquet composé de GA500cell_id;
-lorsque mon perso arrive à commencer à couper un arbre, je recevais un paquet dont le data est composé de GA1;501;player_id;cell_id;harvest_delay;
-suivi d'une donnée indiquant que la ressource n'est plus dispo sous la forme GDF|cell_id;2;0
-le chiffre 2 est changé selon le moment d'indisponibilité de la ressource: 3 lorsque je viens de terminer de couper l'arbre, et 4 lorsque la ressource était déjà indisponible, lors d'un changement de map par exemple.
Sympa, non ? Pour ma part, ces infos devraient me suffire à intégrer la détection que je souhaite à mon bot pixel mais devoir déduire tous les types de paquets "à la main" en cherchant désespérément un mot clé correspondant dans le code quelque part me semble suicidaire. Dites moi M'sieur l'Professeur Blue Dream, z'auriez pas un p'tit filon pour trouver les correspondances des id plus facilement ? C'est que DataProcessor.as m'voyez... c'est un peu le boxon. Y'aurait pas un fichier magique qui nous dit tout un peu comme map.txt de Maxoubot ?
C'est fini pour aujourd'hui, j'espère que ça aura aiguillé les plus perdus d'entre nous ou fait rire nos vieux singes du forum
La suite au prochain épisode, stay tuned !
J'ouvre un petit journal de bord inclusif pour partager mon apprentissage avec les petits et éventuellement recevoir un petit coup de pouce des plus grands qui passeraient par là. Mon objectif à terme est d'exploiter les données transitant entre le client et le serveur pour assister mon bot pixel (c'est mon bébé chéri que j'ai mis 10 jours à coder, sisi ) et le rendre plus puissant. Pour ça, il va falloir comprendre le protocole de Dofus 1: c'est le sujet de ce journal de bord.
Comme nous sommes quand même dans la partie Questions/Réponses, pourquoi ne pas commencer avec notre 1er problème et tenter d'y répondre ? Prêt ? C'est parti !
Comment détecter et décoder les paquets nous indiquant qu'une ressource (ici, un arbre) est en train d'être récoltée par un autre ?
1. Dabord toi chercher, après toi parler
Après plusieurs heures de recherche dans les tréfonds de Cadernis, les vénérables tutos de Labo et Bouh2 ou réponses d'internautes nous indiquent qu'il nous faut un sniffer comme Wireshark auquel on appliquera un filtre de capture tcp port 5555 and len > 66 pour sniffer de manière sélective les paquets qui nous intéressent. Ensuite on se connecte en jeu, on trouve une petite map tranquille histoire de pas être inondée de paquets par des bots qui traversent la map, j'ai donc pour ma part choisi la Merveilleuse Forêt d'Astrub worst idea ever On lance la capture, un petit click sur un arbre et hop dès qu'il est récolté j'arrête la capture de paquets. Facile non ? Sauf que...
En regardant le contenu des paquets, je me rends compte que c'est du bordel de chinois ce protocole !
GA0;1;90128766; Kéza koiii ?! Mais dis donc bouh2, tu m'avais vendu du rêve dans ton tuto en me faisant croire que c'était aussi facile que de lire "Bonjour|123"
Première réaction : je me persuade que j'ai du louper une étape de décodage, j'essaie des conversions en tout genre entre décimal/hexa/ascii sans rien comprendre jusqu'à me rendre à l'évidence que... faut fouiller dans le code source mon coco, comme le dit si bien tonton Labo dans ses tutos.
2. L'expérimentation/observation/déduction est ta meilleure amie
Du coup après plusieurs heures de recherche et d'incompréhension, le seul mot clé que j'arrive à capter est "GA" pour Game Action, mais je ne trouve ni la correspondance des id des actions, ni rien d'autre de très utile. Du coup, une seule solution: on va faire chauffer wireshark hell yeah, baby !
Je load les sources partagées de Maxoubot et trouve des fichiers .txt contenant les id des map et des ressources pour m'aider à trouver une correspondance. Je me reco sur notre map de la forêt d'astrub sur une map tranquille et test des actions simples comme se déplacer sur la map, couper un chataigner, puis un frêne et ainsi de suite plusieurs fois en analysant systématiquement les paquets pour identifier une éventuelle redondance. Bingo, ça fonctionne ! Bah forcément coco, c'est du chinois, mais du chinois logique !
Voilà ce que j'arrive à déduire :
-lorsque je clique sur une ressource et que mon perso court pour la chopper, mon client envoyait un paquet composé de GA500cell_id;
-lorsque mon perso arrive à commencer à couper un arbre, je recevais un paquet dont le data est composé de GA1;501;player_id;cell_id;harvest_delay;
-suivi d'une donnée indiquant que la ressource n'est plus dispo sous la forme GDF|cell_id;2;0
-le chiffre 2 est changé selon le moment d'indisponibilité de la ressource: 3 lorsque je viens de terminer de couper l'arbre, et 4 lorsque la ressource était déjà indisponible, lors d'un changement de map par exemple.
Sympa, non ? Pour ma part, ces infos devraient me suffire à intégrer la détection que je souhaite à mon bot pixel mais devoir déduire tous les types de paquets "à la main" en cherchant désespérément un mot clé correspondant dans le code quelque part me semble suicidaire. Dites moi M'sieur l'Professeur Blue Dream, z'auriez pas un p'tit filon pour trouver les correspondances des id plus facilement ? C'est que DataProcessor.as m'voyez... c'est un peu le boxon. Y'aurait pas un fichier magique qui nous dit tout un peu comme map.txt de Maxoubot ?
C'est fini pour aujourd'hui, j'espère que ça aura aiguillé les plus perdus d'entre nous ou fait rire nos vieux singes du forum
La suite au prochain épisode, stay tuned !
Dernière édition: