Forum Programmation.c Problème de valeur hexadécimale dans un paquet ethernet

Posté par  .
Étiquettes : aucune
0
23
août
2004
Bonjour cher forum !

Mon problème est tout bête, aussi je vais essayer de faire court. J'utilise la librairie pcap dans un projet qui présente des fonctionnalités de sniffing. Je récupère donc mes paquets ethernet, je remplis ma structure ether_header correctement, et là j'ai un gros problème pour lire le champ ether_type qui donne le protocole que couvre la trame ethernet (ip, arp, rarp) : le problème est que d'après les headers de linux, pour IP je dois avoir Ox800 ou 2048 en décimale... Et bien, rien à faire, j'ai un bête 8 ! J'ai essayé de caster dans tous les sens, rien à faire....

Merci à l'âme généreuse qui voudra bien m'éclairer, car on dirait qu'il me manque un élément pour comprendre le problème...
  • # les indiens !!!

    Posté par  . Évalué à 4.

    heu, j'ai bossé la dessu pour un Tp cette année.
    Il faut faire attention a l'indiannes.
    Normalement sur le réseau les données sont en big endian, alors qu'elles sont en little endian sur x86. Il me semble que le champ protocole de l'entete IP n'echappe pas a cette regle.

    Donc il faut faire appel a ntohs() (network to host short) avant d'accéder a ta donnée.
    Idem avec d'autres champs: ntohs() ou ntohl() selon le type
    • [^] # Re: les indiens !!!

      Posté par  . Évalué à 1.

      Merci infiniment, il semblerait que ce soit cela !
      Encore merci, tu m'otes une épine du pied !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.