IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Rejouer un flux enregistré au format pcap en temps différé


Sujet :

Réseau C

  1. #1
    Invité(e)
    Invité(e)
    Par défaut Rejouer un flux enregistré au format pcap en temps différé
    Bonjour,

    Il y a quelque temps, j'ai été amené à travailler sur un protocole UDP multicast pour de la transmission de données.

    Il y avait un calculateur qui fournissait des info en UDP et un client qui les affichait.


    Tout fonctionnait bien, on a été sur le terrain avec nos machines, rien à dire.
    Pour faire des rejeux dans les même conditions, nous avons enregistré les flux arrivant sur la machine cliente au format pcap (avec wireshark ou tcpdump)

    Aujourd'hui, je voudrai re-travailler avec les flus enregistrer sur le terrain, mais je ne peux pas le faire en temps réel (machines différentes, travail sur le flux différent).

    J'ai donc repris un bout du client et j'ai voulu remplacer les appels à recvfrom par des appel à pcap_next[_ex]... Et c'est là que ça coince.

    Je me dis :

    • Soit recvfrom et pcap_next ne sont pas complètement compatibles et ce que je reçois de pcap_next doit être transformé avant de pouvoir le traiter comme je ferai pour un paquet reçu par recfrom
    • Soit j'ai mal enregistré mes flux UDP quand j'étais sur le terrain et je ne peux m'en prendre qu'à mon même.


    Une idée ?

    Merci

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Après quelques recherches (je suis sur le problème depuis deux jours) j'ai trouvé la solution : c'est 42 (ce qui plaira aux lecteurs du Guide du voyageur galactique).

    En fait, le buffer reçu via pcap_next_ex contient apparement 42 octets de plus que celui que j'aurai reçu par recfrom.

    Je ne sais pas d'où ça vient, ni à quoi c'est du (peut-être le multicast), mais j'ai trouvé un contournement, alors le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #define DECALAGE 42
    char buffer[TAILLE_SUFFISANTE_POUR_UN_PAQUET];
     
    /* divers init */
     
    int rec = recvfrom(sok, buffer, sizeof buffer, ... )
    puts("le paquet, c'est:");
    for(i = 0; i < rec; ++i) {
        printf("%02x ", buffer[i]);
    }
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    char buffer[TAILLE_SUFFISANTE_POUR_UN_PAQUET];
     
    /* divers init */
     
    pcap_next_ex(f, &header, &buffer);
     
    buffer += DECALAGE ;
    rec = header->caplen - DECALAGE ;
     
    /* et ici, on peut utiliser le paquet comme s'il venait de recvfrom */
    puts("le paquet, c'est:");
    for(i = 0; i < rec; ++i) {
        printf("%02x ", buffer[i]);
    }

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Fais attention au format dans lequel tu enregistres tes données, surtout... Je te conseille le format "basique" plutôt que le "NG", surtout si tu rejoues le flux manuellement plutôt que de demander à Wireshark de le rejouer pour toi.

    Liens :
    http://wiki.wireshark.org/Development/LibpcapFileFormat
    http://www.winpcap.org/ntar/draft/PC...ileFormat.html
    Outil de conversion : editcap.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Fais attention au format dans lequel tu enregistres tes données, surtout... Je te conseille le format "basique" plutôt que le "NG", surtout si tu rejoues le flux manuellement plutôt que de demander à Wireshark de le rejouer pour toi.
    Merci
    A vrai dire, ce n'est pas moi qui ai enregistré les données, à priori, les flux avaient été enregistrés par les développeurs du client pour leur rejeu perso, via Wireshark justement.
    Ce n'est que quelque mois plus tard (aujourd'hui quoi) qu'on s'est dit qu'on pouvait utiliser ces flux pour autre chose.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    D'où l'intérêt d'editcap pour convertir à un format "attendu"...

    Je sais que pour ma part, j'avais utilisé à un moment un enregistrement au format PCAP-NG que je rejouais pour ma validation, et j'ai eu des tonnes d'emm.... avec. En prenant un enregistrement au format PCAP "historique", par contre, plus aucun souci.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/07/2007, 19h27
  2. [pcap] Enregistrer trames au format pcap
    Par boudafc dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 26/07/2007, 14h56
  3. Réponses: 3
    Dernier message: 27/04/2007, 10h45
  4. Réponses: 2
    Dernier message: 04/09/2006, 20h53
  5. [D6][Excel] Comment enregistrer en format csv ?
    Par ShinGaruda dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 04/05/2005, 19h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo