- Inscrit
- 31 Janvier 2021
- Messages
- 5
- Reactions
- 1
Bonjour,
Je suis depuis quelques temps ce forum où j'ai pu trouver des pépites en termes d'informations sur le reverse de Dofus2, et qui m'ont beaucoup aidé dans la fabrication d'un bot Mitm maison. Donc du coup avant tout et comme c'est mon premier message sur le forum, je tiens à remercier la communauté et ceux qui ont partagé différents ressources sur le sujet !
Donc le contexte : je développe un bot mitm, qui actuellement est capable de de voir les messages reçus et envoyés depuis le client, couplé par autoit pour automatiser des actions. Sauf que ce dernier me convient pas : par exemple sur mon module de bot chasse, je le laisse tourner sur un 2eme écran et en attendant je fais autre choses, comme développer ! Et bien l'autoit pour les clic sur une fenêtre sans avoir le focus de cette dernière c'est bien, mais dès qu'il s'agit de devoir taper du texte pour chercher un zaap ou lancer la commande /travel, sans le focus de la fenêtre il y a parfois des effets de bords. Puis j'ai aussi la problématique que quand je clique sur la map pour le déplacement, parfois j'aggro un montre sans le vouloir...
Donc du coup en analysant les paquets qui partaient, je me suis dit que ça serait plus simple d'envoyer mes propres paquets (surtout pour le déplacement).
En analysant les systèmes de sécurités, je comprends que certains messages envoyés au serveur sont suffixé de leur propre hash, où la fonction de hashage est envoyée par ce fameux paquet RawDataMessage. Analyser et interpréter ce message n'est pas un soucis, mais je me suis heurté à un problème.
Dans la méthode addCryptedHash (HumanCheck.as du RawDataMessage), une variable hashKey est initialisé à partir d'une valeur qui s'appelle le gameServerTicket, et cette dernière ce n'est rien d'autre que la valeur ticket décodée avec AES d'un précédent message SelectedServerDataMessage.
Pour décoder moi-même ce ticket en interceptant le message SelectedServerDataMessage, je me rends compte qu'il me faut une valeur appelée aesKey générée par le client de manière aléatoire.
Je vois que cette valeur est envoyée au serveur dans les credentials dans le IdentificationMessage, où credentials est chiffré en RSA, donc à priori pas possible de récupérer cette valeur ici.
Donc ma question : est-il possible réellement de récupérer cette valeur qui est l'aesKey ? Peut-être avec des pointeurs en mémoire (mais bon ça m'a l'air un peu complexe comme solution ^^).
Je me suis posé la question à un moment de "tricher" et utiliser un client dofus modifié, avec un script qui applique mon patch de modification à chaque mis à jour, tout en interceptant et falsifiant la réponse du CheckFileMessage histoire de faire passer ça inaperçu aux yeux des modos.
J'espère avoir été à peu près clair, et merci d'avance pour votre aide !
Je suis depuis quelques temps ce forum où j'ai pu trouver des pépites en termes d'informations sur le reverse de Dofus2, et qui m'ont beaucoup aidé dans la fabrication d'un bot Mitm maison. Donc du coup avant tout et comme c'est mon premier message sur le forum, je tiens à remercier la communauté et ceux qui ont partagé différents ressources sur le sujet !
Donc le contexte : je développe un bot mitm, qui actuellement est capable de de voir les messages reçus et envoyés depuis le client, couplé par autoit pour automatiser des actions. Sauf que ce dernier me convient pas : par exemple sur mon module de bot chasse, je le laisse tourner sur un 2eme écran et en attendant je fais autre choses, comme développer ! Et bien l'autoit pour les clic sur une fenêtre sans avoir le focus de cette dernière c'est bien, mais dès qu'il s'agit de devoir taper du texte pour chercher un zaap ou lancer la commande /travel, sans le focus de la fenêtre il y a parfois des effets de bords. Puis j'ai aussi la problématique que quand je clique sur la map pour le déplacement, parfois j'aggro un montre sans le vouloir...
Donc du coup en analysant les paquets qui partaient, je me suis dit que ça serait plus simple d'envoyer mes propres paquets (surtout pour le déplacement).
En analysant les systèmes de sécurités, je comprends que certains messages envoyés au serveur sont suffixé de leur propre hash, où la fonction de hashage est envoyée par ce fameux paquet RawDataMessage. Analyser et interpréter ce message n'est pas un soucis, mais je me suis heurté à un problème.
Dans la méthode addCryptedHash (HumanCheck.as du RawDataMessage), une variable hashKey est initialisé à partir d'une valeur qui s'appelle le gameServerTicket, et cette dernière ce n'est rien d'autre que la valeur ticket décodée avec AES d'un précédent message SelectedServerDataMessage.
Pour décoder moi-même ce ticket en interceptant le message SelectedServerDataMessage, je me rends compte qu'il me faut une valeur appelée aesKey générée par le client de manière aléatoire.
Je vois que cette valeur est envoyée au serveur dans les credentials dans le IdentificationMessage, où credentials est chiffré en RSA, donc à priori pas possible de récupérer cette valeur ici.
Donc ma question : est-il possible réellement de récupérer cette valeur qui est l'aesKey ? Peut-être avec des pointeurs en mémoire (mais bon ça m'a l'air un peu complexe comme solution ^^).
Je me suis posé la question à un moment de "tricher" et utiliser un client dofus modifié, avec un script qui applique mon patch de modification à chaque mis à jour, tout en interceptant et falsifiant la réponse du CheckFileMessage histoire de faire passer ça inaperçu aux yeux des modos.
J'espère avoir été à peu près clair, et merci d'avance pour votre aide !