Analyse Probleme d'analyse manuelle

Inscrit
13 Février 2020
Messages
1
Reactions
0
#1
Bonjour a tous! Je suis nouveau sur ce forum et j'y ai appris plein de chose donc je vous en remercie.
Apres avoir lu je pense tous les tutos en lien avec mon problème je doit surement passer a coté de quelque chose.

Avec wireshark j'ai récupéré le message contenant les informations de la map sur laquelle j'arrive (lors d'un changement de map).

23 ce 02 7c ad 01 41 a6 b8 14 00 00 00 00 00 00 00 04 0b da 42 5b c0 a0 80 34 40 00 0b cf 00 fc 00 01 00 05 5a

pour le debut biensur 23 ce signifie 100011110011 = 2291 et 10 = 2. la taille du message est donc 02 7c = 636

voila le debut du deserialize associé:
Code:
public function deserializeAs_MapComplementaryInformationsDataMessage(input:ICustomDataInput) : void

      {

         var _id3:uint = 0;

         var _item3:HouseInformations = null;

         var _id4:uint = 0;

         var _item4:GameRolePlayActorInformations = null;

         var _id5:uint = 0;

         var _item5:InteractiveElement = null;

         var _item6:StatedElement = null;

         var _item7:MapObstacle = null;

         var _item8:FightCommonInformations = null;

         this._subAreaIdFunc(input);

         this._mapIdFunc(input);

         var _housesLen:uint = input.readUnsignedShort();

         for(var _i3:uint = 0; _i3 < _housesLen; _i3++)

         {

            _id3 = input.readUnsignedShort();

            _item3 = ProtocolTypeManager.getInstance(HouseInformations,_id3);

            _item3.deserialize(input);

            this.houses.push(_item3);

         }

         var _actorsLen:uint = input.readUnsignedShort();

         for(var _i4:uint = 0; _i4 < _actorsLen; _i4++)

         {

            _id4 = input.readUnsignedShort();

            _item4 = ProtocolTypeManager.getInstance(GameRolePlayActorInformations,_id4);

            _item4.deserialize(input);

            this.actors.push(_item4);

         }
donc subAreaId = 60 41 = 24641
MapId = 41 a6 b8 14 00 00 00 00
Houseslen = 00 00 = 0
actorslen = 00 04 = 4
et id3 = 0b da = 3034

apres je deserialize GameRolePlayActorInformations

Code:
public class GameRolePlayActorInformations extends GameContextActorInformations implements INetworkType{

public function deserializeAs_GameRolePlayActorInformations(input:ICustomDataInput) : void
      {
         super.deserialize(input);
      }
}
donc je deserialize GameContextActorInformations

Code:
public class GameContextActorInformations extends GameContextActorPositionInformations implements INetworkType
   {
    public function deserializeAs_GameContextActorInformations(input:ICustomDataInput) : void
      {
         super.deserialize(input);
         this.look = new EntityLook();
         this.look.deserialize(input);
      }
    }
Donc je deserialize en premier GameContextActorPositionInformations et ensuite EntityLook

Code:
public function deserializeAs_GameContextActorPositionInformations(input:ICustomDataInput) : void
      {
         this._contextualIdFunc(input);
         var _id2:uint = input.readUnsignedShort();
         this.disposition = ProtocolTypeManager.getInstance(EntityDispositionInformations,_id2);
         this.disposition.deserialize(input);
      }
      
private function _contextualIdFunc(input:ICustomDataInput) : void
      {
         this.contextualId = input.readDouble();
         if(this.contextualId < -9007199254740990 || this.contextualId > 9007199254740990)
         {
            throw new Error("Forbidden value (" + this.contextualId + ") on element of GameContextActorPositionInformations.contextualId.");
         }
      }
donc contextualid = 42 5b c0 a0 80 34 40 00
puis on a un short: 0b cf
ensuite je deserialize EntityDispositionInformations

Code:
public function deserializeAs_EntityDispositionInformations(input:ICustomDataInput) : void
      {
         this._cellIdFunc(input);
         this._directionFunc(input);
      }
      
private function _cellIdFunc(input:ICustomDataInput) : void
      {
         this.cellId = input.readShort();
         if(this.cellId < -1 || this.cellId > 559)
         {
            throw new Error("Forbidden value (" + this.cellId + ") on element of EntityDispositionInformations.cellId.");
         }
      }
      
      private function _directionFunc(input:ICustomDataInput) : void
      {
         this.direction = input.readByte();
         if(this.direction < 0)
         {
            throw new Error("Forbidden value (" + this.direction + ") on element of EntityDispositionInformations.direction.");
         }
      }
et donc cellid = 00 fc
et direction = 00

et pour EntityLook

Code:
public function deserializeAs_EntityLook(input:ICustomDataInput) : void
      {
         var _val2:uint = 0;
         var _val3:int = 0;
         var _val4:int = 0;
         var _item5:SubEntity = null;
         this._bonesIdFunc(input);
         var _skinsLen:uint = input.readUnsignedShort();
         for(var _i2:uint = 0; _i2 < _skinsLen; _i2++)
         {
            _val2 = input.readVarUhShort();
            if(_val2 < 0)
            {
               throw new Error("Forbidden value (" + _val2 + ") on elements of skins.");
            }
            this.skins.push(_val2);
         }
         ...
Donc BonesID = 01 00
et c'est la que je trouve un probleme:
skinslen = 05 5a = 1370 ce qui fait plus que le nombre d'octet dans le paquet
Est-ce que quelqu'un arrive a voir ou est l'erreur ou simplement est capable de me dire ou se trouve vraiment le short skinslen?
Merci d'avance
 
Dernière édition:
Haut Bas