Update en 0.3. J'utilises maintenant aussi le fichier VERSION à côté du DofusInvoker.swf, si il n'est pas présent un warning sera affiché.

Juste pour résumer, si vous avez docker, l'utilisation est aussi simple que ça:

docker pull registry.gitlab.com/botofu/protocol_parser
docker run -v /path/to/Dofus/directory/:/data/ -it registry.gitlab.com/botofu/protocol_parser -i 2 /data/DofusInvoker.swf /data/protocol.json
# protocol.json is now in /path/to/Dofus/directory/protocol.json

J'ai rajouté le patch (le 37 dans la version 2.55.1.37 par exemple) et le type de build du client (pour l'instant il n'y a que "release" qui est supporté, mais à moins que vous ne travailliez pour Ankama, ça m'étonnerai que vous ayez accès à autre chose, sauf si un stagiaire se plante :p) au JSON généré, d'où le bump de version en 0.3.

ZyFox

salut c'est utilisable avec le c# ?

Ca dépends ce que tu veux faire.

Le principe de l'outil est que tu l'utilises comme un exécutable pour générer un JSON, et après tu analyse ce JSON avec ce que tu veux. Donc si tu suis le principe de l'outil, c'est utilisable avec n'importe quel langage qui a la capacité de lire un fichier JSON.

Si tu veux appeler les fonctions implémentées dans l'outil directement depuis le C#, ça risque d'être plus compliqué pour plusieurs raisons:

- Je n'ai pas défini d'interface C. Je ne sais pas comment le C# fait pour appeler des fonctions C++, mais si il fait comme la plupart des autres langages que je connais il lui faut une interface C (très probable).

- Je n'ai pas prévu d'exporter le projet sous forme de bibliothèque partagée. Mon point de vue actuel est qu'exporter le projet comme une bibliothèque partagée serait un investissement en temps très peu rentable, le tool étant déjà utilisable sous forme d'exécutable.

Si tu es intéressé par ça, je t'invites à ouvrir une issue sur le dépôt Gitlab. Comme je te l'ai dis, il y a peu de chances que je prenne le temps d'implémenter ça. Par contre si tu te sens de commencer le travail je ne crache pas dessus ;)

Après je n'ai qu'une connaissance très partielle (presque inexistante) du fonctionnement du C#, à toi ou aux gens plus compétents de me dire si ce que j'avance est vrai ou complètement délirant.

10 jours plus tard

Update en 0.4.

- Chaque entrée dans "fields" a maintenant un champ "position" qui donne l'ordre de sérialisation de chaque attribut. Pour les attributs sérialisés avec le BooleanByteWrapper, tous les attributs sérialisés sur un même byte auront la même valeur de "position" mais auront des valeurs différentes pour "boolean_byte_wrapper_position".

- Les attributs privés (commençant par un "_") sont maintenant cachés par défaut. Vous pouvez les re-inclure avec l'option

--ipa
. Ces champs n'étant pas sérialisés, les champs habituels peuvent être à des valeurs par défaut.

- Pour les messages et types, un nouveau champ "super_serialize" permet de savoir si il y a un appel à la méthode

serializeAs_[...]
de la classe mère en tout début de sérialisation.

- Changement du dépôt Gitlab: maintenant tout le code est sous un unique dépôt. Ça simplifie pas mal de choses pour la compilation et le CI. Le nouveau dépôt.

- Pour les gens qui sont sous Windows et qui n'ont pas envie de s'emmerder à installer Docker, un exécutable Windows est automatiquement compilé et mis à disposition avec le CI. Vous le trouverez dans un badge sur la page d'accueil du nouveau dépôt ou sur ce lien.

- Le nouveau dépôt a aussi un registery pour les images Docker. Maintenant vous avez toutes les versions du tool (à partir de la 0.3) et la dernière version taggée en

latest
. Voir sur ce lien.

ZyFox

salut c'est utilisable avec le c# ?

Regardes Flazzy comme lib en C#

Et sinon super boulot Nelimee

Hello j'ai essayé de lancer ton tool, je m'y prends mal ? Super taf en tout cas !

C:\Users\sauron\Desktop\Dofus memory reverse\dofus invoker>botofu_protocol_parser-static-x64.exe DofusInvoker.swf

[2020-04-27 14:19:59.197] [info] [/work/src/botofu/protocol/parser/main.cpp:19] Parsing SWF file provided: 'DofusInvoker.swf'...

[2020-04-27 14:19:59.198] [warning] [/work/src/botofu/swf/parser/SwfReader.cpp:41] ZLIB decompression finished a return code different than Z_STREAM_END.

[2020-04-27 14:19:59.198] [error] [/work/src/botofu/protocol/parser/main.cpp:25] Could not find a DoABC tag in the SWF file provided.

    Ashlanfox

    Hello j'ai essayé de lancer ton tool, je m'y prends mal ? Super taf en tout cas !

    Très bizarre! Ca ressemble à une erreur de décompression. Est-ce que tu pourrais uploader le DofusInvoker.swf en question et me donner le lien (soit ici, soit sur discord @Nelimee#2764)? Je testerai ce soir et je te tiens au courant!

    Juste une petite vérification: par pur hasard, est-ce que tu aurais modifié le DofusInvoker.swf? Si oui, le problème vient sûrement du fait que tu as rajouté/enlevé du code, donc changé la taille du DofusInvoker, mais pas updaté le header du SWF en conséquence.

    EDIT: je viens de voir que c'était la version Windows... Je n'ai pas vraiment testé cette version, j'ai juste testé en appelant avec --help. Le problème vient peut-être aussi de là. Est-ce que tu aurais la possibilité d'essayer avec la version Docker?

      Nelimee

      Très bizarre! Ca ressemble à une erreur de décompression. Est-ce que tu pourrais uploader le DofusInvoker.swf en question et me donner le lien (soit ici, soit sur discord @Nelimee#2764)? Je testerai ce soir et je te tiens au courant!

      Juste une petite vérification: par pur hasard, est-ce que tu aurais modifié le DofusInvoker.swf? Si oui, le problème vient sûrement du fait que tu as rajouté/enlevé du code, donc changé la taille du DofusInvoker, mais pas updaté le header du SWF en conséquence.

      EDIT: je viens de voir que c'était la version Windows... Je n'ai pas vraiment testé cette version, j'ai juste testé en appelant avec --help. Le problème vient peut-être aussi de là. Est-ce que tu aurais la possibilité d'essayer avec la version Docker?

      Effectivement sur Windows, je vais boot ma VM et le faire sur Linux no worries. Voilà mon invoker: https://we.tl/t-EgyDkFZ818

      Je te confirme que sur mon Linux ça fonctionne comme prévu. Je regarderai les soucis Windows un jour, si j'ai le courage de me setup une VM Windows.

      5 jours plus tard

      Encore une update!

      - Les types en

      Vector<...>
      sont maintenant mieux écrits dans le JSON.

      - Le code a été testé sur différentes plateformes et fonctionne avec:

      - Linux: GCC 9.3, clang 9 et clang 11

      - Windows: GCC 8.3 sur le WSL (GCC par défaut sur la distribution Debian du WSL) et MSVC 19.25.28614.0.

      Pour ceux qui essaient de compiler avec MSVC, il est possible que le premier appel à

      cmake -H. -DCMAKE_BUILD_TYPE=Release ..
      finisse prématurement sur une erreur. La cause étant les espaces dans les dossiers d'installations système de Windows (
      C:\Program Files\
      on te voit). Dans tous mes tests, relancer la même ligne de commande suffit à régler le soucis. Si ça ne fonctionne pas chez vous, formatez votre disque dur et installez un vrai système d'exploitation...

      Les compilateurs MinGW semblent avoir du mal avec certaines des dépendances (j'ai eu une segfault de GCC-MinGW en essayant de compiler

      fmt
      ).

      - MacOS: rien n'est testé, clang devrait en théorie marcher. Si ça ne marche pas, go Docker.

      - Dans tous les cas, la version Docker est recommandée. C'est la seule que je mettrais à jour automatiquement, aucune garantie sur les autres exécutables.

      Merci à @Antidéveloppeur#4072 pour sa disponibilité lors du débug de la compilation sur Windows!

      Juste pour rappeler les liens importants:

      - Le dépôt Gitlab.

      - Lien de téléchargement Windows x64.

      - Lien de téléchargement Linux x64.

      Merci de partager ces outils!

      Quelle distribution Linux utilisez-vous?

        Itsame

        Merci de partager ces outils!

        Quelle distribution Linux utilisez-vous?

        Perso je suis Fedora pour le boulot et Archlinux pour le perso!

        Fedora et Ubuntu en perso, Debian pour mes vms

        12 jours plus tard

        Nelimee

        Je n'ai pas compris ton message, de quoi est-ce que tu parles?

        yo, il parles du lien mega pour le windows x64 il me semble

        Les liens à jour seront toujours sur le Gitlab du projet. Je ne met pas à jour les liens de tous les posts que j'ai fait sur ce sujet, ça me prendrai du temps pour une utilité plus que discutable, et me connaissant il y aurait toujours un oubli.

        Donc rendez-vous sur le Gitlab de botofu, et allez dans le README du parseur de protocole, les liens sont valides.

        Je le répète encore une fois au cas où, je ne garanti rien sur la validité de ces liens dans le futur. Seule l'image docker est garantie d'être toujours à jour. Les exécutables pré-compilés par mes soins sont, en ce moment précis, à jour mais je peux avoir la flemme de les mettre à jour à n'importe quelle update. Enfin bon, en théorie je n'aurais pas besoin d'update beaucoup ;)

        20 jours plus tard