
توليد عملي لحزم الشبكة الخصومية بصندوق أسود ضد تصنيف حركة المرور المشفّرة، مع حمل إضافي أدنى واستعادة كاملة للحزم.
الورقة: PacketPatch: التوليد والنشر العمليان للحزم الخصومة لتصنيف حركة المرور المشفّرة القائم على ميزات البايت المؤلفون: Yuwei Xu, Yuanyuan Xu, Yunpeng Bai, Jiahui Chen, Kehui Song, Jie Cao, Qiao Xiang, Guang Cheng الانتماء: جامعة الجنوب الشرقي، مختبرات جبل الأرجوان، جامعة تيانقونغ، جامعة كوينز، جامعة شيامن الحالة: مقبول/قيد المراجعة (Elsevier)
PacketPatch هو نظام عملي لتوليد حزم شبكة خصومة ضد نماذج تصنيف حركة المرور المشفرة القائم على ميزات البايت (B-ETC)، بهدف حماية خصوصية المستخدم. على عكس الطرق الحالية التي تعتمد على افتراضات الصندوق الأبيض غير الواقعية أو تُدخل عبئًا زائدًا، يعمل PacketPatch في ظل ظروف الصندوق الأسود الصارمة مع الحفاظ على الأداء اللحظي وقابلية استخدام الحزم.

Pad1 → arg min (يعطّل الميزات الأصلية إلى أقصى حد)Pad2 → arg max (يولّد ميزات متوافقة مع الترويسة العشوائية)PacketPatch/
├── README.md # Project overview (this file)
├── LICENSE # MIT License
├── requirements.txt # Python dependencies
├── bert_base_config.json # BERT model configuration (12 layers, 768-dim, 12 heads)
│
├── packet_adv/ # ★ Core experimental code
│ ├── README.md # Usage guide for core modules
│ ├── adv_fine_tuning_cls.py # Step 1: Train PatchGenerator (SpanBERT)
│ ├── generate.py # Step 2: Generate adversarial packets
│ └── gen_onnx.py # Step 3 (optional): ONNX/TensorRT acceleration
│
├── uer/ # UER (Universal Encoder Representations) framework
│ ├── README.md # Framework documentation
│ ├── encoders/ # Encoder implementations (Transformer, RNN, CNN)
│ ├── layers/ # Network layers (Embedding, Attention, FFN)
│ ├── targets/ # Training targets (MLM, NSP, Span-MBM, etc.)
│ ├── models/ # Model definition
│ ├── utils/ # Utilities (tokenizers, optimizers, data loading)
│ ├── model_builder.py # Model construction
│ ├── model_loader.py # Pretrained weight loading
│ ├── model_saver.py # Model checkpoint saving
│ ├── trainer.py # Training loop implementation
│ └── opts.py # CLI argument definitions
│
├── dataset/ # Dataset documentation
│ └── README.md # Dataset descriptions, download links, preprocessing
│
├── image/ # Architecture and result figures
│ └── README.md # Figure descriptions
│
└── tools/ # Utility tools
└── README.md # Tool descriptions and usage
# Clone this repository
git clone https://github.com/your-org/PacketPatch.git
cd PacketPatch
# Install dependencies
pip install -r requirements.txt
المتطلبات:
تم بناء PacketPatch على ET-BERT. حمّل ما يلي من مستودع ET-BERT:
pretrained_model.bin — أوزان ET-BERT المدربة مسبقًاencryptd_vocab.txt — ملف المفردات لتشفير أزواج البايتاتمجموعات البيانات: نقيّم على ثلاث مجموعات بيانات عامة. انظر dataset/README.md لروابط التحميل وتعليمات المعالجة المسبقة.
| مجموعة البيانات | الفئات | السيناريو |
|---|---|---|
| ISCX-TOR | 16 | حركة مرور تور المجهولة |
| ISCX-VPN | 11 | أنفاق VPN المشفرة |
| USTC | 20 | حركة مرور خبيثة + سليمة |
cd packet_adv
# Edit adv_fine_tuning_cls.py first:
# - Update dataset paths (lines 47-50)
# - Update pretrained model path (lines 73-75)
# - Set correct num_classes (line 56)
# - Set correct training set size (line 878)
python adv_fine_tuning_cls.py
سيتم حفظ نقطة التحقق المدربة في دليل السجلات المحدد (مثل span_2seg_cls_log/).
cd packet_adv
# Edit generate.py first:
# - Update test data paths (lines 42-44)
# - Update --load_model_path to your trained checkpoint (line 68-69)
# - Set BWO (bandwidth overhead ratio, line 60, default 0.1)
# - Choose generation strategy via 'fun' parameter (line 50)
python generate.py
cd packet_adv
# Edit gen_onnx.py first:
# - Update model checkpoint path (line 132)
# - Update output paths (lines 145, 207)
# - Select precision mode: 'fp16' or 'int8' (line 21)
python gen_onnx.py
fun)يتم تدريب PatchGenerator الخاص بـ PacketPatch باستخدام مهمتين ذاتيتين الإشراف:
تحدد ما إذا كانت حزمتا الإدخال تنتميان إلى نفس فئة حركة المرور. يمنح ذلك النموذج قدرات استخراج ميزات تمييزية.
الخسارة: الإنتروبيا المتقاطعة الثنائية
يعيد بناء مقاطع البايت المقنّعة المتتالية باستخدام السياق ثنائي الاتجاه. يمنح ذلك النموذج قدرات توليد تسلسلات بايت واعية بالسياق.
الخسارة: السالب للوغاريتم الاحتمالي
الخسارة الكلية: Loss = Loss_SCP + Loss_Span-MBM

| المرحلة | الوقت (مللي ثانية/حزمة) |
|---|---|
| معالجة الحزمة الأولية | 0.054 |
| توليد التعديل | 9.626 |
| إعادة بناء الحزمة | 0.398 |
| الإجمالي | 10.078 |
يتفوق PacketPatch على طرق الأساس ذات الصندوق الأبيض التالية في ظل افتراضات الصندوق الأسود الصارمة:

إذا استخدمت PacketPatch في بحثك، فيرجى الاستشهاد بورقتنا:
@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.
يعتمد هذا المشروع على إطار ET-BERT، الذي يوفر النموذج المدرب مسبقًا وإطار التدريب UER (التمثيلات العالمية للمشفّر). نشكر مؤلفي ET-BERT على مساهماتهم القيمة.
| المعامل | الملف | السطر | الوصف | الافتراضي |
|---|
BWO | generate.py | 60 | نسبة عبء النطاق الترددي | 0.1 (10%) |
fun | generate.py | 50 | استراتيجية التوليد | 'fun5' |
n_epochs | adv_fine_tuning_cls.py | 53 | عصور التدريب | 50 |
batch_size | adv_fine_tuning_cls.py | 54 | حجم الدفعة | 32 |
num_classes | adv_fine_tuning_cls.py | 56 | عدد فئات حركة المرور | يعتمد على مجموعة البيانات |
learning_rate | adv_fine_tuning_cls.py | 94-95 | معدل التعلم | 2e-5 |
seq_length | adv_fine_tuning_cls.py | 92-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 | خط الأساس للحشو العشوائي |