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

C++ Discussion :

sniffer , savoir si paquet fragmenté?


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut sniffer , savoir si paquet fragmenté?
    Bonjour,
    Je suis en train de programmer un sniffer , et j'aimerais pouvoir dire si un paquet est fragmenté ou non , je sais qu'il faut voir les 3 bits des drapeaux mais je ne sais pas comment le decomposer puisque c'est un unsigned short , voila ma structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    struct iphdr // structure IP Header
         {
         //Pour processeur de type little-endian
         unsigned char ihl:4; // IP header length
         unsigned char version:4;
     
         unsigned char tos; // Type of service
         unsigned short tot_len; // Total length
         unsigned short id; // Identification
         unsigned short frag:3,off:13; // Fragment Offset + Flags
         unsigned char ttl; // Time to life
         unsigned char protocol;
         unsigned short check; // Checksum
         unsigned int saddr; // Source address
         unsigned int daddr; // Destination address
         };
    je suis vraiment perdu.

    merci d'avance

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Un truc comme cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct iphdr *ip_hdr;
    if( (ip_hdr->frag & 0x01) == 0x01)
    {
       /* le paquet est fragmenté */
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    Bonjour,

    il faudrait plutôt ne pas découper frag_offset en deux via les champs de bits pour bénéficier des macros d'ip.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    00070 /* IP flags. */
    00071 #define IP_CE           0x8000          /* Flag: "Congestion"           */
    00072 #define IP_DF           0x4000          /* Flag: "Don't Fragment"       */
    00073 #define IP_MF           0x2000          /* Flag: "More Fragments"       */
    00074 #define IP_OFFSET       0x1FFF          /* "Fragment Offset" part       */
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  4. #4
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut
    Bonjour,
    merci pour vos reponses. Alors je dois laisser un seul champ : frag_offset ,definir les macros , et à chaque fois comparer avec pour voir , c'est bien ça??

  5. #5
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    pourquoi voulez vous définir la structure et les macros permettant d'en extraire les informations ? pour donner une chance à votre programme de ne pas marcher ?

    #include <netinet/ip.h> ou équivalent suivant votre distribution
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  6. #6
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut
    Je n'arrive pas à trouver netinet/ip.h ,je ne connait pas les equivalents, pouvez vous m'en citer quelques-uns , je programme avec visual c++.

    merci.

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Le bout de code que j'ai mis plus haut tient compte du fait que la structure définit un champs de bits pour les flags FRAGMENT (structure dont tu fournis la définition).

    Les macros dont tu parles sont utiles si ce champs n'est pas dans un champs de bits. Il faudrait donc savoir quelle structure tu utilises.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut
    ah d'accord , alors je peux utiliser ça avec ma structure.?

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/09/2010, 21h25
  2. (Wireshark) Sniffer les paquets d'autres clients
    Par Superne0 dans le forum Réseau
    Réponses: 3
    Dernier message: 24/02/2010, 15h32
  3. Réponses: 12
    Dernier message: 11/06/2009, 11h36
  4. savoir à quel paquet appartient un fichier ?
    Par mamelouk dans le forum Administration système
    Réponses: 4
    Dernier message: 30/03/2007, 11h12

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