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)剖析相关推荐

  1. iOS系统网络抓包方法

    转自:http://www.cnblogs.com/ydhliphonedev/archive/2011/10/27/2226935.html 在进行iOS开发过程中,经常会遇到各种各样的网络访问问题 ...

  2. 02Tcpdump命令详解-网络抓包工具

    1.概述 今天我们要介绍的是一款网络抓包工具tcpdump,重点讨论并介绍一些有用的命令及最佳实践. tcpdump是一个功能最强大,应用最广泛的命令行数据包嗅探器或包分析工具,用于抓取或过滤制定接口 ...

  3. 分析网络抓包用 python 更高效

    Abstract 分析网络抓包用 python 更高效 Authors Walter Fan Category learning note Status v1.0 Updated 2023-01-10 ...

  4. golang gopacket网络抓包和分析

    gopacket 是golang语言使用的网络数据抓取和分析的工具包. 本文简单介绍如何使用gopacket进行网络抓包. 下载gopacket # go get git@github.com:goo ...

  5. 网络抓包工具 Wireshark 和 tcpdump(三)

    今天我们分享网络抓包工具 Wireshark 和 tcpdump 一.WireShark工具  1.为什么要抓包 1).定位网络问题: 2).分析接口数据: 3).学习网络协议,使用抓包工具分析网络数 ...

  6. xmpp协议抓包_开源网络抓包与分析框架学习-Packetbeat篇

    开源简介 packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP.MySQL.Redis等.在实际使用中,通常和Elasticsearch以及kibana联合使 ...

  7. 基于网络抓包实现kubernetes中微服务的应用级监控

    微服务是什么? 此话题不是本文重点,如你还不知道.请谷歌一波,会有遍地的解释.引用下图说明下微服务可能呈现的形态: 微服务监控的挑战 监控的目的是为了让集群中所有的服务组件,不管是HTTP服务,数据库 ...

  8. Android设备的网络抓包

    Android设备的网络抓包 背景 比如产品有4G和以太网,我们在调试的时候可能相知道看网络是走4G还是以太网,需要通过抓包来确定 2.抓包方案 2.1   采用集线器 此方案可以对比分析多台设备之间 ...

  9. 怎样对Android设备进行网络抓包

    问题描写叙述: 前段时间自己的app訪问server的url总是会出现间接性失败的问题,于是和server的同事开了个会.提出了他们server存在的这个bug,我的同事自然说自己的server没问题 ...

最新文章

  1. AAAI2018正式落幕 13个世界顶尖AI教授都讲了啥?
  2. 我的配置(vc可以禁止控制台输出)
  3. 自新建表包含货币金额类型和数量类型时报错问题。
  4. 承载网络开启后显示无法连接到Internet,已解决
  5. 关于Java里如何跳出一个多重循环
  6. C语言 va_start / va_end / va_arg 自定义 printf 函数 - C语言零基础入门教程
  7. Python | 常见的反爬及解决方法,值得收藏
  8. Tensorflow图像处理以及数据读取
  9. ceph rbd双挂载导致ext4文件系统inode链接数据污染
  10. LeetCode:Permutations, Permutations II(求全排列)
  11. 峰度和偏度在金融数据分析中有何应用_做数据分析,为什么要学统计学?
  12. 智慧公厕管理系统不断提升公厕管理水平
  13. 如何成为一名推荐系统工程师
  14. 批量图片验证模型错误: OP_REQUIRES failed at save_restore_v2_ops.cc:184 : Not found: Key conv1_1/bias not found
  15. I didn't write blog yesterday night for some ineffable reasons
  16. 高端存储系统的发展方向展望
  17. java实现微信公众号官方支付功能
  18. Unity Shader - CheckerBoard(棋盘格) 等 Pattern 的测试
  19. C/C++中绝对值函数
  20. 魅族mx6 原生android,手机 篇一:魅族16s真实使用感受漫谈

热门文章

  1. 笔记本开机后桌面图标变乱
  2. Android 开发 TCP协议
  3. TigerGraph笔记(一)安装和卸载(centos)
  4. mysql 增删改查时的错误解决方法大全
  5. 现代金融体系的构成与课程的逻辑框架
  6. 问题 D: 扑克牌排序(结构体)
  7. I2C接口怎么通过中断实现master/slave通讯
  8. 【辅助驾驶】图像拼接[3]——车载全景可视系统SurroundView
  9. 关于java的一些感悟(java优缺点和建议)
  10. Ubuntu-12.04 OpenStack (Folsom)安装和部署手册