pacp格式文件分析

article/2025/10/21 4:58:44

1 介绍

1.1. 五元组

网络通信过程中会发送大量的请求,每一个请求都需要通过IP数据包进行交互,但是IP数据包的头部信息过于复杂,如果通过IP数据包头进行数据包之间的区分就太复杂了,所以就产生了元组。

五元组是元组中的一种,还有四元组、七元组。通过五元组可以表示所在的数据包属于哪一个会话。该头正在数据包查重和流量对比的时候使用较多。

五元组的结构包括:IP源地址、源端口、目的IP地址、目标端口、4层通信协议。

1.2 pacp文件格式

文件头+数据包头+数据+数据包头+数据+数据包头+数据+…

数据包格式:

结构名称字节数作用
文件头Global Header24整个数据流文件,只会有一个Global Header,它定义了本文本的读取规则、最大存取长度限制等内容
数据包头 Packet Header16Pachet Header可以有多个,每个Packet Header后面会跟一串Packet Data, Packet Header定义了Packet Data的长度、时间戳等信息
Packet Data

2 结构介绍

2.1 Global Header 文件头

这里以nacp库中定义的结构为例
结构定义如下:
在这里插入图片描述

struct pcap_file_header {bpf_u_int32 magic;		// 文件开始标记u_short version_major;	// 当前文件主要的版本号u_short version_minor;  // 当前文件次要的版本号bpf_int32 thiszone;	    // 当地的标准时间 gmt to local correction; this is always 0bpf_u_int32 sigfigs;	// 时间戳精度    accuracy of timestamps; this is always 0bpf_u_int32 snaplen;	// 最大的存储长度 max length saved portion of each pktbpf_u_int32 linktype;	// 链路类型      data link type (LINKTYPE_*)
};

1、Magic
名称:文件开始标记
大小4Byte
描述:用来识别文件自己和字节顺序。
0xa1b2c3d4:用来表示按照原来的顺序读取。
0xd4c3b2a1:表示下面的字节都要交换顺序读取。
考虑到计算机的内存结构,一般采用0xd4c3b2a1,如下
0xd4c3b2a1:所有字节都需要交换顺序读取

2、 Major
名称:当前文件主要的版本号
大小:2Byte
描述:一般为 0x0200 。【实际上因为需要交换读取顺序,所以计算机应该看到的是 0x0002

3、 Minor
名称:当前文件次要版本号
大小:4Byte
描述
一般为 0x0400
【计算机看到的应该是 0x0004

4、 ThisZone
名称:当地的标准时间
大小:4Byte
描述:如果用的是 GMT 则全零。一般都直接写 0000 0000

5、 SigFigs
名称:时间戳精度
大小:4Byte
描述:设置为 全零 即可。

6、 SnapLen
名称:最大存储长度
大小:4Byte
描述:如果想把整个包抓下来,设置为 ffff 0000,但一般来说 ff7f 0000就足够了。
【计算机中看到的应该是 0000 ff7f

7、 LinkType
名称:链路类型
大小:4Byte
描述

2.2 Packet Header 数据包头

这里以nacp库中定义的结构为例
数据包头有三个属性,每个属性占固定大小,所以可以使用一个结构体表示。
在这里插入图片描述

struct pcap_pkthdr {struct timeval ts;	// 捕获时间 time stampbpf_u_int32 caplen;	// 数据帧/区的长度 length of portion presentbpf_u_int32 len;	// 离线数据长度 length of this packet (off wire)
};

1、Timestamp
名称:被捕获时间的高位
大小:4Byte
描述:单位 seconds

2、Timestamp

名称:被捕获时间的低位
大小:4Byte
描述:单位 microseconds

3、Caplen

名称:当前数据区的长度,即抓取到数据帧的长度
大小:4Byte
描述:不包括 Packet Header 本身的长度,单位是 Byte,由此可以的找到下一个数据帧的位置。

4、Len

名称:离线数据长度
大小:4Byte
描述:网络中实际数据帧的长度,一般不大于 caplen,多数情况下和 Caplen的数值相等。

2.3 Packet Data 数据包数据

参考地址:
https://blog.csdn.net/qq_43481350/article/details/119909121
https://blog.csdn.net/m0_58087444/article/details/123078984
C语言解析pcap文件得到HTTP信息实例https://blog.csdn.net/koudaidai/article/details/7673082


http://chatgpt.dhexx.cn/article/hbB4sn2K.shtml

相关文章

【pac文件】win10自动配置代理

目的 手动代理:所有地址经过代理,指定ip不经过代理 现在需求:实现指定ip范围才使用该代理 可以通过“自动设置代理”的方式实现 准备 已有代理地址,如:192.168.18.101:808有python环境 自动代理配置 编写sxProxy.…

实战PyQt5: 120-像素图QPixmap和QBitmap

Qt提供了四个用于处理图像数据的类:QImage,QPixmap,QBitmap和QPicture。QImage是为I/O设计的,并且针对直接的像素访问和操作做了优化,QPixmap是为在屏幕上显示图像而设计和优化的。QBitmap为继承自QPixmap的便利类。如…

Qt实战案例(54)——利用QPixmap设计图片透明度

目录 一、项目介绍二、项目基本配置三、UI界面设置四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件 五、效果演示 一、项目介绍 本文介绍利用QPixmap设计图片透明度,可以看到拖动下方进度条,用于控制上方图片的透明度。 二、项目基本配置 新建…

利用QPixmap显示图片

我们来实现在窗口上显示图片,并将图片进行平移,缩放,旋转和扭曲。这里我是利用QPixmap类来实现图片显示的。 一、利用QPixmap显示图片。 1.将以前的工程文件夹进行复制备份,我们这里将工程文件夹改名为painter05。(经…

PyQt5基本控件详解之QPixmap(十九)

QPixmap 前言 QPixmap类用于绘图设备的图像显示,它可以作为一个QPainterDevice对象,也可以加载到一个控件中,通常是标签或者按钮,用于在标签或按钮上显示图像 QPixmap可以读取的图像文件类型有BMP,GIF,JP…

[PyQt5]基本控件9 - 图片显示QPixmap

文章目录 PyQt5系列文章效果图完整代码 PyQt5系列文章 基本控件---1.按钮QPushButton2.标签QLabel3.可编辑框QTextEdit4.文本提示QToolTip5.单行输入框QLineEdit6.消息框QMessageBox7.单选按钮QRadioButton8.下拉列表QComboBox9.图片显示QPixmap10.分组框QGroupBox11.进度条QP…

关于QPixmap/QImage/QPicture

Qt学习之路(29):绘图设备(2) 绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和 QPicture。其中,QPixmap专门为图像在屏幕上的显示做了优化&a…

QPixmap、QBitmap、QImage 與 QPicture

在處理影像資料上,Qt提供了QPixmap、QBitmap、QImage與QPicture等類別。 一. 几种类的简介 QPixmap繼承了QPaintDevice,您可用以建立QPaint er並於上進行繪圖,您也可以直接指定圖案載入Qt所支援的圖檔,像是BMP、GIF、JPG、JPEG、…

QPixmap使用scaled()函数缩放失败

因为需要,需要将QPixmap在控件上显示并进行缩放,将其缩放成与控件一般大; 但是发现并没有缩放成功(见图一); 看下代码: QPixmap pixmap;if(pixmap.load(url)) {pixmap.scaled(width(), height…

QPixmap显示图片

我们来实现在窗口上显示图片,并将图片进行平移,缩放,旋转和扭曲。这里我是利用QPixmap类来实现图片显示的。 一、利用QPixmap显示图片。 1.将以前的工程文件夹进行复制备份,我们这里将工程文件夹改名为painter05。(经…

QT绘制图像QImage-QPixmap-QBitmap-QPicture

QT绘制图像QImage-QPixmap-QBitmap-QPicture #ifndef MAINWINDOW10_8_H #define MAINWINDOW10_8_H#include <QMainWindow>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow10_8; } QT_END_NAMESPACEclass MainWindow10_8 : public QMainWindow {Q_OBJECTpublic:MainW…

QT使用QLabel控件显示图片,报错:QPixmap::scaled: Pixmap is a null pixmap

Label 和 pushButton 两个控件 实现点击 按钮 标签显示图片的功能 槽函数如下 Widget.cpp 同级目录img中有图片 1.png 但是点击后报错&#xff1a;QPixmap::scaled: Pixmap is a null pixmap 在网上看了很多帖子&#xff1a; 文件名改为英文&#xff08;未解决问题&#xff09;…

图像处理QPixmap、Picture、QBitmap

QPixmap 类是一种可用作绘制设备的屏幕外图像表示形式。 QPixmap可以使用QLabel或QAbstractButton的子类之一可以轻松显示在屏幕上 QPixmap 对象可以按值传递&#xff0c;因为 QPixmap 类使用隐式数据共享&#xff0c;也可以流式传输。 QPixmap可以和QImage之间进行转换&…

基于Qt的QPixmap和Qimage实现无锯齿圆角图片设置

简述 开发环境&#xff1a;Window10&#xff0c;Qt 5.9.9 &#xff0c;mingw32 近期做的用来展示图片的软件&#xff0c;涉及到使用QLabel控件和QPixmap类来显示圆角图片。 查了一些资料&#xff0c;发现实现的基本步骤是&#xff1a; 1.读取图片。通过Qt中的QImage或Qpixmap…

PyQt5组件之QPixmap

QPixmap简介 QPixmap类用于绘图设备的图像显示&#xff0c;它可以作为一个QPainterDevice对象&#xff0c;也可以加载到一个控件中&#xff0c;通常是标签或者按钮&#xff0c;用于在标签或按钮上显示图像QPixmap可以读取的图像文件类型有BMP&#xff0c;GIF&#xff0c;JPG等…

QPixmap

一、描述 Qt 提供了四个用于处理图像数据的类&#xff1a; QImage 是为 I/O 以及直接像素访问和操作而设计和优化的。QPixmap 是为在屏幕上显示图像而设计和优化的。QBitmap是一个继承QPixmap的便利类&#xff0c;保证深度为1。如果QPixmap对象确实是位图&#xff0c;isQBitm…

【全奖博士】香港大学招收计算机视觉方向博士/博后/研究助理

来源&#xff1a;AI求职 香港大学 香港大学 (The University of Hong Kong)&#xff0c;简称港大 (HKU)&#xff0c;是一所国际化公立研究型大学&#xff0c;位于香港岛中西区&#xff0c;成立于 1911 年。在最新 QS 世界排名和泰晤士世界排名中&#xff0c;分别位列第 21 位和…

为什么有的计算机本科生就能发表顶会,但是许多博士生还是一篇都没有?

我知道知乎有很多大神本科生&#xff0c;也有很多普通的博士生。希望本科大佬不要看不起那些平庸博士&#xff0c;博士生也不要嫉妒本科大佬。大家尽量客观的分析问题。 本科生还有很多时间要上课&#xff0c;博士生全天科研而且有4,5年的时间。虽然能发顶会的本科生肯定是非常…

计算机专业博士阶段研究方向,国内计算机专业博士研究方向

国内计算机专业博士研究方向 国内计算机专业博士研究方向 学校名称 专业 研究方向 复旦大学 081202 计算机软件与理论 01数据库与知识库 02数字图书馆 03数据挖掘 04电子商务 05软件工程 06Web数据管理与数据挖掘 07对等(P2P) 计算技术 08流数据分析与管理 09智能信息处理 10算…

怎么学好数据结构?北大计算机博士亲授。

首先明确一下&#xff0c;为什么要学好数据结构&#xff1f;如果你是一位职场人士&#xff0c;那你肯定知道&#xff0c;工作中要用到数据结构的时候少之又少&#xff0c;所以很少会有职场人特意来学好数据结构。但是据我观察&#xff0c;这依然是有必要的。而且很多公司包括一…