Pcap文件详解
一、简介
pcap文件是一种常用的数据报存储格式,里面的数据按照特定的规格存储和解析。
一般来说使用普通的笔记本打开的pcap文件显示的是乱码,所以我们需要使用支持16进制格式的工具去查看该文件,这里使用https://hexed.it/ 这个在线网站去查看。
二、文件格式

pcag文件格式主要是由文件头-数据包头1-数据包1-数据包头2-数据包2这类格式组成。其中文件头只有一个,数据包头和数据包可以有多个,如下图所示。

每个pcap文件只有一个文件头,里面包含7个字段,总共占24(B)字节。
1.Pcap Header
| header field | size | explain |
|---|---|---|
| Magic | 4B | 标记文件开始,并用来识别文件和字节顺序 |
| Major | 2B | 当前Pcap文件的主要版本号,一般为0x0200 |
| Minor | 2B | 当前Pcap文件的次要版本号,一般为0x0400 |
| ThisZone | 4B | 当地的标准事件,如果用的是GMT则全零,一般全零 |
| SigFlags | 4B | 时间戳的精度,一般为全零 |
| SnapLen | 4B | 所抓获的数据包的最大长度 |
| LinkType | 4B | 数据链路类型 |
2.Packet Header
| header field | size | explain |
|---|---|---|
| Timestamp | 4B | 时间戳高位,精确到seconds |
| Timestamp | 4B | 时间戳低位,能够精确到microseconds |
| Caplen | 4B | 即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。 |
| Len | 4B | 实际的数据帧长度 |
3.Packet Data
Packet是链路层的数据帧,其长度是Packet Header中定义的Caplen值,所以Packet Data的长度为Caplen。
4.案例
打开文件后如图所示(这里截取前面的部分)

Pcap Header

| header field | value |
|---|---|
| Magic | 0XD4C3B2A1 |
| Major | 0X0002 |
| Minor | 0X0004 |
| ThisZone | 0X00000000 |
| SigFlags | 0X00000000 |
| SnapLen | 0X00040000 |
| LinkType | 0X00000001 |
Packet Header

| header field | value |
|---|---|
| Timestamp | 0X6279C37B |
| Timestamp | 0X0009EDB4 |
| Caplen | 0X00000042 |
| Len | 0X00000042 |
Packet Data

数据包大小为0X00000042 = 66B