Pcap 文件格式和 WireShark

PCAP是一个数据包抓取库, 很多软件都是用它来作为数据包抓取工具的。 WireShark也是用PCAP库来抓取数据包的。PCAP抓取出来的数据包并不是原始的网络字节流,而是对其进行从新组装,形成一种新的数据格式。
一个用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

其中我们最为常见的类型就是1,以太网链路。


字段说明:
Timestamp:时间戳高位,精确到seconds     
Timestamp:时间戳低位,精确到microseconds
Caplen:当前数据区的长度,即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。
Len:离线数据长度:网络中实际数据帧的长度,一般不大于caplen,多数情况下和Caplen数值相等。
Packet 数据:即 Packet(通常就是链路层的数据帧去掉前面用于同步和标识帧开始的8字节和最后用于CRC校验的4字节)具体内容,长度就是Caplen,这个长度的后面,就是当前PCAP文件中存放的下一个Packet数据包,也就是说:PCAP文件里面并没有规定捕获的Packet数据包之间有什么间隔字符串,我们需要靠第一个Packet包确定下一组数据在文件中的起始位置,向后以此类推。

 

下面是一个PCAP数据包的实例,该数据包包含了两条消息。下图是用十六进制工具将该数据包打开后的截图。

图中最开始的绿色部分就是24 Bytes的Pcap Header,接下来红色的16 Bytes是第一个消息的Packet Header, 后面的红色的16 Bytes是第二个消息的Packet Header。两块蓝色的部分分别是两个消息从链路层开始的完整内容。在网络上实际传输的数据包在数据链路层上每一个Packet开始都会有7个用于同步的字节(10101010, 10101010, 10101010, 10101010, 10101010, 10101010, 10101010,)和一个用于标识该Packet开始的字节(10101011),最后还会有四个CRC校验字节;而PCAP文件中会把前8个字节和最后4个校验自己去掉,因为这些信息对于协议分析是没有用处的。
用Wireshark打开一个Pcap数据包后, 每条消息的所有field会被解析出来并会按照协议层次折叠起来。第一层显示的是Frame XXX,这一级别没有对应某层具体的协议,而是对本条消息的一个概括性总结,描述了一些有用的概括性信息,比如从里面我们可以看到本条消息各种协议的层次关系,展开其它协议层之后对应的是该协议的各个域;如下图所示:

参考资料:
http://blog.chinaunix.net/u2/82392/showart_1870732.html
http://www.tcpdump.org/

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
pcap文件是一种网络数据包捕获文件,Wireshark是一款流行的网络协议分析工具,而Python是一种编程语言。要解析pcap文件,也就是对其中的网络数据包进行分析,我们可以使用Wireshark的Python模块来实现。 首先,我们需要安装Wireshark并在安装过程中选择安装Python模块。安装完成后,我们就可以在Python脚本中导入Wireshark模块。 接下来,我们需要打开pcap文件,并使用Wireshark模块中的函数来读取数据包。可以使用`open_offline`函数打开pcap文件,然后使用`next_packet`函数来逐个读取数据包。在读取每个数据包后,我们可以通过Wireshark模块中的函数来获取数据包的相关信息,比如源IP地址、目标IP地址、协议类型等。 通过解析pcap文件,我们可以获取到网络数据包的详细信息。我们可以将这些信息存储到一个列表或者字典中,以便后续的分析和处理。 除了读取和获取数据包的信息,我们还可以使用Wireshark模块中的其他函数来对数据包进行过滤和统计。比如,我们可以使用过滤函数来筛选特定的数据包,比如只获取TCP协议的数据包或者某个特定IP地址的数据包。我们还可以使用统计函数来统计各个协议的数据包数量或者某个特定IP地址的数据包数量。 通过上述步骤,我们可以使用Python对pcap文件进行解析,并获取到其中的网络数据包信息。这些信息可以用于各种网络分析和处理任务,比如网络故障排查、网络流量分析、入侵检测等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值