pcap文件格式

LeCun 等级 610 0 0
标签: 电脑Python

pcap是什么

pcap是一种数据流格式,wireshark软件可以直接把网络数据流变成这种格式。
在Linux里,pcap可以说是一种通用的数据流格式,很多开源的项目都需要用到这种格式的文件。
ROHC的库里,测试脚本的入口参数之一就是一个pcap格式的数据流文件。
如果清楚了pcap的格式,就可以自己去生成数据流文件,从而去使用ROHC的库。

pcap格式

pcap文件格式
上图是pcap的格式结构图,分成两大部分:

  • Global Header (共 24 Byte)
    整个数据流文件,只会有一个 Global Header,它定义了本文件的读取规则最大储存长度限制等内容;
    pcap文件格式
    • Magic:4Byte:标记文件开始,并用来识别文件自己和字节顺序。0xa1b2c3d4用来表示按照原来的顺序读取,0xd4c3b2a1表示下面的字节都要交换顺序读取。考虑到计算机内存的存储结构,一般会采用0xd4c3b2a1,即所有字节都需要交换顺序读取
    • Major:2Byte: 当前文件主要的版本号,一般为 0x0200【_实际上因为需要交换读取顺序,所以计算机看到的应该是 0x0002_】
    • Minor:2Byte: 当前文件次要的版本号,一般为 0x0400【_计算机看到的应该是 0x0004_】
    • ThisZone:4Byte:当地的标准时间,如果用的是GMT则全零,一般都直接写 0000 0000
    • SigFigs:4Byte:时间戳的精度,设置为 全零 即可
    • SnapLen:4Byte:最大的存储长度,如果想把整个包抓下来,设置为 ffff 0000,但一般来说 ff7f 0000就足够了【计算机看到的应该是 0000 ff7f
    • LinkType:4Byte:链路类型,常用类型有以下几种,其他的,需要用的时候再查就行了。
 常用链路类型
       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 Header(共 16 Byte)
    Packet Header可以有多个,每个Packet Header后面会跟着一串Packet Data,Packet Header定义了Packet Data的长度、时间戳等信息。
    pcap文件格式
    • Timestamp:被捕获时间的高位,单位是seconds
    • Timestamp:被捕获时间的低位,单位是microseconds
    • Caplen:当前数据区的长度,即抓取到的数据帧长度,不包括Packet Header本身的长度,单位是 Byte ,由此可以得到下一个数据帧的位置。
    • Len:离线数据长度:网络中实际数据帧的长度,一般不大于caplen,多数情况下和Caplen数值相等。
  • Packet Data(共 Caplen Byte)
    在包头之后,就是数据包的数据了,数据长度就是Caplen个Byte,在这之后就是一个新的Packet Header,定义一个新的Packet Data属性,再接一个新的Packet Data,如此循环。

举个栗子

d4c3 b2a1 0200 0400 0000 0000 0000 0000
ff7f 0000 0100 0000 

e5da c850 fbdc 0800 2a00 0000 2a00 0000 
ffff ffff ffff 0000 0000 0000 0800 4500 
001c 0001 0000 4032 7cad 7f00 0001 7f00 
0001 0102 0304 0000 0001 

eada c850 6d02 0100 2a00 0000 2a00 0000 
ffff ffff ffff 0000 0000 0000 0800 4500 
001c 0002 0000 4032 7cac 7f00 0001 7f00 
0001 0102 0304 0000 0002 

eeda c850 9824 0800 2a00 0000 2a00 0000 
ffff ffff ffff 0000 0000 0000 0800 4500 
001c 0003 0000 4032 7cab 7f00 0001 7f00 
0001 0102 0304 0000 0003 

f3da c850 250c 0100 2a00 0000 2a00 0000 
ffff ffff ffff 0000 0000 0000 0800 4500 
001c 0004 0000 4032 7caa 7f00 0001 7f00 
0001 0102 0304 0000 0004

2bdc c850 7952 0500 2a00 0000 2a00 0000
ffff ffff ffff 0000 0000 0000 0800 4500
001c 2710 0000 4032 559e 7f00 0001 7f00
0001 0102 0304 0000 2710 

上面是在ROHC库的测试文件里找出来的其中一个数据流文件,本来这些数据都是粘在一起的,我整理了一下让它变得更容易看一些。
例如第一段,

d4c3 b2a1 0200 0400 0000 0000 0000 0000
ff7f 0000 0100 0000 

就是Global Header,可以一一对应到上面所说的各个属性。

例如第二段,

e5da c850 fbdc 0800 2a00 0000 2a00 0000 
ffff ffff ffff 0000 0000 0000 0800 4500 
001c 0001 0000 4032 7cad 7f00 0001 7f00 
0001 0102 0304 0000 0001 

e5da c850 就是时间戳的高位
fbdc 0800 就是时间戳的低位
2a00 0000 就是数据包的大小,十六进制,转换成十进制,就是42 Byte
2a00 0000 就是抓到的包的大小
ffff ffff ffff 0000 0000 0000 0800 4500
001c 0001 0000 4032 7cad 7f00 0001 7f00
0001 0102 0304 0000 0001 就是数据包,长度一共是 42 Byte
然后就开始下一个数据包。

本文转自 https://blog.csdn.net/u013793399/article/details/51474831,如有侵权,请联系删除。

收藏
评论区

相关推荐

Python的环境搭建和下载
Python是一个跨平台、可移植的编程语言,因此可在windows、Linux和Mac OS X系统中安装使用。 安装完成后,你会得到Python解释器环境,可以通过终端输入python命令查看本地是否已经按照python以及python版本。这里有一点需要注意的是,如果没有将python的安装目录添加到环境变量中,会报错(python不是内部命令或外部命
python中的异常处理
异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 异常种类   在python中不同的异常可以用不同的类型(python
15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工
本篇文章将给大家介绍 Python 多线程与多进程相关知识,学习完该知识点之后,你的 Python 程序将进入另一个高峰。 <center<font colorred缓解一下视疲劳</font</center 15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工(https://imghelloworld.oss
pcap文件格式
pcap是什么 pcap是一种数据流格式,wireshark软件可以直接把网络数据流变成这种格式。 在Linux里,pcap可以说是一种通用的数据流格式,很多开源的项目都需要用到这种格式的文件。 ROHC的库里,测试脚本的入口参数之一就是一个pcap格式的数据流文件。 如果清楚了pcap的格式,就可以自己去生成数据流文件,从而去
python装饰器详解
你会Python嘛? 我会! 那你给我讲下Python装饰器吧! Python装饰器啊?我没用过哎 以上是我一个哥们面试时候发生的真实对白。 \分割线
原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
知乎从Python转为Go,是不是代表Go比Python好?
众所周知,知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎,一部分人就说 Go 比 Python 好,Go 和 Python 两大社区的相关开发人员为此也争论过不少,似乎,谁也没完全说服谁。 知乎从Python转为Go,是不是代表Go比Python好?我认为,各有优点,谁也取代不了谁,会长期共存! “由 Python 语言转向 Go 语言
Python编程基础(快速入门必看
Python编程基础一、Python语言基本语法 Python是一
python文件的第一行 #!/usr/bin/python3 是什么意思?
python文件的第一行代码通常在脚本语言的第一行会看到: !/usr/bin/env python或 !/usr/bin/python 首先要确定的一点是它不是注释。这两句话的目的都是指出你的python文件用什么可执行程序去运行它。1. !/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释
Python初学者必备书籍《Python入门经典》高清PDF版|百度网盘免费下载|Python初学者,自学Python必读
提取码:1028以及前文提到的学习路线图内容简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python可以用于很多的领域,从科学计算到游戏开发。《Python入门经典》是面向Python初学者的学习指南,详细介绍了Python编程基础,以及一些高级概念,如面向对象编程。全书分为24章。第1章介绍了Python的背景和安装方法。第2章
全网最全python学习路线图,让学习不迷路
学习Python有一段时间了,最近也是在不断的整理Python相关的基础知识和学习一些新的知识,想来分享给大家。我刚开始接触Python时,和大多数初学者一样不知道从那里开始学习python,我也在网上找了许多python相关的资料来学习,但是资料多也不见得就好,因为不知道从哪里开始下手,走了许多弯路。后面我就整理了一套对初学者来说学习python能很快上手
玩转python爬虫
&ensp;&ensp;&ensp;  近几年来,python的热度一直特别火!大学期间,也进行了一番深入学习,毕业后也曾试图把python作为自己的职业方向,虽然没有如愿成为一名python工程师,但掌握了python,也让我现如今的工作开展和职业发展更加得心应手。这篇文章主要与大家分享一下自己在python爬虫方面的收获与见解。 &ensp;&ensp;
浅析常用的Python Web的几大框架
在各种语言平台中,python涌现的web框架恐怕是最多的,是一个百花齐放的世界,各种microframework、framework不可胜数;猜想原因应该是在python中构造框架十分简单,使得轮子不断被发明。所 以在Python社区总有关于Python框架孰优孰劣的话题。下面就给大家介绍一下python的几大框架: Django Django 应该是最出
手把手教你使用Flask搭建ES搜索引擎(预备篇)
/1 前言/ Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 那么如何实现 Elasticsearch和 Python 的对接成为我们所关心的问题了 (怎么什么都要和 Python 关联啊)。 /2 Python 交互/ 所以,Python 也就提供了可以对接 Elasti
盘点一款Python二级考试模拟软件,带你轻松过关二级Python考试
大家好,我是Python进阶者。今天给大家讲的这个软件,主要是想让大家通过这个软件能将自己的Python基础进一步提高。一、前言相信有些小伙伴学习Python有一段时日,但是又不知道自己的Python基础学的如何,这个时候就需要一款神器来检测一下自己的Python基础了。要想检测自己的Python功力最直观的方法当然是做题了,至于做什么题了我们就不得而知了,

热门文章

TCP/IP网络协议网络解析(一):LeNet-5详解

最新文章

TCP/IP网络协议网络解析(一):LeNet-5详解