网络抓包文件格式(.pcap/.cap)剖析

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

pcap文件是一种常用的数据报存储格式,类似于一种特定格式的文件。普通的文本编辑器打开pcap文件会显示乱码,但使用Ultra Edit可以以16进制数据的格式显示,而使用抓包工具如wireshark则可以正常打开并查看其中的网络数据报。当然,除了我经常使用的这些工具外,还有许多其他可以查看pcap文件的工具。

.pcap/.cap文件的结构如下:

  1. Pcap Header(文件头):每个pcap文件只有一个文件头,总共占24字节。文件头包含以下7个字段的信息:
  • Magic(4字节):标记文件开始,并用于识别文件和字节顺序。值可以是0xa1b2c3d4或0xd4c3b2a1。如果是0xa1b2c3d4,表示大端模式;如果是0xd4c3b2a1,表示小端模式。现在大多数计算机采用小端模式。

  • Major(2字节):当前文件的主要版本号,一般为0x0200。

  • Minor(2字节):当前文件的次要版本号,一般为0x0400。

  • ThisZone(4字节):当地的标准事件,如果使用的是GMT,则为全零。

  • SigFigs(4字节):时间戳的精度,一般为全零。

  • SnapLen(4字节):最大的存储长度,设置所抓获的数据包的最大长度。如果要抓取所有数据包,则将值设置为65535。

  • LinkType(4字节):链路类型。解析数据包时需要判断其链路类型,因此这个值非常重要。常见的链路类型包括以太网、Token Ring、ARCnet、SLIP、PPP等。

  1. Packet Header(数据包头):每个数据包头后面跟着真正的数据包。Packet Header包含以下4个字段的信息:
  • Timestamp(4字节):时间戳高位,精确到秒,使用Unix时间戳。捕获数据包的时间通常基于此值。

  • Timestamp(4字节):时间戳低位,精确到微秒。

  • Caplen(4字节):当前数据区的长度,即抓取到的数据帧长度。通过此值可以确定下一个数据帧的位置。

  • Len(4字节):离线数据长度,即网络中实际数据帧的长度。通常不大于Caplen,大多数情况下与Caplen值相同。

  1. Packet Data(数据包数据):Packet是链路层的数据帧,其长度由Packet Header中定义的Caplen值确定。因此,每个Packet Header后面都跟着长度为Caplen的Packet Data。pcap文件并没有规定捕获的数据帧之间的间隔字符串。Packet数据帧部分的格式遵循标准的网络协议格式。

例如,下图是一个16进制的pcap文件示例:

[图片ID:50444]

备注:

  • 红色部分:Pcap Header(文件头)
  • 蓝色部分:Packet Header(数据包头)

PcapHeader:

  • Magic(4字节):D4 C3 B2 A1,表示小端模式。
  • Major(2字节):02 00,计算机读取为00 02。
  • Minor(2字节):04 00,计算机读取为00 04。
  • ThisZone(4字节):00 00 00 00,全零。
  • SigFigs(4字节):00 00 00 00,全零。
  • SnapLen(4字节):FF FF 00 00,计算机读取为00 00 FF FF,即2^16-1=65535。
  • LinkType(4字节):01 00 00 00,计算机读取为00 00 00 01,表示以太网类型。

Packet Header:

赞(0)