5

pcap ファイルからパケットを読み取るために C++ で libpcap を使用しています。

rc = pcap_next_ex((pcap_t*)handle, &header, (const unsigned char**)packet);

パケット ヘッダーを (ペイロードなしで) 解析したいと思います。

たとえば、送信元と送信先の IP アドレスを抽出するために、特定のパケットを解析するにはどうすればよいでしょうか?

ありがとう

4

2 に答える 2

6

libpcap のコード サンプルを確認してください http://www.tcpdump.org/pcap.html

関数には、パケットの先頭をgot_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet);指すポインターがあります。*packetイーサネットヘッダーを解析するには、対応するポインターを使用するだけです

ethernet = (struct sniff_ethernet*)(packet);

IP層用

ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);

他のプロトコルを解析したい場合は、独自の構造を定義するだけです。ペイロードを解析したい (または解析したくない) 場合は、ペイロードの先頭へのポインターを定義できます (または定義しません)。

于 2011-06-24T14:56:13.307 に答える
2

IP ヘッダーのデータ フィールドはビッグ エンディアンの順序でパックされ、パケット ペイロードは IP ヘッダーの直後に追加されます。ここで例を見てください

于 2011-05-24T14:31:11.433 に答える