2016-11-15 23 views
0

有人可以解释我如何在C中使用pcap数据包标题? 我无法找到关于结构和使用方式的明确解释。了解pcap数据包标题

其实,事情是我不明白我们如何使用PCAP库#include <pcap.h>

事实上,我需要使用 struct pcap_pkthdr *header但我无法弄清楚如何使用它。

谢谢

回答

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中,您可以读取pcap转储的24个字节,然后将这些字节映射到pcap文件头结构。在此之后,您可以开始阅读所有不同的数据包。请注意,有不同版本的pcap,我在这里写的并不适用于每个pcap转储。