louisabraham / LaBot

Bot Dofus 2 en Python 3
MIT License
79 stars 37 forks source link

How to use the sniffer #23

Closed Pebbleton closed 3 years ago

Pebbleton commented 4 years ago

Salut, avant tout : super taf ! Je cherche à développer une projet de base de données issues du jeu, et certaines infos que je need sont transmises via les paquets que le jeu nous envoie. J'ai donc voulu utilisé ton sniffer pour capturer ces fameux paquets, mais je n'arrive pas à le lancer. La doc est-elle à jour ? Merci

kenny94xxhell commented 4 years ago

Salut, La doc du sniffer est à jour contrairement à celle du mitm. Tu bloques à quelle étape ?

Pebbleton commented 4 years ago

Lorsque je tente de lancer avec sudo python -m labot.sniffer.main, soit il utilise python2 et ca pause problème du au f string par exemple, ou avec python 3 il ne trouve pas le module labot.sniffer.main

kenny94xxhell commented 4 years ago

Il faut effectivement lancer avec python3. Ton working directory est bien dans LaBot ?

Pebbleton commented 4 years ago

Après quelques recherches, j'ai réussi a lancer le sniffer, il faut que je lance labot.sniffer, et pas labot.sniffer.main J'ai une autre erreur : importerror cannot import name plist j'ai donc essayé d'importé tout scapy.all mais sans succès

Pebbleton commented 4 years ago

Dans l'ensemble j'ai réussi a faire fonctionner le sniffer, 2 soucis restent :

Pebbleton commented 4 years ago

Pour le paquet, c'est résolu, il faut vider intégralement le cache pour qu'il soit redemandé, mais l'erreur plist est toujours la, mais n’empêche pas l'utilisation. A voir si ça peut quand même Etre corrigé, merci

ael-borz commented 3 years ago

Pour régler le problème de plist, essaye de changer l'import : from scapy import plist

awshx commented 3 years ago

Hello, tout d'abord merci pour le très bon taff !

J'essaie d'utiliser le sniffer pour le coupler à mon Pixel Bot que je code en parallèle. J'ai quelques soucis au niveau du lancement, après avoir corrigé le problème de scapy, il ne trouve pas protocol.pk :

awshx@MacBook-Air-de-awshx LaBot-master % sudo python3 -m labot.sniffer     
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/Users/awshx/Desktop/LaBot-master/labot/sniffer/__main__.py", line 4, in <module>
    from .network import launch_in_thread
  File "/Users/awshx/Desktop/LaBot-master/labot/sniffer/network.py", line 29, in <module>
    from ..data import Buffer, Msg
  File "/Users/awshx/Desktop/LaBot-master/labot/data/__init__.py", line 2, in <module>
    from .msg import Msg
  File "/Users/awshx/Desktop/LaBot-master/labot/data/msg.py", line 4, in <module>
    from .. import protocol
  File "/Users/awshx/Desktop/LaBot-master/labot/protocol.py", line 6, in <module>
    from .protocol_load import types, msg_from_id, types_from_id, primitives
  File "/Users/awshx/Desktop/LaBot-master/labot/protocol_load.py", line 4, in <module>
    with (Path(__file__).parent / "protocol.pk").open("rb") as f:
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/pathlib.py", line 1241, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/pathlib.py", line 1109, in _opener
    return self._accessor.open(self, flags, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/Users/awshx/Desktop/LaBot-master/labot/protocol.pk'

La console me renvoie ça, je pense que c'est vraiment un truc bête mais je vois pas. Si vous avez des idées je suis preneur, merci !

kenny94xxhell commented 3 years ago

Tu as bien généré le protocol.pk avant de lancer le sniffer ? Il faut construire le protocole d'échange des messages entre client et serveur. Le script build_protocol.py permet de faire ça.

Procédure à refaire après chaque mise à jour du client.

awshx commented 3 years ago

Merci pour ta réponse, effectivement je n'avais pas build. Lorsque j'exécute python3 build_protocol.py, j'ai une autre erreur : ModuleNotFoundError: No module named 'tqdm' Désolé ça doit encore être un truc que j'ai mal fait mais je ne vois pas. Merci

kenny94xxhell commented 3 years ago

tqdm c'est le module qui affiche les barres de progression dans la console. Il faut l'installer via pip install. C'est noté dans le ReadMe.