VB/VB.Net [MITM][DEPART] Besoin d'explications...

Inscrit
27 Mai 2016
Messages
14
Reactions
0
#1
Bonjour, merci de prendre de votre temps pour m'aider.
J'ai pour projet de faire un simple MITM dont le principal but serait de se connecter et flooder et c'est déjà assez compliqué pour un début mais je reste dans le réalisable. Rien n'est encore fondé, l'architecture du projet n'est pas encore crée et la base du projet c'est une simple form sans aucun composant.

Vous l'avez peut-être compris, je bloque. Je ne sais pas comment partir pour éviter de revenir au départ dans 10 jours à cause d'un projet mal organisé. Pour information, je code en VB.NET (que je maîtrise suffisamment) et les bases que j'ai acquises sont :
  • Comment fonctionne un MITM (le serveur envoie des informations au bot en passant par le client D2, et le bot lui répond en passant par le client D2).
  • Le protocole D2, partiellement (grâce au tutoriel de @bouh2 et tous les autres membres), j'utiliserais le Sniffer de @BlueDream .
  • Une histoire de librairie "No.Ankama" de @Sorrow ,qu'il faudrait injecter au client pour pouvoir rediriger la connexion et ainsi contrer les protections d'Ank@ma G@mes (Quand ? Où ?).
  • J'ai traduis quelques AS3 pour m'entraîner.
C'est dans une honte complète que j'appelle l'aide du peuple talentueux, ce sera rarement le cas (je l'espère) mais j'ai besoin de comprendre pour être tranquille le reste du temps. J'aimerais savoir comment m'organiser pour pas être perdu plus tard ainsi qu'une explication sur l'histoire de la connexion et de l'injection.

De ce que j'ai compris le paterne serait :
se connecter au serveur de Login grâce au port 443, déconnecter le TcpClient, le reconnecter sur le serveur de jeu (5555) grâce à HelloConnectMessage, puis grâce à ServersListMessage se connecter au serveur, une fois entré en jeu j'injecterais la librairie. C'est bien ça ? Mais comment procéder pour y parvenir ?

Je suis désolé de ma demande, j'ai aucun code à vous fournir ni même de screen.
Merci de m'avoir lu ! :)
 
Dernière édition par un modérateur:
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#2
Le dll No.Ankama tu l’injecte dès le départ au lancement de dofus :p
 
Inscrit
27 Mai 2016
Messages
14
Reactions
0
#3
Premièrement, merci de prendre de ton temps pour m'aider.

C'est noté pour le No.Ankama.dll, par contre si tu as des remarques ou autre pour le reste, je suis ouïe. Cette nuit, je m'occupe d'injecter la librairie dynamiquement et dès qu'un client est détecté et je ferais le reste demain. Je partagerais l'injecteur si tout se passe comme prévu ! :)
Le reste du parcours est bon ou je me loupe quelque part ? Le voici, sa t'évitera de remonter l'ascenseur pour rien :3
Un mongole pas intelligent a dit:
(A la bonne place) Injecter la librairie dans le client puis se connecter au serveur de Login grâce au port 443, déconnecter le TcpClient, le reconnecter sur le serveur de jeu (5555) grâce à HelloConnectMessage, puis grâce à ServersListMessage se connecter au serveur, une fois entré en jeu j'injecterais la librairie. (C'est pas à la bonne place ça. Allez, retour au début)
Pour la hiérarchie du projet j'ai pensé à quelque chose du genre :

Tu pense que cela sera assez propre ?
J'en demande peut-être trop mais c'est comme ça qu'on avance lorsqu'on est bloqué et fainéant ! :x
Merci encore pour ta réponse. N'hésite pas à me dire si cela n'est pas approprié, une aide comme celle que je demande c'est un peu mâché. Des pistes, des liens, des petits indices me suffisent, tant que mon cerrveau comprend qu'il est aidé ! xD
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#4
Salut ! Alors en fait comme l'a dit uSkeezR tu vas devoir injecter la no.ankama.dll directement dans le client avant de faire quoi que ce soit. Cette librairie ne permet pas de bypasser des sécurités mais juste de rediriger la connexion en local, donc vers ton mitm qui devra écouter sur le port de redirection pour pouvoir intercepter le client officiel.

Ensuite, tu rediriges les paquets en suivant ce schéma :

Client > MITM > Server
Server
> MITM > Client

Par exemple, tu reçois des bytes sur le stream du client, tu les réécris sur celui du serveur et inversement.

Ces bytes sont en fait des paquets, tu vas devoir les parser pour pouvoir en déduire l'id du paquet et décider si tu souhaite le renvoyer directement (donc ne pas lire le contenu, "sauter" des bytes #LaPhraseQuiPorteAConfusion)
ou le traiter (lire le contenu, et par exemple modifier ce qu'il contient .. et ensuite le renvoyer au serveur).

Le seul paquet essentiel au bon fonctionnement du mitm et le 42 ou SelectedServerDataMessage.

En gros, quand tu auras choisis ton serveur, le serveur de login va indiquer au serveur de jeu que tu arrives. Pour pouvoir te reconnaître, le serveur de login t'enverra une clef (que l'on appelle Ticket et qui est contenue dans le SelectedServerDataMessage) et dira au serveur de jeu que toi tu a cette clef. Quand tu te connectera au serveur de jeu, tu devras donc lui envoyer cette clef. Tu comprendras qu'elle est très importante et essentielle pour switcher du serveur de login au serveur de jeu. Cette clef change à chaque connexions.

Dans le SelectedServerDataMessage, il y a deux variables à changer qui sont "address" et "port".

N'oublie pas de concerver leur contenu quelque part car ce sont elles qui indiquent l'ip et le port du serveur de jeu.

En gros, tu mets "127.0.0.1", "leportquetuveux". Une fois le client connecté à ton MITM, tu te connectes à l'ip et au port que tu bien conservé au chaud et tu rediriges.

Après y'a quelques petites subtilitées mais je pense qu'avec ça tu as déjà pas mal ! N'hésite pas à demander si il y a un point que tu n'as pas compris (j'ai écris ça en one shot ..)

Tazman.
 
Inscrit
27 Mai 2016
Messages
14
Reactions
0
#5
Merci beaucoup les gens ! :D

Avant tout, petit point avancée de l'injecteur :
Je ne pensais même pas que j'y arriverais mais j'y suis finalement parvenu et en temps record ! ;)

J'ai compris ce que je codais et c'est un point important pour moi, d'autant que j'ai absolument pas copié/collé.
Je le partagerais demain si vous le souhaitez, ce sera avec plaisir que je rajouterais ma pierre à l'édifice.

@tazman59 :
Merci des informations. J'ai absolument compris tout ce que tu as dit alors je devrais réussir sans problème(s) persistant(s) et j'ai de quoi faire pendant un bon bout de temps.
Je re-lirais tout ça au propre, avec le cerveau reposé, demain.

Si un modo/admin passe par là, le sujet n'est pas clôt on sait jamais ce qui peut arriver en chemin vers la victoire (le bon exemple, Sacha devait faire 8 combats pour atteindre son but et il en est à une 20ene de saisons au final...)
Je divague ("vague !") par fatigue, au revoir mes vampires qui vivent la nuit j'ai une hibernation a faire moi ! :3
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#6
Je suis dans le même cas que toi, et les infos vont me servir aussi, je te suis dans ton projet :p Good luck !
 
Inscrit
27 Mai 2016
Messages
14
Reactions
0
#7
Ah tiens je te connais toi ! :x
Je te suis beaucoup sur d'autres forum (Che*t-G*m3 en particulier). Ce sera l'occasion de s'entre-aider entre coupaing !

Par contre, ne t'attends pas à quelque chose d'extra-ordinaire tu vas être déçu. Pour l'instant j'ai juste fais l'injecteur et j'analyse les sources du jeu et je lis beaucoup de sources de Bot pour faire un reader/writter au point.
 
Inscrit
14 Decembre 2012
Messages
48
Reactions
2
#8
Ce qui est chouette quand on construit un projet c'est qu'inconsciemment on entraîne son esprit à certaines routines, mais ce qui est nettement moins marrant c'est de les dé-apprendre parce qu'elles sont bordélique. Si c'est pour découvrir le langage ou juste toucher à un aspect de celui-ci (en mode cool Raoul), je n'ai rien dit, mais si c'est pour travailler dessus avec 'sérieux' (à ne pas prendre au mot), alors je te conseille je jeter un coup d’œil sur les façons d’agencer un projet, la nomenclature, le style guide et j'en passe.

Tout ça pour dire d'avoir une certaine rigueur dans ton 'travail', ça t'aidera énormément et à une échelle encore plus importante pour les personnes qui voudront t'aider/lire ton projet.

Bref c'est off-topic mais ça peut toujours être utile, anyway je te souhaite bonne chance dans ton parcours :)
 
Haut Bas