[Help] Bot MITM/Socket

Inscrit
3 Aout 2015
Messages
8
Reactions
0
#1
Salut tout le monde !

C'est mon premier sujet sur le forum, j'en suis bien conscient, et je m'excuse par avance si il est mal placé (même si après m'être renseigné un peu je pense qu'il ne l'est pas).

Alors voilà, je débute dans le monde du dév de bot 2.0 et j'ai énormément de mal avec le protocole D2 et tout le bordel qui l'entoure.
En fait, j'ai beaucoup développé du temps de l'émulation 1.29, j'avais même fait un émulateur à l'époque, du coup j'avais complètement assimilé le protocole D1.29 ainsi que son mode de fonctionnement.

Mais maintenant (et ça fait un bout de temps que je me renseigne sur le sujet), j'ai du mal à comprendre comment est foutu Dofus 2 et par où commencer pour faire un bot.
J'ai donc lu plusieurs sujets qui traitent de ça, et j'ai commencé à comprendre comment étaient foutus les paquets 2.0 (le fait que ce ne soit plus des strings).
J'ai décompilé les sources de Dofus 2, je me suis même fait un petit programme permettant de retrouver le fichier .as correspondant à tel ou tel paquet (en entrant son ID), et j'ai téléchargé diverses sources de bots pour essayer de me familiariser avec le protocole.

Mais j'ai toujours beaucoup de mal à comprendre en fait, j'ai l'impression qu'un détail m'échappe ou que je n'arrive pas à comprendre la logique du truc. J'ai vu qu'il fallait aussi traduire les sources .as du jeu dans le langage voulu (du VB.Net pour moi) et les intégrer à notre bot, etc...

Mais il y a beaucoup de choses que je ne pige pas, comme les DataWriter/Reader, même pour un bot MITM je ne comprends pas trop l'utilisation du NoAnkama.dll, et donc à chaque fois il me manque un truc ne serait-ce que pour faire une connexion avec le serveur.

J'ai plus longuement analysé les sources de ShadowBot qui est pour moi le plus clair et avec le code le plus propre, mais même en ayant le code sous les yeux j'ai du mal à comprendre ce foutu protocole et comment les données sont échangées avec le serveur, ainsi que les différentes protections mises en place par Ankama.

Je fais donc appel à vous, si jamais vous avez une source d'un "bot" bien codé qui traîne (même une simple connexion au serveur pourrait m'aider), un tuto qui vous a aidé à comprendre le fonctionnement, un détail avec lequel vous avez eu du mal au début, une base de MITM, n'importe, je suis preneur et je vous en serez reconnaissant.

Je vous remercie d'avance pour l'aide que vous m'apporterez.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#3
Bonsoir et Bienvenue :D !

Déjà vu que tu viens de Dofus 1.29 je t'invite à lire le tutoriel de bouh2 qui explique l'évolution du protocol vers la 2.0.

viewtopic.php?f=41&t=218

Et pourquoi pas d'aller jeter un coup d'oeil au tutoriel de Labo qui est aussi très bien expliqué:

viewtopic.php?f=25&t=1523

En ce qui concerne tes requêtes suivantes, No.Ankama.Dll sert a rediriger la connexion du client en local pour les bots MITM.
Au part avant nous avions simplement à modifier le fichier config.xml et de modifier le port et l'adresse de connexion du client mais désormais le tout est crypté par une signature.
Tu dois donc soit patcher ton client, soit injecter la dll en question pour avoir le client connecté en local.

__________

En ce qui concerne les demandes de bots, elle sont interdites sur le forum (sources y compris). Tu peux cependant effectuer une recherche.
Tu trouveras BiM, EuuBot, Overedge Bot (Vraiment pour débutant VB) et ShadowBot qui reste assez simple tout de même.

Voilà, Bonne chance :ugeek:
 
Inscrit
3 Aout 2015
Messages
8
Reactions
0
#4
neross a dit:
Salut mopamopa2.

Je ne suis pas très bot mais plutôt serveur.
Par contre niveau protocole je te propose de regarder ce tuto : https://github.com/LuaxY/OpenDofus/wiki ... %C3%A9seau
J'ai jeté un coup d’œil, ça m'a rapidement aidé, mais je pense que je vais chercher des tutos plus détaillés et revenir sur celui-là ensuite. Merci !

BlueDream a dit:
Bonsoir et Bienvenue :D !

Déjà vu que tu viens de Dofus 1.29 je t'invite à lire le tutoriel de bouh2 qui explique l'évolution du protocol vers la 2.0.

viewtopic.php?f=41&t=218

Et pourquoi pas d'aller jeter un coup d'oeil au tutoriel de Labo qui est aussi très bien expliqué:

viewtopic.php?f=25&t=1523

En ce qui concerne tes requêtes suivantes, No.Ankama.Dll sert a rediriger la connexion du client en local pour les bots MITM.
Au part avant nous avions simplement à modifier le fichier config.xml et de modifier le port et l'adresse de connexion du client mais désormais le tout est crypté par une signature.
Tu dois donc soit patcher ton client, soit injecter la dll en question pour avoir le client connecté en local.

__________

En ce qui concerne les demandes de bots, elle sont interdites sur le forum (sources y compris). Tu peux cependant effectuer une recherche.
Tu trouveras BiM, EuuBot, Overedge Bot (Vraiment pour débutant VB) et ShadowBot qui reste assez simple tout de même.

Voilà, Bonne chance :ugeek:
Bonsoir et merci de l’accueil ! (au passage ça fait plaisir de voir un Admin/Demi-Admin qui s'implique autant)

J'étais justement entrain de lire le tutoriel de bouh2 et je commence petit à petit à comprendre le fonctionnement.
Ensuite, je n'ai pas accès au tutoriel de Labo, il est surement dans un groupe d'utilisateurs dans lequel je ne suis pas, mais lequel ?
Pour ce qui est du No.Ankama.Dll, tu confirmes bien ce que j'avais compris du but de cette lib, c'est plus niveau utilisation que j'ai du mal, mais je vais essayer de chercher un peu plus de renseignements si j'en trouve !

Pour les demandes de bots, je ne savais pas que dans le cadre du développement cela été interdit, je m'excuse du coup !

En tout cas, merci de ces renseignements précieux, je vais continuer à approfondir mes recherches !
 
Dernière édition par un modérateur:

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#5
Pour t’inscrires dans des groupes d'utilisateur, tu dois te rendre dans le Panneau de contrôle de l'utilisateur, puis dans Groupes d'utilisateurs.
Tu choisis les groupes d'utilisateur un par un auquel tu souhaites adhérer. Le tutoriel de Labo se trouve dans la partie Analyse du forum. Tu dois donc adhérer à ce groupe.
 
Inscrit
3 Aout 2015
Messages
8
Reactions
0
#6
Ah je n'avais pas du tout vu ce groupe, merci du renseignement ! :D
Bon allez, je me plonge dans tout ça ce soir, et je reviendrai si jamais je ne pige pas quelque chose, encore merci de votre aide.

Modération: Merci de ne pas citer le dernier message du sujet :D
 

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#7
Si tu veux plus de détails concernant la DLL de hook (No.Ankama.dll) je t'invite à lire ceci http://yann.voidmx.net/blog/post/miniho ... lternative
Dans l'utilisation, tu doit l'injecter dans le client Dofus à chaque démarrage de celui-ci pour rediriger le trafic vers 127.0.0.1:555 (ton bot).

Concernant l'accès aux autres forums, c'est écrit en rouge sur la page d'accueil...

Seul les membres d'un groupe peuvent écrire dans ce forum
Pour être membre d'un groupe allez dans cette section
Pour voir les sections tutos
 
Inscrit
3 Aout 2015
Messages
8
Reactions
0
#8
L'injection ça c'est pas un problème, j'ai très vite compris le principe et d'ailleurs j'ai fini mon système d'injection hier soir. En tout cas merci pour le tuto.
Là je vais essayer de voir pour le listen/send des sockets, voir si j'arrive à en tirer quelque chose, ensuite je me retaperai le tuto de bouh2 pour bien comprendre le protocole.
Je vous tiens au courant !

Modération: Merci de ne pas citer le dernier message du sujet :D
 
Inscrit
3 Aout 2015
Messages
8
Reactions
0
#9
Excusez moi du double-post, mais dans la config.xml de Dofus j'ai remarqué trois lignes (dans les constantes pour l'accès au serveur) et je me demandais à quoi elles correspondaient et si il été possible de les utiliser :

Code:
<entry key="connection.useSniffer" type="Boolean" >false</entry>
<entry key="connection.snifferHost">localhost</entry>
<entry key="connection.snifferPort" type="int">18001</entry>
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#10
La configuration n'est plus modifiable depuis de récentes mise à jour. Évites de modifier les fichiers du jeu, les modérateurs peuvent contrôler ces fichiers.
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#11
Alex, je ne suis pas sûr que ce ne soit pas modifiable. Les champs non modifiables ont un hash (comme l'ip du serveur il me semble).
Et de toutes façons, quand on injecte la DLL, on modifie les fichiers du jeu.

Je ne sais pas du tout ce qu'est le sniffer. Cherche dans les sources, tu trouveras peut-être (tu peux chercher l'accès aux valeurs du xml).
 
Inscrit
3 Aout 2015
Messages
8
Reactions
0
#12
BlueDream a dit:
La configuration n'est plus modifiable depuis de récentes mise à jour. Évites de modifier les fichiers du jeu, les modérateurs peuvent contrôler ces fichiers.
Hm je ne savais pas que toute la configuration n'était plus modifiable, ni le fait qu'ils pouvaient contrôler.
Bon de mon côté, le client se connecte bien à mon bot, maintenant faut que je trouve la suite, sûrement un paquet à envoyer de mon bot aha
 
Dernière édition par un modérateur:

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#13
Un modérateur peut contrôler les fichiers du client grâce à un hash en md5 et peut te bannir immédiatement.
 

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#14
Tu a plus d'informations à ce sujet alexandre ?
Si non tu peu override des config dans le fichier config-custom.xml me semble.
Avec la DLL aucun problème
Et le sniffer j'ai jamais ré-essayer de l'activer depuis, j'avais pas encore une bonne connaissance de dofus quand j'y avait toucher, peut-être mes tests serais plus concluant aujourd’hui.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#15
Si un modérateur contrôle les fichiers du client, tu recevras le CheckFileRequestMessage qui contiendra en string le nom du fichier à contrôler et une variable type.

Si le type = 0, le client renvoi un hachage en MD5 du length du fichier.
Si le type = 1, le client renvoi un hachage en MD5 complet de l'intégralité du contenu du fichier.

Voici un petit exemple de contrôle qu'un de mes comptes avait subit:

FileName=DofusInvoker.swf; Type=1;
FileName=/content/gfx/sprites/bones0.d2p; Type=1;
FileName=config.xml; Type=1;

Suivi du fameux Popup, donc évitez l'édition du client ou de n'importe quel fichier.
 
Haut Bas