pcap文件格式解读

pcap格式, 常用的文件格式, 采用tcpdump或者wireshark得到的文件格式.


pcap文件的组成如下:

 

Global Header

Packet Header

Packet Data

Packet Header

Packet Data

Packet Header

Packet Data

...


先用wireshark抓一个包,然后用ultraedit的十六进制模式打开该文件对照一下:

 

抓包后的界面如下 可以看到是一个tcp连接发起的syn包:

14个字节的mac层baotou

20个字节的ip包头

20个字节的tcp包头

外加

12个字节的tcp包头可选项

总共54+12 = 66个字节

 

然后用ultraedit打开对照看一下, pcap文件究竟是个什么乾坤:

 

第一部分是 Global Length

 

首先是4个字节的magic number, 这个主要是用来标识文件类型的

 

接着是major number, minor number, 文件格式的主次版本号, 因为是网络字节序,所以反过来读  0002, 0004, 也就是2.4

 

在下面就是包头中时间戳和 UTC时间的偏移量, 秒为单位,  这里是全0, 经常是全0,  包头中的时间戳加上该偏移量就是该包被抓到时的UTC时间.

 

紧接着的4个字节是时间戳的精度, 几乎是个扯淡的字段,所以这个字段一般就是 00 00 00 00

 

再下面4个字节是snap length, 也就是你抓包时截断的大小, 全抓一般是 65535,  也就是0xFFFF,网络字节序,表示为 FF FF 00 00

 

第二部分是Packet Header


最先的4个字节是网络类型 , 为 01 00 00 00 , 反过来 00 00 00 01, 也就是以太网,即在以太网上面抓到的包

下面8个字节分别是,该包的时间戳, 前面4个是 秒为单位, 后面4个是 纳秒为单位,同样是网络字节序

让我们来算算

1970.01.01 00:00:00.000000 +  0x4D032640秒 + 0x000A4223纳秒是多少

0x4D032640秒 = 1292052032秒 = 14954天  + 7小时 + 20分 + 32秒 

0x000A4223纳秒 = 672291纳秒

 

正好是 2010.12.11 15:20:32.672291 秒

 

bingo, 看来没错了!

 

下面的8个字节分别是 抓包字节数(4字节), 包原始字节数(4字节), 看来一点不漏的抓下来了.

0x42 = 4x16 + 2 = 64 + 2 = 66字节, 一点不差. 


补充:

magic_number

用于检测文件格式和字节序, magic number的原始数据为 0xA1B2C3D4, 如果读到的magic number被反转过,那么下面global header和packet header中的所有字段的值都是被反转过的, 在转换时就需要反转一下.

至于包的数据部分,原始是什么样就是什么样,没有边界对齐什么的.

 

network

1为以太网

6为令牌环网

10为FDDI

0为回环接口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值