Analyse Authentification et chiffrement

Inscrit
11 Février 2017
Messages
5
Reactions
0
#1
Bonsoir tout le monde
Alors alors, avec wireshark j'arrive à lire la communication entre le serveur de jeu et mon client et j'ai des tas de questions:
Pour l'info j'ai pas decompiler le swf
Alors le serveur commence par m'envoyer un paquet bizzare à savoir
\x00\x05\x08\x00\x00\x06\xca\x00\x00\x06\xca\x01\x94
Je troue un peu bizzare s'agit-t-il d'une clé publique de cryptage ?
J'essaye ensuite d'envoyer le meme paquet que j'ai sniffer au préalable durant ma dernière connexion mais le serveur ne repond pas, bizzare non ?
Finalement, j'ai pu remarqué le paquet envoyé par le client est composé de deux strings et un 3 ?
le nom de comtpe et mot de passe sont chiffrés apparament si quelqu'un sait c'est quel algorithme ? c'est du genre ebcc6182be11ffd ?

PS: Très ancien joueur de dofus qui essaye de comprendre les choses
Je ne sais pas si le fait de decompiler le swf servirai à quelque chose pour etre front ..
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#2
Hello @louze ,

C'est pour Dofus 2.0 ? 1.29 ?
Ya pas mal de tutoriels sur le forum pour comprendre le protocole dans un premier temps.

Bouh2 -> https://cadernis.fr/index.php?threads/comprendre-le-protocole-de-d2-0.115/
Labo -> https://cadernis.fr/index.php?threads/de-lanalyse-des-paquets.1056/
Maxilia -> https://cadernis.fr/index.php?threads/tuto-identifier-les-packets.143/#post-871

Pour ce qui est de la décompilation du client, c'est la première chose que tu aurais du faire avant de te connecter.
C'est normal que tu ne comprennes pas ce que tu reçoives si tu ne prends pas la peine d'étudier le fonctionnement du jeu.

Tu as des sources décompilées dans la section "Mises à jour".
https://cadernis.fr/index.php?forums/mises-à-jour.104/
 
Inscrit
11 Février 2017
Messages
5
Reactions
0
#3
oui j'ai compris comment fonctionne la communication avec le serveur de dofus mais je trouve des difficultés à m'authentifier au début
si quelqu'un peut m'expliquer c'est quoi le premier messageque m'envoie le serveur de dofus et je dois envoyé quoi pour m'authentifier
Merci d'avance
 
Inscrit
11 Février 2017
Messages
5
Reactions
0
#4
J'ai oublié de mentionner qu'il de D2 si qlq peut m'aider uniquement me crafter le paquet que je dois transmettre pour m'authentifier
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#5
Le premier message est le ProtocolRequired d'ID 1.
Mais bon comme je te le dit, à l'aveugle, tu n'arriveras à rien.

Code:
package com.ankamagames.dofus.network.messages.handshake
{
   import com.ankamagames.jerakine.network.NetworkMessage;
   import com.ankamagames.jerakine.network.INetworkMessage;
   import com.ankamagames.jerakine.network.ICustomDataOutput;
   import flash.utils.ByteArray;
   import com.ankamagames.jerakine.network.CustomDataWrapper;
   import com.ankamagames.jerakine.network.ICustomDataInput;
   
   [Trusted]
   public class ProtocolRequired extends NetworkMessage implements INetworkMessage
   {
     
      public static const protocolId:uint = 1;
       
      private var _isInitialized:Boolean = false;
     
      public var requiredVersion:uint = 0;
     
      public var currentVersion:uint = 0;
     
      public function ProtocolRequired()
      {
         super();
      }
     
      override public function get isInitialized() : Boolean
      {
         return this._isInitialized;
      }
     
      override public function getMessageId() : uint
      {
         return 1;
      }
     
      public function initProtocolRequired(param1:uint = 0, param2:uint = 0) : ProtocolRequired
      {
         this.requiredVersion = param1;
         this.currentVersion = param2;
         this._isInitialized = true;
         return this;
      }
     
      override public function reset() : void
      {
         this.requiredVersion = 0;
         this.currentVersion = 0;
         this._isInitialized = false;
      }
     
      override public function pack(param1:ICustomDataOutput) : void
      {
         var _loc2_:ByteArray = new ByteArray();
         this.serialize(new CustomDataWrapper(_loc2_));
         writePacket(param1,this.getMessageId(),_loc2_);
      }
     
      override public function unpack(param1:ICustomDataInput, param2:uint) : void
      {
         this.deserialize(param1);
      }
     
      public function serialize(param1:ICustomDataOutput) : void
      {
         this.serializeAs_ProtocolRequired(param1);
      }
     
      public function serializeAs_ProtocolRequired(param1:ICustomDataOutput) : void
      {
         if(this.requiredVersion < 0)
         {
            throw new Error("Forbidden value (" + this.requiredVersion + ") on element requiredVersion.");
         }
         param1.writeInt(this.requiredVersion);
         if(this.currentVersion < 0)
         {
            throw new Error("Forbidden value (" + this.currentVersion + ") on element currentVersion.");
         }
         param1.writeInt(this.currentVersion);
      }
     
      public function deserialize(param1:ICustomDataInput) : void
      {
         this.deserializeAs_ProtocolRequired(param1);
      }
     
      public function deserializeAs_ProtocolRequired(param1:ICustomDataInput) : void
      {
         this.requiredVersion = param1.readInt();
         if(this.requiredVersion < 0)
         {
            throw new Error("Forbidden value (" + this.requiredVersion + ") on element of ProtocolRequired.requiredVersion.");
         }
         this.currentVersion = param1.readInt();
         if(this.currentVersion < 0)
         {
            throw new Error("Forbidden value (" + this.currentVersion + ") on element of ProtocolRequired.currentVersion.");
         }
      }
   }
}
 
Inscrit
11 Février 2017
Messages
5
Reactions
0
#6
Je ne comprend pas trop d'ou ramène tu ce code ? moi je ne sais pas quoi envoyer au serverur de jeu ( login ² mdp ) qu'il puisse m'authentifier
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#7
C'est normal que tu ne comprennes pas ce que tu reçoives si tu ne prends pas la peine d'étudier le fonctionnement du jeu.
D’où je sors ce code ?

Pour ce qui est de la décompilation du client, c'est la première chose que tu aurais du faire avant de te connecter.
Donc je réitère, si tu veux arriver à envoyer au moins un paquet, va falloir que tu passes du temps à étudier les sources du jeu.

Cette classe je la sors du client, de la partie network.
 
Haut Bas