pcap文件格式:
文件头:24字节
数据包头+数据包:数据包头为16字节,后面紧跟数据包
数据包头+数据包……
文件头格式:
| magic |major | minor | thiszone | sigfigs | snaplen | linktype |
| d4 c3 b2 a1 | 02 00 | 04 00 | 00 00 00 00 | 00 00 00 00 | ff ff 00 00 | 01 00 00 00 |
struct pcap_file_header {
bpf_u_int32 magic; /* magic:4字节pcap文件标识“d4 c3 b2 a1”*/
u_short version_major; /* 主版本号 2字节 */
u_short version_minor;/* 次版本号 2字节 */
/* #define PCAP_VERSION_MAJOR 2
#define PCAP_VERSION_MINOR 4 */
bpf_int32 thiszone; /* gmt to local correction all zero*/
bpf_u_int32 sigfigs; /* accuracy of timestamps all zero*/
bpf_u_int32 snaplen; /* max length saved portion of each pkt */
bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */
};
说明:snaplen:最大抓包长度,缺省为68字节,若要抓全数据包,则设为最大值0x0000ffff(65535)
linktype:4字节链路类型
常用类型:
0 BSD loopback devices, except for later OpenBSD
1 Ethernet, and Linux loopback devices
6 802.5 Token Ring
7 ARCnet
8 SLIP
9 PPP
10 FDDI
100 LLC/SNAP-encapsulated ATM
101 “raw IP”, with no link
102 BSD/OS SLIP
103 BSD/OS PPP
104 Cisco HDLC
105 802.11
108 later OpenBSD loopback devices (with the AF_value in network byte order)
113 special Linux “cooked” capture
114 LocalTalk
数据包头格式:
struct pcap_pkthdr {
struct timeval ts;
bpf_u_int32 caplen;
bpf_u_int32 len;
};
struct timeval {
long tv_sec;
suseconds_t tv_usec;
};
ts:8字节,抓包时间
4字节代表秒数,4字节代表微秒数
caplen:4字节,包长度
len:4字节,数据报的真实长度