Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/xuyw-seu/packetpatch
数据包嗅探与分析加密/解密工具网络安全隐私保护机器学习论文与研究学习与教育AI 安全对抗性攻击
GitHubxuyw-seu/packetpatch

PacketPatch

实用的黑盒对抗性数据包生成技术,针对加密流量分类,实现最小开销并完全恢复数据包。

查看仓库
712个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

PacketPatch:面向基于字节特征的加密流量分类的对抗性数据包实际生成与部署

论文:PacketPatch:面向基于字节特征的加密流量分类的对抗性数据包实际生成与部署
作者:Yuwei Xu, Yuanyuan Xu, Yunpeng Bai, Jiahui Chen, Kehui Song, Jie Cao, Qiao Xiang, Guang Cheng
单位:东南大学、紫金山实验室、天津工业大学、女王大学、厦门大学
状态:已接收/审稿中(Elsevier)

概述

PacketPatch 是一种实用的方案,用于生成针对基于字节特征的加密流量分类(B-ETC)模型的对抗性网络数据包,旨在保护用户隐私。与现有依赖不切实际的白盒假设或引入过多开销的方法不同,PacketPatch 在严格的黑盒条件下运行,同时保持实时性能和数据包可用性。

主要特性

  • 黑盒操作:无需访问目标模型的梯度、参数或训练数据
  • 用户无关:扰动生成仅依赖当前数据包特征,无需用户行为历史
  • 实时高效:单次前向传播生成,每个数据包平均延迟约 10 ms
  • 可控带宽开销:扰动长度 ≤ 原始数据包大小的 10%
  • 数据包有效性与可恢复性:对称代理架构确保数据包通过完整性校验,并可在接收端完美恢复

架构

架构图

PatchGenerator 工作流程

  1. 输入准备:分离数据包头与载荷;准备 [MASK] 令牌(长度 = 数据包大小的 10%)
  2. 序列构建:拼接 [CLS] + 包头 + Pad1 + [SEP] + 随机头(hr) + Pad2 + 载荷
  3. 扰动生成:单次 BERT 前向传播 → 词表上的概率分布
    • Pad1 → arg min(最大程度破坏原始特征)
    • Pad2 → arg max(生成与随机头对齐的特征)
  4. 向量组装:最终扰动 v = Pad1 + hr + Pad2

仓库结构

root@kitploit:~
PacketPatch/
├── README.md                          # 项目概览(本文件)
├── LICENSE                            # MIT 许可
├── requirements.txt                   # Python 依赖
├── bert_base_config.json              # BERT 模型配置(12 层,768 维,12 注意力头)
│
├── packet_adv/                        # ★ 核心实验代码
│   ├── README.md                      # 核心模块使用指南
│   ├── adv_fine_tuning_cls.py         # 步骤 1:训练 PatchGenerator(SpanBERT)
│   ├── generate.py                    # 步骤 2:生成对抗性数据包
│   └── gen_onnx.py                    # 步骤 3(可选):ONNX/TensorRT 加速
│
├── uer/                               # UER(Universal Encoder Representations)框架
│   ├── README.md                      # 框架文档
│   ├── encoders/                      # 编码器实现(Transformer、RNN、CNN)
│   ├── layers/                        # 网络层(嵌入、注意力、前馈网络)
│   ├── targets/                       # 训练目标(MLM、NSP、Span-MBM 等)
│   ├── models/                        # 模型定义
│   ├── utils/                         # 实用工具(分词器、优化器、数据加载)
│   ├── model_builder.py               # 模型构建
│   ├── model_loader.py                # 预训练权重加载
│   ├── model_saver.py                 # 模型检查点保存
│   ├── trainer.py                     # 训练循环实现
│   └── opts.py                        # 命令行参数定义
│
├── dataset/                           # 数据集文档
│   └── README.md                      # 数据集描述、下载链接、预处理
│
├── image/                             # 架构与结果图
│   └── README.md                      # 图说明
│
└── tools/                             # 实用工具
    └── README.md                      # 工具说明与用法

快速开始

1. 环境设置

root@kitploit:~
# 克隆此仓库
git clone https://github.com/your-org/PacketPatch.git
cd PacketPatch

# 安装依赖
pip install -r requirements.txt

要求:

  • Python 3.7+
  • NVIDIA GPU 且显存 ≥ 6GB(推荐:RTX 3080 或以上)
  • 系统内存 32GB+

2. 准备预训练模型与数据集

PacketPatch 基于 ET-BERT。从 ET-BERT 仓库 下载以下内容:

  • pretrained_model.bin — ET-BERT 预训练权重
  • encryptd_vocab.txt — 字节对编码的词汇表文件

数据集:我们在三个公开数据集上进行了评估。下载链接与预处理说明请参见 dataset/README.md。

数据集类别数场景
ISCX-TOR16Tor 匿名流量
ISCX-VPN11VPN 加密隧道
USTC20恶意软件 + 良性流量

3. 训练 PatchGenerator

root@kitploit:~
cd packet_adv

# 首先编辑 adv_fine_tuning_cls.py:
#   - 更新数据集路径(第 47-50 行)
#   - 更新预训练模型路径(第 73-75 行)
#   - 设置正确的 num_classes(第 56 行)
#   - 设置正确的训练集大小(第 878 行)

python adv_fine_tuning_cls.py

训练后的检查点将保存在指定的日志目录中(例如 span_2seg_cls_log/)。

4. 生成对抗性数据包

root@kitploit:~
cd packet_adv

# 首先编辑 generate.py:
#   - 更新测试数据路径(第 42-44 行)
#   - 将 --load_model_path 指向训练后的检查点(第 68-69 行)
#   - 设置 BWO(带宽开销比例,第 60 行,默认为 0.1)
#   - 通过 'fun' 参数选择生成策略(第 50 行)

python generate.py

5. (可选)使用 TensorRT 进行模型加速

root@kitploit:~
cd packet_adv

# 首先编辑 gen_onnx.py:
#   - 更新模型检查点路径(第 132 行)
#   - 更新输出路径(第 145、207 行)
#   - 选择精度模式:'fp16' 或 'int8'(第 21 行)

python gen_onnx.py

关键配置参数

生成策略(fun 参数)

训练任务

PacketPatch 的 PatchGenerator 通过两个自监督任务进行训练:

SCP(同类别预测)

判断两个输入数据包是否属于同一流量类别。这使模型具备判别性特征提取能力。

损失:二分类交叉熵

Span-MBM(跨度掩码字节建模)

利用双向上下文重建连续的掩码字节跨度。这使模型具备上下文感知的字节序列生成能力。

损失:负对数似然
总损失:Loss = Loss_SCP + Loss_Span-MBM

结果总结

防御效果(DSR:防御成功率)

防御效果

时间开销

阶段时间(毫秒/数据包)
数据包预处理0.054
扰动生成9.626
数据包重构0.398
总计10.078

PacketPatch 在严格黑盒假设下优于以下白盒基线方法:

与基线方法比较

引用

如果您在研究中使用 PacketPatch,请引用我们的论文:

root@kitploit:~
@article{xu2025packetpatch,
    title = {PacketPatch: Practical Generation and Deployment of Adversarial Packets for Byte-Feature-Based Encrypted Traffic Classification},
    author = {Yuwei Xu and Yuanyuan Xu and Yunpeng Bai and Jiahui Chen and Kehui Song and Jie Cao and Qiao Xiang and Guang Cheng},
    journal = {Elsevier},
    year = {2025},
}

许可

本项目采用 MIT 许可协议 — 详见 LICENSE 文件。

联系方式

如有问题或咨询,请联系通讯作者或在 GitHub 上提交 issue。

  • Yuwei Xu — [email protected]
  • Yuanyuan Xu — [email protected]

致谢

本项目基于 ET-BERT 框架构建,该框架提供了预训练模型和 UER(Universal Encoder Representations)训练框架。感谢 ET-BERT 作者的宝贵贡献。

下载工具
参数文件行号描述默认值
BWOgenerate.py60带宽开销比例0.1(10%)
fungenerate.py50生成策略'fun5'
n_epochsadv_fine_tuning_cls.py53训练轮数50
batch_sizeadv_fine_tuning_cls.py54批量大小32
num_classesadv_fine_tuning_cls.py56流量类别数取决于数据集
learning_rateadv_fine_tuning_cls.py94-95学习率2e-5
seq_lengthadv_fine_tuning_cls.py92-93输入序列长度256
策略说明
fun1单段,argmin 选择
fun2双段,两者均使用 argmax
fun3双段,固定 50/50 分割,Pad1 argmin + Pad2 argmax
fun4双段,随机分割,Pad1 argmin + Pad2 argmax
fun5(默认)双段带随机虚拟头,Pad1 argmin + Pad2 argmax
fun6双段带虚拟头,NSP 引导策略
random随机基线
random_dummy_head随机替换头基线
random_pad随机填充基线