C# Protocol D2 : Pb avec paquet id = 3 (HelloConnectMessage)

A

Anonymous

Invité
#1
Voila j'ai un petit souci avec le paquet qui à pour id 3.

Voici mon code:

Code:
switch (iIdPaquet)
            {
                case 1:
                    UInt32 required = read.ReadUINT32();
                    UInt32 currrent = read.ReadUINT32();
                    AffichageLn("Required = " + required + " - Current = " + currrent);
                break;

                case 3:
                    UInt32 connectionType = read.ReadUINT32();
                    string key = read.ReadString();
                    AffichageLn("connectionType = " + connectionType + " - key = " + key);
                break;
                    
                default:
                    AffichageLn("Paquet non référencé");
                break;
               
            }
Voici le code de D...S à la base:
Code:
        public function serializeAs_HelloConnectMessage(param1:IDataOutput) : void
        {
            param1.writeByte(this.connectionType);
            param1.writeUTF(this.key);
            return;
        }// end function
Donc voila, que je reçois le paquet je commence par lire un uint32 (donc 4 octets ou Bytes) ensuite je lis un string mais la ça bug parce-que je me retrouve à lire une chaine de 10 000 caractère ce qui est totalement impossible car la taille du paquet est de 330!!! mattez le bug!

(Rappel)
pour lire un string je lis d'abord un ushort ( 2 octets) pour connaitre le nombre de caractère à lire, ensuite je lis le tableau en ayant pour connaissance le nombre d'octet à lire.

Je sais pas si c'est moi qui à mal refait le protocole ou si j'ai rien compris mais même en décodant personnellement la chaine d'octet sa marche pas.

Ce que ça m'affiche (c'est l'affichage de mon programme):

La connexion au serveur d'authentification est réussie.
[IN ->]: 1 Taille paquet: 11 Taille Data: 8
Valeur Binaire du paquet:
0 5 8 0 0 5 148 0 0 5 148
Required = 1428 - Current = 1428

[IN ->]: 3 Taille paquet: 334 Taille Data: 330
Valeur Binaire du paquet:
0 14 1 74 0 32 103 121 57 49 114 102 112 119 104 109 70 119 60 79 101 59 40 99 92 104 91 119 120 47 77 112 44 45 61 121 120 48 1 38 48 130 1 34 48 13 6 9 42 134 72 134 247 13 1 1 1 5 0 3 130 1 15 0 48 130 1 10 2 130 1 1 0 172 252 37 55 73 109 228 241 5 139 130 87 148 27 102 166 73 40 23 28 189 191 21 81 237 28 209 236 51 174 243 128 148 73 76 76 129 16 133 177 180 253 203 115 35 51 22 178 65 131 55 164 225 213 203 179 98 88 64 117 142 200 209 3 196 230 45 177 134 12 248 167 168 107 223 196 174 203 140 253 55 193 15 30 162 159 85 202 217 18 138 169 47 125 58 217 159 251 54 100 103 175 56 42 95 106 223 249 160 27 245 112 163 59 91 130 9 49 30 255 7 51 47 252 136 201 117 185 84 91 247 6 120 199 12 171 184 81 127 189 45 91 216 59 117 177 90 68 206 34 193 47 83 157 136 53 161 99 78 186 241 97 222 243 29 52 45 159 138 187 234 115 41 186 147 185 53 36 194 74 186 44 132 214 23 89 244 176 74 149 13 26 191 145 103 167 145 198 187 141 84 54 210 174 55 34 193 174 126 225 159 104 232 28 170 156 154 88 252 90 229 167 69 134 233 97 9 107 94 37 48 15 112 29 186 45 132 187 235 57 255 4 26 133 111 255 238 20 96 101 159 59 184 195 233 61 2 3 1 0 1
connectionType = 2123641 - key = rfpwhmFw<Oe;(c\h[wx/Mp,-=yx0&0�"0
 *�H��


C'est un peu bordélique à lire. ici faut pas croire que ça marche même si ça affiche des trucs. pour le paquet 1 que j'ai reçu ça marchais mais pas pour le 2eme.

je prend le début du paquet dont l'id est 3:
0 14 1 74 0 32 103 121 57 49 114 102

je détaille
0 14 = 3 : id

1 74 = 330 : data ( donc 330 octets à lire)

1ere donnée (uint32)
0 32 103 121 = 2123641 (c 'une valeur je sais pas à quoi ça correspond)

2eme données à lire (string)
49 114 102 ... ... ...

49 114 = 12658 caractère à lire !!!! ouate the foque!!

merci de votre aide.
 
A

Anonymous

Invité
#2
Re: Protocol D2 : Pb avec paquet id = 3 (HelloConnectMessage

Tu lis un int (32bits) au lieu d'un byte (8bits), c'est assez genant.

Ton code de D. n'as pas l'air à jour, pour la 2.5.4 j'ai ceci

Code:
        public function serializeAs_HelloConnectMessage(param1:IDataOutput) : void
        {
            param1.writeUTF(this.salt);
            param1.writeShort(this.key.length);
            var _loc_2:uint = 0;
            while (_loc_2 < this.key.length)
            {
                
                param1.writeByte(this.key[_loc_2]);
                _loc_2 = _loc_2 + 1;
            }
            return;
        }// end function
Bon courage !
 
A

Anonymous

Invité
#3
Re: Protocol D2 : Pb avec paquet id = 3 (HelloConnectMessage

Ba si j'ai des sources fausses ça risquais de jamais marcher!, merci de l'aide^^

sinon tu les à trouver ou tes sources à toi?
Y a moyen que tu puisses les partager?
 
A

Anonymous

Invité
#4
Re: Protocol D2 : Pb avec paquet id = 3 (HelloConnectMessage

Fot decompiler les sources de dofus avec un decompilateur SWF comme sothink
 
A

Anonymous

Invité
#5
Re: Protocol D2 : Pb avec paquet id = 3 (HelloConnectMessage

OK , enfaite j'avais la flemme de le décompiler et je voulais savoir si qqun ne les partageais pas par hasard ;) mais si il faut le faire, je le ferai^^. Enfaite ce site il peu etre bien mais il y a bcp de fichiers/liens qui sont obselet et y a pas de trie. C'est un peu dommage.
 
A

Anonymous

Invité
#6
Re: Protocol D2 : Pb avec paquet id = 3 (HelloConnectMessage

On est jamais mieux servi que par sois même.
 
Haut Bas