Analyse Comment lire ce paquet

Inscrit
26 Février 2016
Messages
82
Reactions
0
#1
Bonjour, actuellement je travaille sur un émulateur d'un jeu, et après avoir envoyé le cross-domain, le serveur doit envoyer au client ce paquet :


Avec un autre sniffeur, je trouve ça :



J'ai regardé du côté du code source du client, et cette classe m'intrigue :



Code complet : http://pastebin.com/CwRRyFaY
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#2
Sur wpe pro le contenu des packets est directement affiché en hex contrairement à ton autre sniffer qui essaye de l'afficher en string donc sa fait des caractères fucked
 
Inscrit
26 Février 2016
Messages
82
Reactions
0
#3
Sur wpe pro le contenu des packets est directement affiché en hex contrairement à ton autre sniffer qui essaye de l'afficher en string donc sa fait des caractères fucked
Oui mais justement, lorsque je reçois les données du client depuis mon émulateur en C#, ça m'affiche ces caractères bizarres car le jeu doit avoir une clé d'encryption quelque chose du genre car ces caractères bizarres sont bien ceux qui sont envoyé au serveur après avoir tout crypté
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#4
Y'a rien d'encrypté je pense ^^' (c'est pas parceque tu ne reçoit plus du texte plein avec tes trucs XML comme tu avais au début que le packet est encrypté) comment tu affiche ce que tu reçoit ? Essaye de rajouter sa BitConverter.ToString(data).Replace("-", " "); tu verra le résultat sera le même que sur wpe pro
 
Inscrit
26 Février 2016
Messages
82
Reactions
0
#5
Y'a rien d'encrypté je pense ^^' (c'est pas parceque tu ne reçoit plus du texte plein avec tes trucs XML comme tu avais au début que le packet est encrypté) comment tu affiche ce que tu reçoit ? Essaye de rajouter sa BitConverter.ToString(data).Replace("-", " "); tu verra le résultat sera le même que sur wpe pro
Car actuellement il existe aucun émulateur/bot sur ce jeu car j'avais vu plusieurs développeurs essayer d'en faire un mais impossible avec leurs cryptés qui sont full crypté et normalement il utilise une clé d'encryption ce qui rend l'affaire encore plus compliqué, je te parle des paquets qui sont avec les caractères bizarres, car le client lit les paquet comme ça. Ce que tu m'as donner donne juste le hex sauf que je ne peux pas envoyer des hex depuis mon ému je pense car il faut savoir à quoi il corresponde ^^
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#6
Quel est le nom du jeu ?
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#8
Bon alors j'ai décompilé les sources, et dans le fichier net/SocketMessage.as, on dirait qu'il y a une fonction de codage et une fonction de décodage :)
Code:
     public function readMessage(param1:ByteArray) : *
      {
         var _var2_:* = 0;
         while(_var2_ < param1.length)
         {
            if(param1[_var2_] == 1)
            {
               _var2_++;
               this.writeByte(param1[_var2_] == 2?1:0);
            }
            else
            {
               this.writeByte(param1[_var2_]);
            }
            _var2_++;
         }
         bitLength = length * 8;
      }
    
      public function exportMessage() : ByteArray
      {
         var _var1_:* = new ByteArray();
         var _var2_:* = 0;
         while(_var2_ < this.length)
         {
            if(this[_var2_] == 0)
            {
               _var1_.writeByte(1);
               _var1_.writeByte(3);
            }
            else if(this[_var2_] == 1)
            {
               _var1_.writeByte(1);
               _var1_.writeByte(2);
            }
            else
            {
               _var1_.writeByte(this[_var2_]);
            }
          
            _var2_++;
         }
         return _var1_;
      }
 
Inscrit
26 Février 2016
Messages
82
Reactions
0
#9
Bon alors j'ai décompilé les sources, et dans le fichier net/SocketMessage.as, on dirait qu'il y a une fonction de codage et une fonction de décodage :)
Code:
     public function readMessage(param1:ByteArray) : *
      {
         var _var2_:* = 0;
         while(_var2_ < param1.length)
         {
            if(param1[_var2_] == 1)
            {
               _var2_++;
               this.writeByte(param1[_var2_] == 2?1:0);
            }
            else
            {
               this.writeByte(param1[_var2_]);
            }
            _var2_++;
         }
         bitLength = length * 8;
      }
  
      public function exportMessage() : ByteArray
      {
         var _var1_:* = new ByteArray();
         var _var2_:* = 0;
         while(_var2_ < this.length)
         {
            if(this[_var2_] == 0)
            {
               _var1_.writeByte(1);
               _var1_.writeByte(3);
            }
            else if(this[_var2_] == 1)
            {
               _var1_.writeByte(1);
               _var1_.writeByte(2);
            }
            else
            {
               _var1_.writeByte(this[_var2_]);
            }
        
            _var2_++;
         }
         return _var1_;
      }
Intéréssent ! Il faudrait que je refasse le même mécanisme en C# si j'ai bien comprit ?
Pour info, cette classe hérite bien de "Binary", donc il y a forcement un lien :)
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#10
Intéréssent ! Il faudrait que je refasse le même mécanisme en C# si j'ai bien comprit ?
Pour info, cette classe hérite bien de "Binary", donc il y a forcement un lien :)
Oue, essaye de refaire le code readMessage en C# et ensuite essaye de lire ton packet voir
 
Inscrit
26 Février 2016
Messages
82
Reactions
0
#11
D'après ce que m'a dit un ancien développeur, ils utilisent un encodage spécial mais pas d'encryption.
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#12
T'as essayé alors ? Tu sais, c'est vraiment pas dur de reprendre le code de mon sniffeur, de changer le filtre et de mettre une fonction d'action qui décode et affiche les paquets.
 
Inscrit
26 Février 2016
Messages
82
Reactions
0
#13
T'as essayé alors ? Tu sais, c'est vraiment pas dur de reprendre le code de mon sniffeur, de changer le filtre et de mettre une fonction d'action qui décode et affiche les paquets.
Justement, la fonction pour décoder j'en ai aucune idée, car il utilise un encodage assez complexe vu ce qu'affiche le paquet
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#14
T'as lu les messages précédents du topic ?
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#15
Tout est dans les sources du jeu de toute manière.
 
Haut Bas