JustNao / Karrelage

MITM pour Dofus 2.XX
17 stars 8 forks source link


Logo

Karrelage

MITM pour Dofus 2.XX

Report Bug

Sommaire
  1. A propos du projet
  2. Installation
  3. Modules
  4. Lecture de packets
  5. Développement
  6. Copyright
  7. Licence

A propos du projet

Karrelage est un MITM pour Dofus 2.XX en Python 3. C'est la suite de DofusHelper, avec une interface plus moderne et un système de module et de packet sniffing plus flexible. Il utilise LaBot pour capter les paquets reçus par le client. Un système de module permet de créer plusieurs handlers à leur réception (voir plus bas pour des exemples). L'interface utilise Flask, avec TailwdindCSS et Flowbite pour le style.

(back to top)

Installation

  1. Installer Python 3
  2. Ajouter PIP (installé avec les dernières versions de Python) à votre Path. Si vous n'avez rien touché à l'installation de python, le dossier à ajouter devrait être 'C:\Program Files\Python3XX\Scripts'.
  3. Installer Npcap (https://npcap.com/dist)
  4. Installer Git
  5. Exporter le git (bash, zip, ...)
  6. Installer les packages python
    pip install -r requirements.txt

    ou en lançant le fichier install.bat.

  7. Lancer l'interface par la commande
    python app.py

    ou en lançant le fichier launch.bat.

    (back to top)

Modules

Karrelage utilise un système de module pour gérer les paquets reçus. Un module est un fichier python qui contient une classe qui hérite de la classe DofusModule. Cette classe contient une méthode handle_packet qui parse les messages reçus par le client, et envoie le packet avec à la fonction correspondante du module (sous la forme handle_<packet_name>). Le menu de Karrelage permet de sélectionner quel module lancer. Actuellement, un seul module peut être lancé à la fois.

Menu Screenshot

Module HDV Filter

Ce module sert à filtrer les ventes d'équipements en HDV. En sélectionnant un item en HDV, ses caractéristiques sont affichées sur l'interface de Karrelage. Vous pouvez ensuite spécifier des valeurs minimums pour chaque caractéristique, et le module ne vous affichera que les ventes qui correspondent à ces valeurs. Vous pouvez aussi rapidement ajouter un exo PA/PM/PO par les boutons.

HDV Filter Screenshot

Vous pouvez ensuite bouger entre chaque vente. Le module affichera les caractéristiques de l'équipement, ainsi que le prix de vente. Un code couleur indique si la caractéristique est en jet parfait, over, exo, négative, ou moins de la valeur minimale. Une option Stats négatives permet aussi d'afficher la distance au jet parfait.

HDV Filter Screenshot

Module Team Manager

Ce module est un outil multicompte combiné à un récap d'équipe.

Team Manager Screenshot

Forgemager

Forgemager est un module de calcul automatique du reliquat. Il suit les runes utilisées ainsi que les résultats de chaque tentative, et vous affiche le reliquat disponible à un moment donné. Vous pouvez aussi manuellement augmenter/diminuer le reliquat manuellement, si vous commencez un FM avec déjà du reliquat sur l'item par exemple.

Forgemager screenshot

Biscuit

Biscuit est un module "Quality of Life". Il est destiné à être laissé en arrière plan, si un autre module n'est pas déjà en cours d'execution. C'est ici que je mets toutes les idées de petites fonctionnalités utiles qui n'ont pas de raison d'avoir un module à part. Pour l'instant, il y'a :

Biscuit screenshot

Treasure Hunter

Treasure Hunter est un bot chasse aux trésors. Une fois celui-ci ouvert, lancez une chasse au trésor. Pour la première étape rien ne va se passer, mais une fois que allez arriver vers la position de lancement, il va aller à chaque indice automatiquement. L'interface affiche pour l'instant uniquement une option d'autopilot, qui va utiliser votre monture autopilotée à la place d'un clic sur les bords de l'écran. Pour trouver les indices, Treasure Hunter ouvre en background une fenêtre Chrome (contrôlée par Selenium), et utilise DofusDB pour dynamiquement obtenir la position des indices.

Debug

Ici c'est juste un module de debug qui permet de parcourir tous les packets reçus. On affiche le type de packet, timestamp et packet size. Si vous sélectionnez un packet, son contenu en format json est affiché. On peut filtrer les types et le contenu des packets.

Debug screenshot

Lecture de packets

Karrelage intègre deux type de lecture de packet, sélectionnables depuis le menu avant del ancer un module : Sniffer et Attach.

Sniffer

Karrelage va simplement écouter tous les packets reçus par n'importe quel client Dofus. Il ne modifie aucune connexion entrance/sortante. Fonctionne très bien, mais a du mal à gérer les gros packets qui sont envoyés au même moment pour plusieurs clients (comme les packets de combat en multicompte). Sniffer est donc à utiliser quand vous êtes en mono-compte, ou n'avez pas besoin du module de combat. Lancez le à n'importe quel moment et ça marchera. C'est le mode par défaut.

Attach

Karrelage va ici hijack la connexion avec le serveur d'un client en particulier, et va ensuite transférer les packets entrants/sortants de ce client uniquement. On peut ainsi éviter d'avoir des problèmes de packet qui se chevauchent. C'est le mode à utiliser quand vous êtes en multicompte et que vous utilisez le module de combat.

Plus délicat à lancer, il faut qu'il arrive à intercepter la connexion client/serveur, qui se lance quand vous sélectionnez un serveur, ou changez de personnage. Trouvez la manip qui vous arrange le plus, et gardez Karrelage d'ouvert pour qu'il capte la connexion. De plus, Karrelage s'occupant de la transmission des packets, si celui est fermé (par vous ou par un crash) la connexion client/serveur est temporairement perdue et ça va vous faire une mini re-connexion.

(back to top)

Développement

Commande pour lancer l'auto-compilation du CSS par TailwindCSS (nécessite NodeJS):

npx tailwindcss -i ./static/src/input.css -o ./static/dist/css/output.css --watch

Manuellement mettre à jour les packets (nécessite FFDec, testé avec la version 20.1.0) :

python scripts/update_packets.py

Manuellement mettre à jour les ressources du jeu (noms d'item, noms de monstres, etc...):

python -m scripts.update_game_ressources

Troubleshoot

Si rien ne se passe quand vous lancez Karrelage, et le module debug n'affiche aucun paquet reçu :

  1. Vérifiez que votre protocol.pk est à jour (la version du jeu est dans le ficheir DOFUS_VERSION)
  2. Spécifiez l'interface que vous utilisez dans src/sniffer/network.py:118. Par défaut Scapy sniff les paquets sur conf.iface, qui peut ne pas correspondre à l'interface utilisée pour Dofus.

Copyright

Merci à LaBot pour son reader/writer de packet et balciseri pour son reader/writer de fichiers Dofus.

License

MIT

(back to top)