
Generación práctica de paquetes adversariales de caja negra contra la clasificación de tráfico cifrado con sobrecarga mínima y recuperabilidad total de paquetes.
Artículo: PacketPatch: Practical Generation and Deployment of Adversarial Packets for Byte-Feature-Based Encrypted Traffic Classification Autores: Yuwei Xu, Yuanyuan Xu, Yunpeng Bai, Jiahui Chen, Kehui Song, Jie Cao, Qiao Xiang, Guang Cheng Afiliación: Southeast University, Purple Mountain Laboratories, Tiangong University, Queen's University, Xiamen University Estado: Aceptado/En revisión (Elsevier)
PacketPatch es un esquema práctico para generar paquetes de red adversariales contra modelos de clasificación de tráfico cifrado basada en características de bytes (B-ETC), con el objetivo de proteger la privacidad del usuario. A diferencia de los métodos existentes que dependen de suposiciones poco realistas de caja blanca o introducen una sobrecarga excesiva, PacketPatch opera bajo condiciones estrictas de caja negra manteniendo un rendimiento en tiempo real y la usabilidad de los paquetes.

Pad1 → arg min (maximiza la disrupción de las características originales)Pad2 → arg max (genera características alineadas con la cabecera aleatoria)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
Requisitos:
PacketPatch está construido sobre ET-BERT. Descarga lo siguiente del repositorio de ET-BERT:
pretrained_model.bin — pesos preentrenados de ET-BERTencryptd_vocab.txt — archivo de vocabulario para la codificación por pares de bytesConjuntos de datos: Evaluamos con tres conjuntos de datos públicos. Consulta dataset/README.md para los enlaces de descarga y las instrucciones de preprocesamiento.
| Conjunto de datos | Clases | Escenario |
|---|---|---|
| ISCX-TOR | 16 | Tráfico anónimo de Tor |
| ISCX-VPN | 11 | Túneles VPN cifrados |
| USTC | 20 | Tráfico de malware y benigno |
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
El checkpoint entrenado se guardará en el directorio de registro especificado (p. ej., 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