
न्यूनतम ओवरहेड और पूर्ण पैकेट पुनर्प्राप्ति के साथ एन्क्रिप्टेड ट्रैफिक वर्गीकरण के विरुद्ध व्यावहारिक ब्लैक-बॉक्स एडवर्सेरियल पैकेट जनरेशन।
पेपर: PacketPatch: बाइट-फीचर-आधारित एन्क्रिप्टेड ट्रैफिक वर्गीकरण के लिए एडवरसैरियल पैकेट्स की व्यावहारिक पीढ़ी और तैनाती लेखक: Yuwei Xu, Yuanyuan Xu, Yunpeng Bai, Jiahui Chen, Kehui Song, Jie Cao, Qiao Xiang, Guang Cheng संबद्धता: Southeast University, Purple Mountain Laboratories, Tiangong University, Queen's University, Xiamen University स्थिति: स्वीकृत/समीक्षाधीन (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 | Tor अनाम ट्रैफिक |
| 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 पैरामीटर)PacketPatch का PatchGenerator दो स्व-पर्यवेक्षित कार्यों के साथ प्रशिक्षित किया गया है:
यह निर्धारित करता है कि दो इनपुट पैकेट एक ही ट्रैफिक श्रेणी से संबंधित हैं या नहीं। यह मॉडल को विभेदक फीचर निष्कर्षण क्षमताओं से लैस करता है।
हानि: बाइनरी क्रॉस-एन्ट्रॉपी
द्विदिश संदर्भ का उपयोग करके लगातार मास्क्ड बाइट स्पैन का पुनर्निर्माण करता है। यह मॉडल को संदर्भ-जागरूक बाइट अनुक्रम निर्माण क्षमताओं से लैस करता है।
हानि: नेगेटिव लॉग-लाइक्लिहुड
कुल हानि: Loss = Loss_SCP + Loss_Span-MBM

| चरण | समय (ms/पैकेट) |
|---|---|
| पैकेट प्रीप्रोसेसिंग | 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 पर एक issue खोलें।
यह प्रोजेक्ट 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 | यादृच्छिक पैडिंग आधार रेखा |