Bonjour,
J'ai commencé une ébauche de code sous node afin de collecter des données en jeu. J'ai calqué mon code sur celui en ActionScript du swf officiel, afin de rendre mon code facilement maintenable et scalable. J'obtiens un résultat très similaire au swf officiel. Le projet n'est pas fini mais il est déjà exploitable pour commencer à l'utiliser avec nodejs.
Le but premier de ce middleware est de collecter des données de jeu (pour les envoyer à une dofapi), actuellement je le fais à la main, c'est très chronophage, peu rentable en terme de temps sur le traitement des données. Dans un premier temps ce middleware (qu'on peu aussi considérer comme une library), aura une seule interface sous forme de sniffer mais je pense créer une interface standalone pour qu'il soit entièrement indépendant du jeu mais gérer la backdoor/message n°6253 m’inquiète un peu (j'ai l'impression que je ne mesure pas encore la difficulté de traitement du RawDataMessage par rapport à ce que j'ai lu sur le forum).
Dofware :
Source : https://gitlab.com/Cldine/dofware
Prérequis :
- Npcap (il faut cocher impérativement "Install Npcap in WinPcap API-compatible Mode" lors de l'installation)
Utilisation :
# Télécharger via git clone ou via : https://gitlab.com/Cldine/dofware/-/archive/master/dofware-master.zip
git clone https://gitlab.com/Cldine/dofware.git
# Lancer
npm run main
L'avancement :
Intégration :
- [x] Phase 1 : Traiter le protocole de dof (il traite le header et le contenu des messages coupé en plusieurs parties) ;
- [_] Phase 2 : Intégrer la gestion du protocol.json :
- [X] Intégrer l'initialisation de protocol.json, et vérifier qu'on utilise la dernière version (=> en allant vérifier la version chez Ank, en imitant le fonctionnement du launcher). => Facile à faire, il faut copier ce que j'ai fais ici.
- [X] Si la version n'est pas bonne on râle, et on essaye de récupérer la dernière version automatiquement ;
- [X] Si la version est bonne on passe à la suite ;
- [X] Ajouter un système de cache de 30 minutes (?), [_] ajouter un comportement particulier le mardi ?
- [X] Présenter/Structurer le code comme un module nodejs qu'on importerait comme n'importe quels outils npm (pour citer des noms, du type: express ou socket.js) ; (pour certaine raison évidente il ne sera pas publier sur npm)
- [X] Mise en place d'un CHANGELOG suivant la norme keepachangelog et la norme semver ;
- [X] Ajout d'un README rédigé en français qui servira de doc ; (aucun intérêt à le faire en anglais, les commentaires dans le code resteront majoritairement en anglais)
- [_] Intégrer le parser/gestionnaires des messages avec protocol.json ; (je dois ajouter une boucle et un système d'event, rien de compliqué)
- [80%] S'assurer que la structure du code est viable sur le long terme afin d'éviter de sortir une major 2 mois après.
- [_] Phase 3 : Intégrer des tests unitaires et un outil d'intégration continue sur gitlab (+ un README) ;
- [_] Phase 4 : Ajouter un système d'autodiagnostic en mode sniffer pour identifier les messages outdated suite à une mise à jour ou au contraire les messages mal formés ;
- [_] Phase 5 : Supporter le message n°6253 - RawDataMessage sans pleurer (je le ferais sûrement en C++ avec node-gyp sous forme de plugin node, et je brouillerai (= obfuscate) cette partie du code).
Interface :
- [x] Sniffer - SnifferServerConnection.js ;
- [_] MITM (il faut faire une interface en s'inspirant du code d'anon) ;
- [_] Standalone (nécessite la Phase 4 d'intégration pour ne pas se faire striker) ;
- [_] Intégrer la gestion de VPN/Proxy directement via une interface dans l'application pour l'interface MITM et Standalone.
Bonus :
- [x] Maintenir un dépôt qui décompile les messages automatiquement chaque mardi : https://gitlab.com/Cldine/protocol-autoparser/-/jobs/artifacts/master/browse?job=build
- [_] Intégrer la gestion de la map à dofware (j'ai besoin de récupérer les informations pour mon petit projet).
DISCLAMER : Je ne garanti pas de finir ce projet.
Amusez-vous bien ! (Même s'il reste encore beaucoup de travail)