Message 101 Dofus socket

Inscrit
20 Aout 2016
Messages
28
Reactions
0
#1

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#2
Cherche dans les sources de dofus

Code:
= 101;
 
Inscrit
25 Février 2012
Messages
178
Reactions
3
#3
ça correspond au HelloGameMessage
 
Inscrit
10 Mai 2015
Messages
357
Reactions
55
#4
Apokah le recopieur il fait comme Alexandre il met en gras ce qui est important. ;)
 
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#5
Voilà, ça j avais suivi dans le tutorial, mais ensuite, comment arriver à tirer quelque chose du code de HelloGameMessage, c'est une autre affaire :(!
Auriez vous des indices?
Merci pour vos réponses
 
Dernière édition:
Inscrit
25 Février 2012
Messages
178
Reactions
3
#6
Apokah le recopieur il fait comme Alexandre il met en gras ce qui est important. ;)
Franchement j'ai même pas notice qu'Alex faisait la même :rire:
 
Inscrit
18 Février 2015
Messages
228
Reactions
7
#7
Voilà, ça j avais suivi dans le tutorial, mais ensuite, comment arriver à tirer quelque chose du code de HelloGameMessage, c'est une autre affaire :(!
Auriez vous des indices?
Merci pour vos réponses
grace au classe dérivé de la classe NetworkMessage elle contient deux méthodes une méthode Sérialize (écrire) et une autre Deserialize (lire) qui te permettront soit de lire quand tu recoit du data soit d'écrire pour l'envoi au serveur grace au Writer et au Reader qui se trouve dans la Classe CustomDataWrapper
 
Dernière édition:
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#8
Merci Fallen !
Je regarderais ca en rentrant!
 
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#9
Je viens d'examiner ça
Je vois que les sources ne m'inspirent pas plus que ça :(!
Je sais qu'il va falloir envoyer un packet, mais je ne sais pas quel contenu je vais pouvoir y mettre ....
 
Inscrit
18 Février 2015
Messages
228
Reactions
7
#10
Je viens d'examiner ça
Je vois que les sources ne m'inspirent pas plus que ça :(!
Je sais qu'il va falloir envoyer un packet, mais je ne sais pas quel contenu je vais pouvoir y mettre ....
le contenu de chaque packet se trouve dans sa classe correspondante regarde dans le dossier com/ankamagames/dofus/Network/Messages
 
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#11
Seulement dans HelloGameMessage j'ai un
Code:
 public function initHelloGameMessage() : HelloGameMessage
      {
         return this;
      }
Donc il nécessite aucun paramètre.
Ensuite je ne sais plus comment procéder car j envois un packet vide avec l ID 101 du coup...
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#12
ou est le probléme? jais pas les source sous les yeux mais normalement le 101 ne contiens aucun paramétre tu envoie juste ton packet avec un length de 0
 
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#13
C'est ce que je fait!
Code:
 private void TreatPacket(int PacketID, byte[] PacketContent)
        {
            DataReader reader = new DataReader(PacketContent);
            Log(PacketID.ToString() + "\n");
            switch (PacketID)
            {
                case 1:
                    int required = reader.ReadInt();
                    int currrent = reader.ReadInt();
                    Log("Required = " + required + " - Current = " + currrent + "\r\n");
                    break;
                case 3:
                    int connectionType = reader.ReadByte();
                    string key = reader.ReadString();
                    Log("ConnectionType = " + connectionType + " - Key = " + key + "\r\n");

                    string mdp_hash = MD5(MD5(accountPasswdTextBox.Text) + key); // Hachage du mot de passe
                    DataWriter writer = new DataWriter();
                    writer.WriteByte(2);
                    writer.WriteByte(3);
                    writer.WriteByte(7);
                    writer.WriteShort(35100);
                    writer.WriteByte(0);
                    writer.WriteByte(0);
                    writer.WriteString(accountNameTextBox.Text);
                    writer.WriteString(mdp_hash);
                    writer.WriteShort(0);
                    writer.WriteBool(true);
                    _Socket.Send(writer.Pack(4));
                    break;
                case 20:
                    MessageBox.Show("Authentification ratée !");
                    break;
                case 22:
                    reader.ReadByte();
                    MessageBox.Show("Salut " + reader.ReadString());
                    break;
                case 101:
                    DataWriter _helloGameMsg = new DataWriter();
                    _Socket.Send(_helloGameMsg.Pack(101));
                    Log("packet envoyé");
                    break;
            }

        }
Mais le code ne s'execute plus après le break du case 101 :( !
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#14
Après le HelloGameMessage tu dois envoyer ton tiquet, c'est quoi comme bot ? Un Full Socket ou MITM ?
 
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#15
Mon tiquet ?
Full socket !
 
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#16
Je vais vous éclairer un peu car je pense qu'il vous est difficile de visualiser la chose!
Voici le topic que j'ai suivi pour créer mon interface et mon code: https://cadernis.fr/index.php?threads/tutoriel-débuter-dans-le-développement-socket-d2-complet.162/

Ensuite, j'ai lu ton article BlueDream: https://cadernis.fr/index.php?threads/en-tete-tcp-et-protocole-connexion.1363/#post-15965
Mais pour le HelloGameMessage, même après l'envoi d un packet vide avec pour ID 101, rien ne reviens...
Voici mon Log:
Code:
La connexion au serveur d'authentification est réussie.
[Reçu] ID = 1 | Taille du contenu = 8
00 00 06 B5 00 00 06 B5
Required = 1717 - Current = 1717

[Reçu] ID = 101 | Taille du contenu = 0

packet envoyé
Pour ceux qui veulent voir le code, je vous le donne ici (il n'y a pas grand chose (tout est dans Form1.cs)): http://univ-avignon-ayache.alwaysdata.net/DofusBot.zip
Merci d'avance pour votre aide
 
Dernière édition par un modérateur:

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#17
Tu dois envoyer le paquet AuthenticationTicketMessage.
 
Inscrit
20 Aout 2016
Messages
28
Reactions
0
#18
Je procède comme tel pour l'instant:
- Je me connecte à Dofus via un socket (_Socket.Connect("213.248.126.78", 5555))
- Je l'écoute
- La première chose que je reçois est un packet avec l'ID 1
- Je ne fais rien
- Je reçois un packet HelloGameMessage de taille 0 (ID 101), je renvois un packet AuthenticationTicketMessage vide (ID 110)
- Je reçois plus rien

Qu'est ce qui cloche? Merci d'avance
 
Inscrit
10 Mai 2015
Messages
357
Reactions
55
#20
AuthenticationTicketMessage : Vu que tu es en fuul socket tu dois envoyer dans le paramètre lang la langue et dans le paramètre ticket tu dois renvoyer le ticket que tu as reçu dans le paquet 42 mais tu dois le décrypter avec la clef random que tu initialises et que tu mets dans les crédentials du identificationticketmessage.

JavaScript:
public function decodeWithAES(param1:*) : ByteArray
      {
         var _loc4_:int = 0;
         var _loc2_:ICipher = Crypto.getCipher("simple-aes256-cbc",this._AESKey,new NullPad());
         this._AESKey.position = 0;
         var _loc3_:ByteArray = new ByteArray();
         _loc3_.writeBytes(this._AESKey,0,16);
         if(param1 is Vector.<int> || param1 is Vector.<uint>)
         {
            _loc4_ = 0;
            while(_loc4_ < param1.length)
            {
               _loc3_.writeByte(param1[_loc4_]);
               _loc4_++;
            }
         }
         else if(param1 is ByteArray)
         {
            _loc3_.writeBytes(param1 as ByteArray);
         }
         else
         {
            throw new ArgumentError("Argument must be a bytearray or a vector of int/uint");
         }
         _loc2_.decrypt(_loc3_);
         return _loc3_;
      }
Ah oui et je suppose que tu renvoies un checkintegritymessage vide ?
 
Haut Bas