Comment puis-je analyser un paquet ethernet à l'aide de libpcap?
Je suis en utilisant libpcap en C++ pour la lecture des paquets de ppce de fichiers, par exemple:
rc = pcap_next_ex((pcap_t*)handle, &header, (const unsigned char**)packet);
Je voudrais analyser les paquets d'en-tête (sans la charge utile).
Par exemple, comment puis-je analyser un paquet donné afin d'en extraire sa source et destintation adresses ip?
grâce
Si vous souhaitez utiliser le C++, pourquoi ne pas utiliser une bibliothèque qui enveloppe libpcap et intègre des analyseurs de protocole? Je peux recommander PcapPlusPlus que je suis à l'aide, veuillez consulter ce tutoriel pour apprendre à analyser les paquets à l'aide de cette bibliothèque.
OriginalL'auteur user515766 | 2011-05-24
Vous devez vous connecter pour publier un commentaire.
La caisse de l'exemple de code pour libpcap http://www.tcpdump.org/pcap.html
Dans le
got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet);
de la fonction vous disposez d'un pointeur*packet
qui pointe vers le début de la trame. Pour l'analyse des en-têtes ethernet, vous devez simplement utiliser le pointeur correspondantPour la couche IP
Si vous souhaitez analyser d'autres protocoles, il vous suffit de définir vos propres structures. Si vous voulez (ou ne veulent pas) pour analyser la charge utile, alors vous pouvez (ou pas) de définir un pointeur sur le début de la charge utile.
OriginalL'auteur Ioannis Pappas
Les champs de données d'en-têtes IP sont emballés dans des big-endian de l'ordre et de la charge utile du paquet est fixé juste après à la fin de l'en-tête IP. voir un exemple ici
OriginalL'auteur cpx