简洁的Pcap文件格式--Wireshark

来源:互联网 发布:蓝牙串口软件 编辑:程序博客网 时间:2024/04/30 10:16
突然有个需求,要对类似Wireshark生成的各种数据包文件进行分析和操作,看了一下觉得pcap文件的组织方式还真简洁。这里顺便贴一下。

  网络抓包、协议分析的强大的软件Ethereal,由自由软件发展而来,由于众多爱好者的不断完善和添加网络协议模块,现在已经能够支持几乎所有常见的网络协议数据的分析。现在Ethereal改称Wireshark了,目前最新版本已经支持在无线局域网抓包了。Linux和Windows均有对应安装包,它们分别是gcc和VC++编译的。不过 Windows下是基于Winpcap而Linux下则是Libcap。Ethereal作为网路协议分析、学习、开发的专业门软件,其保存网络数据包的格式逐渐成为了一种标准,下面就介绍下Ethereal默认的*.pcap文件保存格式。 




Pcap文件头24B各字段说明:

Magic:4B:0x1A 2B 3C 4D:用来标示文件的开始
Major:2B,0x02 00:当前文件主要的版本号     
Minor:2B,0x04 00当前文件次要的版本号
ThisZone:4B当地的标准时间;全零
SigFigs:4B时间戳的精度;全零
SnapLen:4B最大的存储长度    
LinkType:4B链路类型
常用类型:
 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
 



Packet 包头和Packet数据组成
字段说明:
Timestamp:时间戳高位,精确到seconds     
Timestamp:时间戳低位,精确到microseconds
Caplen:当前数据区的长度,即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。
Len:离线数据长度网络中实际数据帧的长度,一般不大于caplen,多数情况下和Caplen数值相等。

 

Packet 数据:即 Packet(通常就是链路层的数据帧)具体内容,长度就是Caplen,这个长度的后面,就是当前PCAP文件中存放的下一个Packet数据包,也就是说:PCAP文件里面并没有规定捕获的Packet数据包之间有什么间隔字符串,下一组数据在文件中的起始位置。我们需要靠第一个Packet包确定。最后,Packet数据部分的格式其实就是标准的网路协议格式了,需要具体针对不同的协议查找相关的资料了。

ethereal抓包结果中显示的各行颜色的意义:



原创粉丝点击