有人可以解释我在C中如何使用 pcap数据包标题? 我找不到关于它的结构和使用方式的任何明确解释。
事实上,我不明白我们如何使用pcap库#include <pcap.h>
确实,我需要使用一个
struct pcap_pkthdr *header
但我无法弄清楚如何使用它。
由于
答案 0 :(得分:0)
Pcap为每个数据包定义一个标头。与pcap文件头一起,数据包标题将使您能够理解pcap转储中的数据。
struct pcap_file_header {
bpf_u_int32 magic;
u_short version_major;
u_short version_minor;
bpf_int32 thiszone; /* gmt to local correction */
bpf_u_int32 sigfigs; /* accuracy of timestamps */
bpf_u_int32 snaplen; /* max length saved portion of each pkt */
bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */
};
struct pcap_pkthdr {
struct timeval ts; /* time stamp */
bpf_u_int32 caplen; /* length of portion present */
bpf_u_int32 len; /* length this packet (off wire) */
};
首先,您将拥有文件头,然后是所有捕获的数据包。 在C中,您可以读取24个字节的pcap转储,然后将这些字节映射到pcap文件头结构。在此之后,您可以开始阅读所有不同的数据包。请注意,有不同版本的pcap,我在这里写的内容并不适用于每个pcap转储。