Bonjour,
Je me suis lancé il y a quelques jours dans la création d’un bot dofus socket (C#) afin d’automatiser des recherches de prix dans les hôtels de vente.
Je pense avoir bien réussi la partie authentification mais je me retrouve bloqué au message : ServerSelectionMessage
Voici la liste des paquets reçus/envoyés :
Reçu : ID=4048 ProtocolRequired
Reçu : ID=4319 HelloConnectMessage
Envoyé : ID=6391 IdentificationMessage
Reçu : ID=7722 LoginQueueStatusMessage
Reçu : ID=7348 CredentialsAcknowledgementMessage
Reçu : ID=7722 LoginQueueStatusMessage
Reçu : ID=3736 IdentificationSuccessMessage
Reçu : ID=5713 ServersListMessage
J’envoie alors le message : ID=9396 ServerSelectionMessage et là le serveur met fin à la connexion :
TCP 60 5555 → 65491 [FIN, ACK] Seq=923 Ack=297 Win=28160 Len=0
En analysant le reséau avec Wireshark en jeu quand je clique sur choisir son serveur et que je clique sur le serveur Merkator, voici le paquet envoyé :
92d1 00000048 02 d201
Id,typelen + instance_id + data.length + serverId
J’ai utilisé un compteur qui s’incrémente à chaque envoi/reçu de paquet pour calculer l'instance_id. J’envoie alors le paquet :
92d1 00000009 02 d201
(l’instance id changeant légèrement en fonction du nombre de paquets reçus).
Mais du coup dès que j’envoie ce paquet, le serveur met fin à la connexion et je ne comprends pas pourquoi.
Est-ce que vous pensez que le problème peut venir de l’instance_id ? Le serveur vérifie-t-il réellement si les instances_id se suivent parfaitement ? Mais même en essayant différentes valeurs entre 8 et 15 ça ne change rien.
Ou bien alors j’ai manqué une étape ?
Je ne sais pas si ça peut avoir son importance, mais voici ce que je place comme paramètres dans le IdentificationMessage:
writer.WriteByte(0);
writer.WriteByte(2);
writer.WriteByte(59);
writer.WriteByte(4);
writer.WriteInt(5);
writer.WriteByte(0);
writer.WriteUTF("fr");
writer.WriteVarInt(credLen);
writer.WriteBytes(credentials);
writer.WriteShort(0);
writer.WriteVarLong(0);
writer.WriteShort(0);
Est-ce que quelqu'un aurait déjà eu le problème ou bien verrait ce qui cloche?
Merci d'avance,
Bonne journée.