C# 2.0 Erreur lors de la connexion en MITM

Discussion dans 'Questions / Réponses' créé par killjulien, 9 Mai 2018.

  1. killjulien

    killjulien Membre

    Inscrit:
    28 Juillet 2016
    Messages:
    3
    J'aime reçus:
    0
    Bonsoir à tous !

    Cela fait maintenant 4 jours que j'essaie en vain de me connecter en MITM a Dofus. Après avoir suivi à peu près tous les tutos de la section tutoriel, j'ai décidé de me lancer !
    Pour ne pas partir de zéro, j'ai décidé de reprendre ces sources, surtout qu'elles sont issues de tutoriels présents sur le forum :teeth:

    Malheureusement, à chaque fois que j'essaie de me connecter sur Dofus, j'ai une exception qui est levée sur cette ligne de code :
    Code (Text):
     Array.Copy(DataToParse, index + packet_lenght_type, packet_content, 0, packet_lenght);
    Le message d'erreur :
    Voici les différentes données que j'ai lors du crash :
    upload_2018-5-9_22-38-44.png

    Y-a-t-il eu des changements concernant la gestion des paquets entre l'année dernière et cette année par rapport à ce qui a été fait dans le projet dont j'ai repris les sources ?

    Désolé, je sais que ce n'est pas grand chose, mais je ne sais pas quoi vous fournir d'autre :'(

    Merci pour votre aide !
     
  2. ToOnS

    ToOnS Membre Actif

    Inscrit:
    8 Avril 2009
    Messages:
    978
    J'aime reçus:
    51
    salut ,
    Array sourceArray, ca , bon ... ca va (287 octets , on va garder ca pour plus tard)
    int sourceIndex, ca , pareil , y'a pas de raison que ca aille pas (9 dans ce cas , on va voir ca apres ...)
    Array destinationArray, ca , tu as de la marge (trop de marge)
    int destinationIndex, bon ... ca tu vas poser a l'index 0 donc au debut du tableau ... tout va bien
    int length , le probleme est ici ,

    tu veux donc copier 71424 octets alors que ton tableau source en contient que 287 , j'imagine que tu voudrais copier seulement 287-9 octets ou meme peut etre simplement 287 octets

    ca serait d'ailleurs mieux de creer donc un array "message_content" (parceque ca c'est un message , pas un packet) de 287 (ou 287-9) octets , ca sera plus simple pour plus tard et ca evite de monopoliser de la memoire pour rien , meme si avec nos ordi modernes (de 1990 dans mon cas , soyez pas jaloux) on est pas a 72Mo pret
     
    Dernière édition: 12 Mai 2018
  3. killjulien

    killjulien Membre

    Inscrit:
    28 Juillet 2016
    Messages:
    3
    J'aime reçus:
    0
    Merci pour ta réponse. Je vais essayer de modifier la boucle qui permet de traiter les paquets reçus. Ce n'est pas évident sachant que je viens seulement de me lancer dans ce projet. Je trouve ça quand même bizarre d'avoir 71424 octets. C'est l'incrémentation de l'index qui doit merder, sachant que je suis seulement au début de la connexion et que je reçoit seulement les paquets d'id 1,3,4.
     
  4. ToOnS

    ToOnS Membre Actif

    Inscrit:
    8 Avril 2009
    Messages:
    978
    J'aime reçus:
    51
    les trucs en rouge , je suis pas sur , ca va dependre de ce que tu fais derriere
    tu as juste a changer ca :
    Array.Copy(DataToParse, index + packet_lenght_type, packet_content, 0, packet_lenght);
    par ca
    Array.Copy(DataToParse, index + packet_lenght_type, packet_content, 0, taille_du_message+taille_encodée+2); # taille du message et taille encodée que tu peux facilement trouver , https://cadernis.fr/index.php?threads/de-lanalyse-des-paquets.1056/

    mais juste avant tu creais ton tableau packet_content (enfin plutot message_content , ca fait mieu) avec un nombre de bytes egale a taille_du_message+taille_encodée+2 ,

    une fois que tu as traité ca , tu regardes si il y'a un autre message dans le packet , si index+taille_du_message+taille_encodée+2<DataToParse alors index=index+taille_du_message+taille_encodée+2 et tu recommences jusque index+taille_du_message+taille_encodée+2=DataToParse ou que index+taille_du_message+taille_encodée+2>DataToParse ,
    si c'est = alors c'est tres bien y'a plus rien a faire pour ce packet
    si c'est > alors tu as pas encore recu la fin du message , tu gardes ce que tu as en memoire (a partir du dernier index jusque la fin de DataToParse) et quand tu auras recu un autre packet alors il faudra ajouter ce que tu as gardé en memoire au debut du nouveau DataToParse
     
    Dernière édition: 12 Mai 2018
  5. killjulien

    killjulien Membre

    Inscrit:
    28 Juillet 2016
    Messages:
    3
    J'aime reçus:
    0
    Je pense que tu auras une meilleur visibilité en visualisant le code source directement ici : https://github.com/Rtxx1/MyBot/blob/master/Protocol/PackManager.cs
    Comme tu peux le voir, je bloque actuellement dans la fonction ParsePacket (à partir de la ligne 48), qui elle va appeler la fonction TreatPacket (ligne 107). Je pense qu'en visualisant le code ce sera plus simple pour toi de m'aider :teeth:

    D'après toi je peux me baser sur ces sources comme base, ou je devrais partir de zéro ?
     

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.