C# MITM Sniffer

Inscrit
23 Janvier 2017
Messages
16
Reactions
0
#1
Salut salut,

Je suis à la recherche de quelqu'un qui peux m'aiguiller sur comment réaliser un Sniffer pour Dofus 1.29.
Je code en C# et en C++, je suis étudiant je manie assez bien les socket et j'aimerais donc comprendre la logique de comment doit se comporter mes Socket pour faire du MITM et ensuite sniffer les packet de Dofus 1.29.

J'ai une idée:
changer l'ip et le port par: Ip:127.0.0.1 Port:4448 dans ma config.xml, puis coder un Server qui va écouter sur l'IP 127.0.0.1 et le port 4448, pour ensuite le faire se connecter sur l'ip du serveur login de Dofus.

Mais comment m'y prendre ? le auth et le world sont séparés ? comment gérés sa en quelque mot ou si vous avez des examples de code, je suis prenneur.

Cordialement.
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#2
C'est exactement ça.
Les serveur d'auth et de jeu sont séparés, l'ip et le port du serveur de jeu sont envoyés dynamiquement dans un packet et tu devras rediger ta connexion vers cette adresse.
Pour des sources check sur github il y en a plein :)
 
Inscrit
23 Janvier 2017
Messages
16
Reactions
0
#3
J'ai fait ceci via la librairie SilverSock qui m'a l'air plus tôt simple à utiliser ayant un peu de mal avec les Socket.
Mais sa ne fonctionne pas pourtant je fais bien ce que tu me conseille de faire @tazman59 .

Merci de ton aide
 
Dernière édition:

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#4
Peux tu me dire ce qui ne fonctionne pas ?
Déjà, arrives-tu à rediriger la connexion en local ?
Je n'ai pas trop le temps d'ouvrir l'archive et de checker
 
Dernière édition:
Inscrit
23 Janvier 2017
Messages
16
Reactions
0
#5
Je n'arrive pas a redirigés la connexion pourtant je fais ceci:
C#:
Socket.ConnectTo("80.239.173.166", 443);
pour récuperer les Packet je fais simplement ceci dans un event:


C#:
 private void OnDataArrival(byte[] data)
        {
            Console.WriteLine(Encoding.UTF8.GetString(data));

            Socket.Send(data);
        }
Et d'accord le code est vraiment simpliste pas de quoi t’abîmer le cerveau, merci de ton aide @tazman59
 
Dernière édition:

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#6
Avant d'essayer de te connecter au serveur de jeu, est-ce que tu reçois bien la connexion du jeu sur ton serveur local ?
 
Inscrit
23 Janvier 2017
Messages
16
Reactions
0
#7
Avant d'essayer de te connecter au serveur de jeu, est-ce que tu reçois bien la connexion du jeu sur ton serveur local ?
Si tu parle de quand je me connecte via mon IP : Port local, alors oui ma socket reçois bien la connection et quand je ferme mon Server alors le client Dofus me dit bien
"Connexion interrompue avec le serveur."

je pense que c'est au moment de la redirection que sa cloche... Si vous avez Skype ou autre et que vous souhaitez m'aider alors communiquer le moi en MP.
Je vous remercie de votre aide.

EDIT:
J'ai utiliser System.Net.Socket et j'arrive à avoir le premier packet, mais pas la suite pourtant j'envoie via un SendTo le packet reçu sur mon Server...


Quand je reçois le packet:


Client.cs:
C#:
 while (_client.Connected)
            {
                if (_client.Available > 0)
                {
                    byte[] buffer = new byte[_client.Available];
                    _client.Receive(buffer);
                    _client.SendTo(buffer, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5558));

                    Console.WriteLine(Encoding.UTF8.GetString(buffer));
                }
            }

Pour voir ce que je reçois sur mon Server et envoyer la réponse:

Server.cs
C#:
     while(true)
                {
                    byte[] buffer = new byte[2500];


                    int bufferSize = socket.Receive(buffer);

                    byte[] packet = new byte[bufferSize];

                    Array.Copy(buffer, packet, bufferSize);

                    _server.SendTo(packet, new IPEndPoint(IPAddress.Parse("80.239.173.166"), 443));

                    Console.WriteLine(Encoding.UTF8.GetString(packet));
                }
 
Dernière édition:

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#8
Je n'y connais rien en C#, mais j'ai l'impression que tu ouvres une nouvelle connexion vers 80.239.173.166 à chaque fois. De plus, 443 est le port de SSL, je pense que tu as plutôt envie de te connecter au port en clair (5555 en 2.0, sûrement pareil en 1.29 dans mes souvenirs).
 
Haut Bas