[D2] Le client compte les messages ! Des conséquences pour les MITM ?

Discussion dans 'Général' créé par Labo, 24 Mars 2018.

  1. Labo

    Labo Membre Actif

    Inscrit:
    16 Août 2013
    Messages:
    797
    J'aime reçus:
    59
    Salut, j'étais en train de reprendre mes LaBot-Tools pour tester mon nouveau protocol builder, et il bloquait au premier message envoyé par le client.
    En fait, je me suis aperçu que c'était parce qu'il bloquait au message 4 : "0012000000030117…"
    En effet, mon code lisait le header de 18 donc message 4 et taille de la longueur 2, donc longueur 0 et ça marchait pas.
    Là j'ai repris les sources, et j'ai découvert

    Code (ActionScript):
          public function writePacket(param1:ICustomDataOutput, param2:int, param3:ByteArray) : void
          {
             var _var5_:uint = 0;
             var _var6_:uint = 0;
             var _var4_:uint = computeTypeLen(param3.length);
             param1.writeShort(subComputeStaticHeader(param2,_var4_));
             param1.writeUnsignedInt(this._instance_id);
             switch(_var4_)
             {
                case 0:
                   return;
                case 1:
                   param1.writeByte(param3.length);
                   break;
                case 2:
                   param1.writeShort(param3.length);
                   break;
                case 3:
                   _var5_ = param3.length >> 16 & 255;
                   _var6_ = param3.length & 65535;
                   param1.writeByte(_var5_);
                   param1.writeShort(_var6_);
             }
             param1.writeBytes(param3,0,param3.length);
          }
     
    Du coup, le client compte le nombre de messages. Est-ce que Ankama utilise ça pour ban ?
     
  2. DevChris

    DevChris Membre

    Inscrit:
    12 Avril 2017
    Messages:
    83
    J'aime reçus:
    31
    Personnellement ban je pense pas, mais ce qui est sur c’est que sans ca marche pas
     
  3. Labo

    Labo Membre Actif

    Inscrit:
    16 Août 2013
    Messages:
    797
    J'aime reçus:
    59
    Tu veux dire que si le compte de messages est pas bon ça marche pas ?
     
  4. BlueDream

    BlueDream Administrateur Membre du personnel

    Inscrit:
    8 Décembre 2012
    Messages:
    1 874
    J'aime reçus:
    258
    Bah tu comptes toi aussi le nombre de paquets qui transitent, en soustrayant le nombre de paquets que ton MITM envoit.
    Tu auras donc le nombre de paquets officiels.
     
  5. isodidacte

    isodidacte Membre

    Inscrit:
    18 Février 2017
    Messages:
    105
    J'aime reçus:
    7
    Je pense que c'est un moyen qu'ils ont trouvé pour complexifier l'émulation
     
  6. Labo

    Labo Membre Actif

    Inscrit:
    16 Août 2013
    Messages:
    797
    J'aime reçus:
    59
    @BlueDream tu veux dire en additionnant, non ?
     
  7. Brizze

    Brizze Rédacteur

    Inscrit:
    10 Mai 2015
    Messages:
    280
    J'aime reçus:
    28
    C'est pas du tout le but, en quoi ce serait plus compliquer de faire un serveur dofus ?
     
  8. isodidacte

    isodidacte Membre

    Inscrit:
    18 Février 2017
    Messages:
    105
    J'aime reçus:
    7
    En ajoutant une fonction non-essentielle en soi mais fondamentalement au système d'envoi/réception
    Après cela n'est que mon avis
     
  9. BlueDream

    BlueDream Administrateur Membre du personnel

    Inscrit:
    8 Décembre 2012
    Messages:
    1 874
    J'aime reçus:
    258
    Le client réactualise l'instance_id selon le dernier paquet du serveur. Cela permet que malgré le spam d'un même paquet, l'instance_id ne soit pas décalée. Si tu trafiques le paquet du serveur, tu pourras avoir un instance_id cohérent.
     
  10. Brizze

    Brizze Rédacteur

    Inscrit:
    10 Mai 2015
    Messages:
    280
    J'aime reçus:
    28
    Le client envoie l'instanceId mais les paquets du serveur ne contiennent pas d'instance_id.
     
  11. Brizze

    Brizze Rédacteur

    Inscrit:
    10 Mai 2015
    Messages:
    280
    J'aime reçus:
    28
    Enfaite la seule chose que tu devras changer dans ton émulateur c'est la lecture d'un packet en provenance du client et quand bien même tu serais pas capable d'adapter ton émulateur pour faire un ReadUint sur ton parser, tu peux modifier le bytecode du client pour supprimer cette simple ligne.
     

En naviguant sur ce site web, vous acceptez les Termes et Conditions d'utilisation. Tout le contenu que vous pourrez trouver sur ce site est soumis à la license Creative Commons.