Article orginellement écrit par Joel Bourrigaud le samedi 9 décembre 2006 à 13:42 et publié sur http://blog.emax.ath.cx
Qui ne connait pas ethereal ?
ben moi avant de faire un stage dessus ^^. Ce super site (http://lab.erasme.org/ethereal/) explique comment l’utiliser. si vous avez besoin de l’utiliser dans un programme et de décomposer les trames il faut utiliser les libPCAP qu’on trouve sur le net.
#include « pcap.h »
void ReadPcap ( unsigned char *temp1, const struct pcap_pkthdr *header, const unsigned char *pkt_data)
le mieux pour recuperer chaque champs est de definir des structures :
typedef struct {
unsigned long destination_debut; //!< \param Adresse IP destination
unsigned short destination_fin; //!< \param Adresse IP destination
unsigned short source_debut; //!< \param Adresse IP source
unsigned long source_fin; //!< \param Adresse IP source
unsigned short type; //!< \param Type de protocole
unsigned short destination_fin; //!< \param Adresse IP destination
unsigned short source_debut; //!< \param Adresse IP source
unsigned long source_fin; //!< \param Adresse IP source
unsigned short type; //!< \param Type de protocole
} ethernet_header;
//! \struct Structure de l’en-tete IP
typedef struct {
unsigned char ver_ip; //!< \param Version du protocole IP + Taille du Header (IHL)
unsigned char tos_ip; //!< \param Type de Service, souvent à 0.
unsigned short tlen_ip; //!< \param Indique la taille totale du packet
unsigned short indent_ip; //!< \param Numéro de chaque fragment
unsigned short flag_fragoff_ip;//!< \param Flag + Fragment Offset
unsigned char ttl_ip; //!< \param Time to Live du Packet
unsigned char proto_ip; //!< \param Protocole dont est issu le packet
unsigned short checksum_ip; //!< \param Header Checksum, vérification de l’intégrité de l’en-tête
ip_address saddr_ip; //!< \param Addresse IP de l’envoyeur
ip_address daddr_ip; //!< \param Addresse IP du destinataire
unsigned char tos_ip; //!< \param Type de Service, souvent à 0.
unsigned short tlen_ip; //!< \param Indique la taille totale du packet
unsigned short indent_ip; //!< \param Numéro de chaque fragment
unsigned short flag_fragoff_ip;//!< \param Flag + Fragment Offset
unsigned char ttl_ip; //!< \param Time to Live du Packet
unsigned char proto_ip; //!< \param Protocole dont est issu le packet
unsigned short checksum_ip; //!< \param Header Checksum, vérification de l’intégrité de l’en-tête
ip_address saddr_ip; //!< \param Addresse IP de l’envoyeur
ip_address daddr_ip; //!< \param Addresse IP du destinataire
} ip_header;