当前位置: 首页 > news >正文

使用Qt6 QML以及第三方库FluentUI、PCapPlusPlus开发一个自定义抓包软件

使用Qt6 QML以及第三方库FluentUI、PCapPlusPlus开发一个自定义抓包软件

  • Packet Capture Tool
    • 软件预览
      • 软件界面截图
    • JSON 配置文件说明
      • 基本配置
      • 字段定义 (`fields`)
      • 示例配置 (`docs/test.json`)
    • 技术栈
    • 主要特性
    • 项目结构
    • 快速开始
      • 依赖环境
      • 构建与运行
    • 使用指南
    • 单元测试
    • 架构设计
    • 许可证

Packet Capture Tool

一个功能强大的网络数据包捕获与分析工具,专为自定义协议解析而设计。采用 Qt6 QML 构建现代化用户界面,C++ 实现高效后端逻辑,支持实时数据包捕获、离线 PCAP 分析及基于 JSON 配置的多协议解析。

软件预览

软件界面截图

捕获界面报文详情解析视图

JSON 配置文件说明

本工具通过 JSON 文件定义自定义协议的解析规则。以下是配置字段的详细说明:

基本配置

  • protocolName: 协议名称,用于在界面展示。
  • transportType: 传输层协议类型,支持TCPUDP
  • port: 监听端口号。
  • length: 报文长度定义。
    • type: 长度类型,如fixed(固定长度)。
    • fixedValue: 固定长度的具体数值(字节)。

字段定义 (fields)

fields是一个数组,定义了协议中每个字段的解析规则:

  • name: 字段显示名称。
  • offset: 该字段在报文中的偏移量(从 0 开始)。
  • length: 字段所占的字节数。
  • type: 数据类型,支持:
    • uint8,uint16,uint32,uint64: 无符号整数。
    • int8,int16,int32,int64: 有符号整数。
    • string: 字符串。
    • bytearray: 原始字节数组(以十六进制显示)。
  • endianness: 字节序,支持big(大端)或little(小端)。

示例配置 (docs/test.json)

{"protocolName":"TestProtocol","transportType":"UDP","port":4430,"length":{"type":"fixed","fixedValue":29},"fields":[{"name":"Magic","offset":0,"length":4,"type":"uint32","endianness":"big"},{"name":"Sequence","offset":4,"length":2,"type":"uint16","endianness":"big"}]}

技术栈

  • UI 框架: Qt 6.4+ (使用 FluentUI 风格组件)
  • 后端语言: C++17
  • 抓包库: PcapPlusPlus (v25.05)
  • 构建系统: CMake (3.16+)
  • 测试框架: Qt Test Framework

主要特性

  • 实时捕获: 支持通过 PcapPlusPlus 实时抓取网卡数据包。
  • 自定义协议解析: 通过 JSON 配置文件灵活定义协议字段、偏移量、长度、类型(Int8-64, String, ByteArray)及字节序(大端/小端)。
  • 协议过滤: 支持按传输层协议(UDP/TCP)及端口号进行实时过滤。
  • 离线分析: 支持加载.pcap文件进行后期分析,或将捕获的报文保存为标准 PCAP 格式。
  • 十六进制视图: 提供报文原始数据的 Hex 视图,方便对照分析。
  • 现代化 UI: 基于 FluentUI 设计,支持深色/浅色模式,提供直观的解析树状视图。

项目结构

. ├── 3rdparty/ # 第三方依赖库 (FluentUI, PcapPlusPlus, Npcap SDK) ├── cmake/ # CMake 辅助脚本 ├── docs/ # 项目文档及截图 │ └── screenshots/ # 软件运行截图 ├── src/ │ ├── backend/ # C++ 后端核心逻辑 │ │ ├── PacketCaptureEngine # 数据包捕获引擎 │ │ ├── FilterEngine # 过滤与匹配逻辑 │ │ ├── ProtocolParser # 自定义协议解析器 │ │ ├── ConfigurationLoader # 协议配置加载 (JSON) │ │ ├── CaptureController # UI 与后端的桥接层 │ │ └── PacketModel # QML 列表模型 │ └── ui/ # QML 前端界面 │ └── MainWindow.qml # 主界面 ├── tests/ # 自动化单元测试 (协议验证、配置加载等) └── CMakeLists.txt # 项目主构建文件

快速开始

依赖环境

  • Qt 6.4+: 确保已安装Core,Gui,Qml,Quick,QuickControls2,QuickDialogs2模块。

  • Npcap (Windows):

    • 需要安装 Npcap 驱动 并在安装时勾选 “Install Npcap in WinPcap API-compatible Mode”。
  • PcapPlusPlus: 项目已内置相关依赖,通常无需额外安装。

构建与运行

# 克隆仓库gitclone https://github.com/RookieLinux/PacketCaptureToolcdPacketCaptureTool# 使用 CMake 配置并构建cmake-Bbuild-DCMAKE_BUILD_TYPE=Release cmake--buildbuild--configRelease# 运行程序./build/Release/PacketCaptureTool.exe

使用指南

  1. 加载配置: 点击 “Load Config” 按钮,选择您的协议定义.json文件。
  2. 选择网卡: 在下拉框中选择正确的网络接口。
  3. 开始抓包: 点击 “Start” 按钮开始捕获。
  4. 报文分析:
    • 在列表中点击任意报文。
    • 右侧面板将自动展示根据配置解析出的字段信息。
    • 底部面板展示对应的十六进制原始数据。
  5. 保存/加载: 使用菜单栏功能将报文保存为 PCAP 或加载现有的 PCAP 文件。

单元测试

项目包含完善的单元测试(位于tests/目录):

cdbuild ctest --output-on-failure

架构设计

系统遵循MVVM (Model-View-ViewModel)模式:

  • View (QML): 响应式 UI,负责交互与数据展示。
  • ViewModel (CaptureController): 业务逻辑核心,管理抓包状态与协议解析流程。
  • Model:PacketModel提供数据支撑,底层Engine负责高性能捕获。

许可证

MIT License

http://www.gsyq.cn/news/1500862.html

相关文章:

  • 2026年近期临沂全季5.0千里书卷品牌厂商选型指南 - 品牌鉴赏官2026
  • 从排名到转化:2026年五大SEO服务商服务能力多维度测评 - GEO优化
  • 2026年东莞硅胶制品厂家推荐:硅胶洗澡刷/酒吧垫/家居用品/公仔/钥匙扣/企业吉祥物,定制源头实力榜 - 品牌发掘
  • Matlab车型判别小工具:拖图进GUI,自动算车高比例分轿车/公交/面包车
  • 2026郑州大平层装修公司排行:郑州大平层装修/郑州新房毛坯装修/郑州装修公司/郑州全屋翻新/合规选型参考推荐 - 优质品牌商家
  • 多维聚合实战:超越GROUP BY的数据操作手册
  • 陕西透水混凝土施工技术全解析:西安彩色混凝土/西安彩色路面/西安生态透水路面/适配本地气候与合规标准 - 优质品牌商家
  • 2026年SEO服务商选型指南:五大优选品牌全维度解读与实力盘点 - GEO优化
  • 2026年新发布:探寻河北的悬浮拼接地板源头厂家联系方式 - 品牌鉴赏官2026
  • 2026年火锅底料加盟品牌排行及费用参考推荐:火锅店底料厂家供应/社区火锅店加盟真实回本周期多久/排行一览 - 优质品牌商家
  • BCU 平台 RS485 驱动适配:从 THVD1406 到 ISO3082
  • Obsidian同步太贵?手把手教你用Git+GitHub免费搭建个人知识库云端备份
  • Matlab口罩识别GUI工具:带语音提醒的本地图片检测程序
  • 2026年企业SEO服务商采购决策参考:五家口碑服务商全维度对比 - GEO优化
  • MC9S12伪停止模式与时钟监控:嵌入式低功耗与系统可靠性的核心实践
  • 数据的加密与解密(01:18)
  • S12ZVHY/ZVHL MCU外设电气规格与寄存器配置实战详解
  • 如何深度挖掘微信对话价值:WeChatMsg打造个人记忆数字档案库
  • AI 电动仿真树智能功率 MOSFET 完整选型方案
  • 2026北京好用的纤维素抑尘剂厂家排名参考 - 品牌排行榜
  • S12Z微控制器内存映射与中断控制:嵌入式系统稳定性的硬件基石
  • MC9S08MP16数据手册实战解读:从引脚配置到低功耗设计的硬件设计指南
  • 从SDH到OTN:老网工亲述骨干网升级踩过的那些‘坑’(含华为/中兴设备配置差异)
  • 4步搭建AI头像生成平台:从零到专业级SaaS的实战路径
  • Java 中创建线程:继承 Thread vs 实现 Runnable 的区别
  • 数据的加密与解密(01:00)
  • 数据的加密与解密(01:09)
  • 基于AT89C52和MPX4115的胎压监测Proteus仿真套件(含源码、电路图、论文)
  • 2026医疗门技术细节拆解与专业厂家选型推荐:河北电磁屏蔽门/河北监狱门/河北钢制平开门/河北防弹门窗/实力盘点 - 优质品牌商家
  • 成都美容院装修品牌实测:三家本土服务商核心能力对比 - 优质品牌商家