pcap文件格式分析

来源:互联网 发布:站长工具端口 编辑:程序博客网 时间:2024/05/01 14:58
pcap文件格式是常用的数据报存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包
下面对这种格式的文件简单分析一下:

           pcap文件的格式为:
                   文件头 24字节
                   数据报头 + 数据报 数据包头为16字节,后面紧跟数据报
                   数据报头 + 数据报 ......

pcap.h里定义了文件头的格式
struct pcap_file_header {
          bpf_u_int32 magic;         4字节 pcap文件标识 目前为“d4 c3 b2 a1”,用来识别文件自己和字节顺序。0xa1b2c3d4用来表示按照原来的顺序读取,0xd4c3b2a1表示下面的字                                                      节都要交换顺序读取。一般,我们使用0xa1b2c3d4
          u_short version_major;   2字节主版本号 #define PCAP_VERSION_MAJOR 2
          u_short version_minor;   2字节次版本号 #define PCAP_VERSION_MINOR 4
          bpf_int32 thiszone;         4字节时区修正 并未使用,目前全为0
          bpf_u_int32 sigfigs;        4字节精确时间戳 并未使用,目前全为0
          bpf_u_int32 snaplen;      4字节抓包最大长度如果要抓全,设为0x0000ffff(65535),tcpdump -s 0就是设置这个参数,缺省为68字节

          bpf_u_int32 linktype;      4字节链路类型 一般都是1:ethernet

                                                    常用类型:
                                                            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;          8字节 抓包时间 4字节表示秒数,4字节表示微秒数
          bpf_u_int32 caplen;     4字节 保存下来的包长度(最多是snaplen,比如68字节)
          bpf_u_int32 len;           4字节数据报的真实长度,如果文件中保存的不是完整数据包,可能比caplen大
};
struct timeval {
          long tv_sec;                 秒
          suseconds_t tv_usec; 微秒
};

0 0
原创粉丝点击