0
点赞
收藏
分享

微信扫一扫

pacp格式文件分析


1 介绍

1.1. 五元组

网络通信过程中会发送大量的请求,每一个请求都需要通过IP数据包进行交互,但是IP数据包的头部信息过于复杂,如果通过IP数据包头进行数据包之间的区分就太复杂了,所以就产生了元组。

五元组是元组中的一种,还有四元组、七元组。通过五元组可以表示所在的数据包属于哪一个会话。该头正在数据包查重和流量对比的时候使用较多。

五元组的结构包括:IP源地址、源端口、目的IP地址、目标端口、4层通信协议。

1.2 pacp文件格式

文件头+数据包头+数据+数据包头+数据+数据包头+数据+…

数据包格式:

结构名称

字节数

作用

文件头Global Header

24

整个数据流文件,只会有一个Global Header,它定义了本文本的读取规则、最大存取长度限制等内容

数据包头 Packet Header

16

Pachet Header可以有多个,每个Packet Header后面会跟一串Packet Data, Packet Header定义了Packet Data的长度、时间戳等信息

Packet Data

2 结构介绍

2.1 Global Header 文件头

这里以​​nacp库​​中定义的结构为例

结构定义如下:

pacp格式文件分析_运维

struct pcap_file_header {
bpf_u_int32 magic; // 文件开始标记
u_short version_major; // 当前文件主要的版本号
u_short version_minor; // 当前文件次要的版本号
bpf_int32 thiszone; // 当地的标准时间 gmt to local correction; this is always 0
bpf_u_int32 sigfigs; // 时间戳精度 accuracy of timestamps; this is always 0
bpf_u_int32 snaplen; // 最大的存储长度 max length saved portion of each pkt
bpf_u_int32 linktype; // 链路类型 data link type (LINKTYPE_*)
};

1、Magic
​​​名称​​​:文件开始标记
​​​大小​​​:​​4Byte​​​​描述​​:用来识别文件自己和字节顺序。
​0xa1b2c3d4​​:用来表示按照原来的顺序读取。
​0xd4c3b2a1​​:表示下面的字节都要交换顺序读取。
考虑到计算机的内存结构,一般采用​​0xd4c3b2a1​​,如下
​0xd4c3b2a1​​:所有字节都需要交换顺序读取

2、 Major
​​​名称​​​:当前文件主要的版本号
​​​大小​​​:2Byte
​​​描述​​​:一般为 ​​0x0200​​​ 。【实际上因为需要交换读取顺序,所以计算机应该看到的是 ​​0x0002​​】

3、 Minor
​​​名称​​​:当前文件次要版本号
​​​大小​​​:4Byte
​​​描述​​​:
一般为 ​​​0x0400​​​ 【计算机看到的应该是 ​​0x0004​​】

4、 ThisZone
​​​名称​​​:当地的标准时间
​​​大小​​​:4Byte
​​​描述​​​:如果用的是 GMT 则全零。一般都直接写 ​​0000 0000​

5、 SigFigs
​​​名称​​​:时间戳精度
​​​大小​​​:4Byte
​​​描述​​:设置为 全零 即可。

6、 SnapLen
​​​名称​​​:最大存储长度
​​​大小​​​:4Byte
​​​描述​​​:如果想把整个包抓下来,设置为 ​​ffff 0000​​​,但一般来说 ​​ff7f 0000​​​就足够了。
【计算机中看到的应该是 ​​​0000 ff7f ​​】

7、 LinkType
​​​名称​​​:链路类型
​​​大小​​​:4Byte
​​​描述​​:

2.2 Packet Header 数据包头

这里以​​nacp库​​中定义的结构为例

数据包头有三个属性,每个属性占固定大小,所以可以使用一个结构体表示。

pacp格式文件分析_网络_02

struct pcap_pkthdr {
struct timeval ts; // 捕获时间 time stamp
bpf_u_int32 caplen; // 数据帧/区的长度 length of portion present
bpf_u_int32 len; // 离线数据长度 length of this packet (off wire)
};

1、Timestamp
​​​名称​​​:被捕获时间的高位
​​​大小​​​:4Byte
​​​描述​​:单位 seconds

2、Timestamp

​名称​​​:被捕获时间的低位
​​​大小​​​:4Byte
​​​描述​​:单位 microseconds

3、Caplen

​名称​​​:当前数据区的长度,即抓取到数据帧的长度
​​​大小​​​:4Byte
​​​描述​​:不包括 Packet Header 本身的长度,单位是 Byte,由此可以的找到下一个数据帧的位置。

4、Len

​名称​​​:离线数据长度
​​​大小​​​:4Byte
​​​描述​​:网络中实际数据帧的长度,一般不大于 caplen,多数情况下和 Caplen的数值相等。

2.3 Packet Data 数据包数据



举报

相关推荐

0 条评论