2.0 MITM D*fus

Inscrit
30 Mai 2021
Messages
4
Reactions
0
#1
Bonjour tout le monde,
La semaine dernière je me suis mis dans la tête de créer un bot dofus, j’utilise Python. Mon bot est un pixel bot, maintenant il arrive à bien détecter le blé et il est naturellement à ses premiers débuts.
Après quelques recherches aujourd’hui j’ai cru comprendre qu’une approche MITM est privilégiée à l’approche pixel/click ( c’est plus pratique de pouvoir utiliser son ordinateur en même temps ). Mes questions sont les suivantes :

Quelles ressources éducatives en Python me conseillez vous pour les bases du MITM ?

Quelles sont les grosses lignes à suivre dans l’établissement du MITM sur D*fus ?

Est ce qu’Ankama est capable de détecter efficacement les bots MITM ?

Ce sera tout pour le moment, j’ai hâte de pouvoir commencer à travailler sur cette approche et je vous remercie d’avance pour votre temps.
 
Inscrit
26 Février 2019
Messages
47
Reactions
12
#2
Quelles ressources éducatives en Python me conseillez vous pour les bases du MITM ?
Analyse - De l'Analyse des Paquets | Cadernis - Communauté de passionnés en informatique
GitHub - louisabraham/LaBot: Bot Dofus 2 en Python 3
GitHub - balciseri/PyDofus: Python 3 scripts to pack/unpack Dofus files

Quelles sont les grosses lignes à suivre dans l’établissement du MITM sur D*fus ?
Le principe est d'instaurer un proxy entre le client et le serveur qui s'occupera d'intercepter les communcations. De cette façon tu auras accès aux informations et aux actions que le personnage effectue (et la façon dont le serveur y réagit) et tu pourras automatiser ces communications.

Est ce qu’Ankama est capable de détecter efficacement les bots MITM ?
L'avantage d'un MITM est que l'entireté du protocole sera suivi par le client officiel, seuls les paquets que le bot enverra peuvent être mal implémentés, et cela signifie donc qu'il y a moins de risque d'être repéré lors d'une erreur de protocole. Il y a tout de même des sécurités qu'il faudra contourner (ou plutôt intégrer).


Finalement tout dépend du temps que tu es prêt à investir dans le développement de ton projet. MITM, Full Socket (=> réecriture entière du client) ou Pixel peuvent tous faire la même chose.
Je te renvoie vers Python - Présentation d'un bot atypique | Cadernis - Communauté de passionnés en informatique , un bot qui utilise les DLL natives afin de faire un bot pixel qui ne monopolise pas la souris si tu estimes qu'un MITM est trop technique pour toi. :)
 
Inscrit
30 Mai 2021
Messages
4
Reactions
0
#3
Analyse - De l'Analyse des Paquets | Cadernis - Communauté de passionnés en informatique
GitHub - louisabraham/LaBot: Bot Dofus 2 en Python 3
GitHub - balciseri/PyDofus: Python 3 scripts to pack/unpack Dofus files


Le principe est d'instaurer un proxy entre le client et le serveur qui s'occupera d'intercepter les communcations. De cette façon tu auras accès aux informations et aux actions que le personnage effectue (et la façon dont le serveur y réagit) et tu pourras automatiser ces communications.


L'avantage d'un MITM est que l'entireté du protocole sera suivi par le client officiel, seuls les paquets que le bot enverra peuvent être mal implémentés, et cela signifie donc qu'il y a moins de risque d'être repéré lors d'une erreur de protocole. Il y a tout de même des sécurités qu'il faudra contourner (ou plutôt intégrer).


Finalement tout dépend du temps que tu es prêt à investir dans le développement de ton projet. MITM, Full Socket (=> réecriture entière du client) ou Pixel peuvent tous faire la même chose.
Je te renvoie vers Python - Présentation d'un bot atypique | Cadernis - Communauté de passionnés en informatique , un bot qui utilise les DLL natives afin de faire un bot pixel qui ne monopolise pas la souris si tu estimes qu'un MITM est trop technique pour toi. :)
Déjà je tiens à te remercier pour ton temps, j’aime beaucoup le dernier lien que tu as partagé, ça m’inspire pas mal.
En ce qui est du MITM je suis prêt à y adhérer ( j’ai tout l’été avant que l’université reprenne ) .
Malheureusement j’ai du mal à comprendre ce qui tu as pu envoyer à ce propos, est ce que tu peux me renvoyer vers les concepts à apprendre pour me donner au MITM ? De simples mots clés seraient d’une grande, j’ai besoin de trouver des cours pour étudier toute cette science .
 
Inscrit
26 Février 2019
Messages
47
Reactions
12
#4
Parfait, tu verras les résultats sont gratifiants ! :)

Alors, le jeu est constitué d'un serveur et d'un client. Ces deux entités communiquent entre-elles en utilisant ce qu'on appelle des paquets. Lorsqu'un personnage effectue une action en jeu, il le fait savoir au serveur en lui envoyant un paquet. Et le serveur lui répond qu'il a bien compris sa demande et qu'il l'autorise, ou qu'il l'a refuse. On appelle ceci un protocole, en l'occurence celui-ci s'appelle le TCP.

Voici un petit schéma du protocole que dofus utilise:
normal.png

En MITM (= Man in the middle = homme au milieu), le programme agit comme un proxy qui intercepte la communication entre le client et le serveur. Il va alors forwarder (faire passer) tout le traffic entre les deux entités.
Voici un petit schema avec le MITM en place:
mitm.png

Mais du coup c'est quoi ces fameux paquets ? Ils prennent la forment de bytes et sont illisibles à première vue mais en réalité ils représentent du code. Ce code est le code du client, les sources de Dofus.
Pour pouvoir les comprendre il faudra alors décompiler le client. Mais pour l'instant, l'objectif est d'établir la connexion en tant que proxy.

Le but est évidemment pour pouvoir envoyer des paquets au nom du client de façon automatisée et de pouvoir surveiller ce que le serveur cherche à lui faire comprendre.

Voici les premières pistes:

Transmission Control Protocol — Wikipédia (wikipedia.org)
Frida • A world-class dynamic instrumentation framework | Inject JavaScript to explore native apps on Windows, macOS, GNU/Linux, iOS, Android, and QNX
GitHub - alexandre10044/AmaknaCore-Sniffer: Game Sniffer for Desktop Dofus 2.0+

Tu peux toujours poster tes questions dans Questions/Réponses et rejoindre le Discord pour plus d'aide.
 
Inscrit
30 Mai 2021
Messages
4
Reactions
0
#5
Parfait, tu verras les résultats sont gratifiants ! :)

Alors, le jeu est constitué d'un serveur et d'un client. Ces deux entités communiquent entre-elles en utilisant ce qu'on appelle des paquets. Lorsqu'un personnage effectue une action en jeu, il le fait savoir au serveur en lui envoyant un paquet. Et le serveur lui répond qu'il a bien compris sa demande et qu'il l'autorise, ou qu'il l'a refuse. On appelle ceci un protocole, en l'occurence celui-ci s'appelle le TCP.

Voici un petit schéma du protocole que dofus utilise:

En MITM (= Man in the middle = homme au milieu), le programme agit comme un proxy qui intercepte la communication entre le client et le serveur. Il va alors forwarder (faire passer) tout le traffic entre les deux entités.
Voici un petit schema avec le MITM en place:

Mais du coup c'est quoi ces fameux paquets ? Ils prennent la forment de bytes et sont illisibles à première vue mais en réalité ils représentent du code. Ce code est le code du client, les sources de Dofus.
Pour pouvoir les comprendre il faudra alors décompiler le client. Mais pour l'instant, l'objectif est d'établir la connexion en tant que proxy.

Le but est évidemment pour pouvoir envoyer des paquets au nom du client de façon automatisée et de pouvoir surveiller ce que le serveur cherche à lui faire comprendre.

Voici les premières pistes:

Transmission Control Protocol — Wikipédia (wikipedia.org)
Frida • A world-class dynamic instrumentation framework | Inject JavaScript to explore native apps on Windows, macOS, GNU/Linux, iOS, Android, and QNX
GitHub - alexandre10044/AmaknaCore-Sniffer: Game Sniffer for Desktop Dofus 2.0+

Tu peux toujours poster tes questions dans Questions/Réponses et rejoindre le Discord pour plus d'aide.
Donc une première étape serait d’arriver à décompiler le code client, un peu comme une résolution d’équation.
Et le sniffer c’est ce qui va me permettre de suivre les signaux c’est ça ?
Et pourquoi est ce que j’aurais besoin d’un proxy pour faire cela ? Le proxy c’est pour masquer mon adresse ?
Est ce qu’en théorie je pourrais run mon Bot MITM sur un raspberry Pi ?
Ça sera mes dernières questions pour le moment. Promis :)
 
Inscrit
4 Octobre 2015
Messages
44
Reactions
2
#6
Frida / fritm ;)
 
Inscrit
26 Février 2019
Messages
47
Reactions
12
#7
Non tu as mal compris. Le proxy est le bot, tu peux l'appeler l'intermédiaire si c'est plus parlant.
La première étape consistera a établir la connexion comme je te l'ai montré sur le second schéma.
Le sniffer sera une grande quand tu voudras analyser les communications mais c'est juste pour de l'analyse dans un premier temps. Ne te préoccupe même pas de ça pour l'instant, tiens toi en à établir la connexion.
Tu pourras bien entendu faire tourner ton bot sur n'importe quelle machine.

Comme l'a indiqué @Adharna , tu peux utiliser fritm (wrapper frida en python) pour te faciliter la tâche: fritm · PyPI
 
Inscrit
30 Mai 2021
Messages
4
Reactions
0
#8
Parfait, maintenant c’est clair comme de l’eau de roche. Merci à tous
 
Haut Bas