网络抓包文件格式(.pcap/.cap)剖析
pcap文件是常用的数据报存储格式,可以理解为就是一种文件格式,只不过里面的数据是按照特定格式存储的,所以我们想要解析里面的数据,也必须按照一定的格式。普通的记事本打开pcap文件显示的是乱码,用Ultra Edit能够以16进制数据的格式显示,用wireshark这种抓包工具就可以正常打开这种文件,愉快地查看里面的网络数据报了,同时wireshark也可以生成这种格式的文件。当然这些工具只是我经常使用的,还有很多其它能够查看pcap文件的工具。
.pcap/.cap文件结构如下:
1.Pcap Header
文件头,每一个pcap文件只有一个文件头,总共占
24(B)
字节,以下是总共7个字段
的含义。
Magic(4B): 标记文件开始,并用来识别文件和字节顺序。值可以为0xa1b2c3d4或者0xd4c3b2a1,如果是0xa1b2c3d4表示是大端模式,按照原来的顺序一个字节一个字节的读,如果是0xd4c3b2a1表示小端模式,下面的字节都要交换顺序。现在的电脑大部分是小端模式。
Major(2B): 当前文件的主要版本号,一般为0x0200
Minor(2B): 当前文件的次要版本号,一般为0x0400
ThisZone(4B): 当地的标准事件,如果用的是GMT则全零,一般全零
SigFigs(4B): 时间戳的精度,一般为全零
SnapLen(4B): 最大的存储长度,设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将值设置为65535
LinkType(4B): 链路类型。解析数据包首先要判断它的LinkType,所以这个值很重要。一般的值为1,即以太网
常用的LinkType(链路类型):
值 | 类型描述 |
---|---|
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 |
2.Packet Header
数据包头可以有多个,每个数据包头后面都跟着真正的数据包。以下是Packet Header的4个字段含义
Timestamp(4B): 时间戳高位,精确到seconds,这是Unix时间戳。捕获数据包的时间一般是根据这个值
Timestamp(4B): 时间戳低位,能够精确到microseconds
Caplen(4B): 当前数据区的长度,即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。
Len(4B): 离线数据长度,网路中实际数据帧的长度,一般不大于Caplen,多数情况下和Caplen值一样
3.Packet Data
Packet是链路层的数据帧,长度就是Packet Header中定义的Caplen值,所以每个Packet Header后面都跟着Caplen长度的Packet Data。也就是说pcap文件并没有规定捕获的数据帧之间有什么间隔字符串。Packet数据帧部分的格式就是标准的网络协议格式了。
eg:
下图为16进制pcap文件:
备注:
红色部分:Pcap Header
蓝色部分:Packet Header
PcapHeader
Magic(4B): D4 C3 B2 A1
表示小端模式,后面的字节从后往前读;
Major(2B): 02 00
,计算机读的是00 02
;
Minor(2B): 04 00
,计算机读的是00 04
;
ThisZone(4B): 00 00 00 00
,全零;
SigFigs(4B): 00 00 00 00
,全零;
SnapLen(4B): FF FF 00 00, 计算机读的是:00 00 FF FF,所以是2^16-1=65535
LinkType(4B): 01 00 00 00, 计算机读的是:00 00 00 01,表示是以太网类型
Packet Header
Timestamp(4B): CA 4D A4 5C
,计算机读的是:5C A4 4D CA
,十进制:1554271690
,日期为:2019-04-03 14:08:10
;
Timestamp(4B): 4F 2A 08 00
,计算机读的是:00 08 2A 4F
,十进制:535119
,代表535119ms
;
Caplen(4B): BA 1C 00 00
, 计算机读的是:00 00 1C BA
,十进制:7354
,代表后面的7354
个字节为一个数据帧,之后又是一个新的PacketHeader,如此循环;
Len(4B): BA 1C 00 00
,和Caplen相同
wireshark打开.pcap文件:
网络抓包文件格式(.pcap/.cap)剖析相关推荐
- iOS系统网络抓包方法
转自:http://www.cnblogs.com/ydhliphonedev/archive/2011/10/27/2226935.html 在进行iOS开发过程中,经常会遇到各种各样的网络访问问题 ...
- 02Tcpdump命令详解-网络抓包工具
1.概述 今天我们要介绍的是一款网络抓包工具tcpdump,重点讨论并介绍一些有用的命令及最佳实践. tcpdump是一个功能最强大,应用最广泛的命令行数据包嗅探器或包分析工具,用于抓取或过滤制定接口 ...
- 分析网络抓包用 python 更高效
Abstract 分析网络抓包用 python 更高效 Authors Walter Fan Category learning note Status v1.0 Updated 2023-01-10 ...
- golang gopacket网络抓包和分析
gopacket 是golang语言使用的网络数据抓取和分析的工具包. 本文简单介绍如何使用gopacket进行网络抓包. 下载gopacket # go get git@github.com:goo ...
- 网络抓包工具 Wireshark 和 tcpdump(三)
今天我们分享网络抓包工具 Wireshark 和 tcpdump 一.WireShark工具 1.为什么要抓包 1).定位网络问题: 2).分析接口数据: 3).学习网络协议,使用抓包工具分析网络数 ...
- xmpp协议抓包_开源网络抓包与分析框架学习-Packetbeat篇
开源简介 packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP.MySQL.Redis等.在实际使用中,通常和Elasticsearch以及kibana联合使 ...
- 基于网络抓包实现kubernetes中微服务的应用级监控
微服务是什么? 此话题不是本文重点,如你还不知道.请谷歌一波,会有遍地的解释.引用下图说明下微服务可能呈现的形态: 微服务监控的挑战 监控的目的是为了让集群中所有的服务组件,不管是HTTP服务,数据库 ...
- Android设备的网络抓包
Android设备的网络抓包 背景 比如产品有4G和以太网,我们在调试的时候可能相知道看网络是走4G还是以太网,需要通过抓包来确定 2.抓包方案 2.1 采用集线器 此方案可以对比分析多台设备之间 ...
- 怎样对Android设备进行网络抓包
问题描写叙述: 前段时间自己的app訪问server的url总是会出现间接性失败的问题,于是和server的同事开了个会.提出了他们server存在的这个bug,我的同事自然说自己的server没问题 ...
最新文章
- AAAI2018正式落幕 13个世界顶尖AI教授都讲了啥?
- 我的配置(vc可以禁止控制台输出)
- 自新建表包含货币金额类型和数量类型时报错问题。
- 承载网络开启后显示无法连接到Internet,已解决
- 关于Java里如何跳出一个多重循环
- C语言 va_start / va_end / va_arg 自定义 printf 函数 - C语言零基础入门教程
- Python | 常见的反爬及解决方法,值得收藏
- Tensorflow图像处理以及数据读取
- ceph rbd双挂载导致ext4文件系统inode链接数据污染
- LeetCode:Permutations, Permutations II(求全排列)
- 峰度和偏度在金融数据分析中有何应用_做数据分析,为什么要学统计学?
- 智慧公厕管理系统不断提升公厕管理水平
- 如何成为一名推荐系统工程师
- 批量图片验证模型错误: OP_REQUIRES failed at save_restore_v2_ops.cc:184 : Not found: Key conv1_1/bias not found
- I didn't write blog yesterday night for some ineffable reasons
- 高端存储系统的发展方向展望
- java实现微信公众号官方支付功能
- Unity Shader - CheckerBoard(棋盘格) 等 Pattern 的测试
- C/C++中绝对值函数
- 魅族mx6 原生android,手机 篇一:魅族16s真实使用感受漫谈