MITM Officiel

Inscrit
31 Mars 2016
Messages
33
Reactions
0
#1
Salut tout le monde, j'ai développé une connexion MITM et full socket sur un serveur privé 1.29 dont le code source était très très proche de l'officiel.

Aujourd'hui j'essaye de porter mon code sur version officielle. Le full socket fonctionne bien mais pour le MITM je rencontre un problème.

En effet, actuellement en MITM, après la sélection du serveur de jeu, le serveur envoie au client un paquet AYK que j'intercepte, que je modifie puis que j'envoie au client. Ce paquet une fois modifié me permettait de pouvoir écouter un port local de mon ordinateur (indiqué dans le paquet ) pour récupérer une nouvelle socket que j'appelle socket_client_game.

Tout ça pour dire que lorsque l'on sniffe les paquets avec WPE, on remarque qu'en effet, il y a deux adresses pour les serveurs (auth et game) et que lorsqu'on passe de l'une à l'autre, la socket du client change aussi.

D’où ma question : comment récupérer cette deuxième socket client sur version officiel ? En sachant que le paquet AYK n'existe pas et qu'à la place il y a un paquet AXK qui d'après ce que j'ai compris envoie au client l'adresse/port du serveur game ainsi que le ticket nécessaire pour s'identifiquer sur le serveur game.
 

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#2
AYK existe toujours ... maintenant voici le code pour crypter l'ip avec AXK

C#:
        public static string CryptIp(string Ip)
        {
            string[] Splitted;
            Splitted = Ip.Split('.');
            string result = string.Empty;
            int Count = 0;

            for (int i = 0; i < 50; i++)
            {
                for (int l = 0; l < 50; l++)
                {
                    if (((i & 15) << 4 | l & 15) == Int32.Parse(Splitted[Count]))
                    {
                        result += ((char)(i + 48)).ToString() + ((char)(l + 48)).ToString();
                        i = 0; l = 0;
                        Count++;
                        if (Count == 4)
                            return result;
                    }
                }
            }
            return "";
        }
 
Inscrit
31 Mars 2016
Messages
33
Reactions
0
#3
Merci pour ce bout de code mais je ne comprends pas si il faut utiliser le paquet AYK ou pas ? (Je pense que non car lorsque je sniffe, je ne le trouve pas).
Ou faut-il utiliser le paquet AXK à la place ?
 
Dernière édition:

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#4
AYK fonctionne maintenant normal que tu ne peux pas le sniffer car il ne l'utilise pas sur l'officiel. Apres tu peux utiliser le AXK grace a la fonction que je t'est passer.
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#5
Ce que veut dire @neross c'est que les paquets AYK et AXK sont identiques, sauf que dans le AXK l'ip et le port sont cryptés (Ou peut-être juste l'ip je sais plus).
Donc tu devras:
- Intercepter le AXK.
- Décrypter la chaine contenue dans le paquet pour pouvoir obtenir l'ip du serveur de jeu.
- Récrypter à l'aide de l'algo que t'a fourni neross l'ip "127.0.0.1".
- Envoyer au client un paquet AXK falsifié avec ton ip cryptée dedans.

PS: Tu as l'algo pour crypter, celui pour décrypter se trouve dans les sources du jeu.

Good luck ! :p
 
Inscrit
31 Mars 2016
Messages
33
Reactions
0
#6
Merci de vos réponses, j'ai réussi de la sorte :

Lorsque je reçois le paquet AXK, je crée un paquet AYK et je l'envoi au client.

Je n'ai pas besoin de décrypter l'IP du serveur de jeu car je l'ai récupérer avec WPE et puisqu'elle est fixe, je la code en dur.
De plus, utiliser un paquet AYK ne nécessite pas de crypter l'IP.
 

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#7
C'est ce que je disais le AYK existe toujours. :)
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#8
C'est vrai qu'on peut envoyer un AYK au client ça change rien .. bien joué ;)
 
Haut Bas