
Geração adversarial prática de pacotes em caixa-preta contra a classificação de tráfego criptografado, com sobrecarga mínima e recuperabilidade total dos pacotes.
Artigo: 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 Afiliação: Southeast University, Purple Mountain Laboratories, Tiangong University, Queen's University, Xiamen University Status: Aceito/Em revisão (Elsevier)
O PacketPatch é um esquema prático para gerar pacotes de rede adversariais contra modelos de Classificação de Tráfego Criptografado Baseada em Byte-Features (B-ETC), com o objetivo de proteger a privacidade do usuário. Diferentemente dos métodos existentes, que dependem de suposições irreais de caixa-branca ou introduzem sobrecarga excessiva, o PacketPatch opera sob condições estritas de caixa-preta, mantendo desempenho em tempo real e usabilidade dos pacotes.

Pad1 → arg min (perturba ao máximo as características originais)Pad2 → arg max (gera características alinhadas ao cabeçalho aleatório)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:
O PacketPatch é construído sobre o ET-BERT. Baixe o seguinte do repositório ET-BERT:
pretrained_model.bin — pesos pré-treinados do ET-BERTencryptd_vocab.txt — arquivo de vocabulário para codificação byte-pairConjuntos de dados: Avaliamos em três conjuntos de dados públicos. Consulte dataset/README.md para links de download e instruções de pré-processamento.
| Conjunto de Dados | Classes | Cenário |
|---|---|---|
| ISCX-TOR | 16 | Tráfego anônimo Tor |
| ISCX-VPN | 11 | Túneis VPN criptografados |
| USTC | 20 | Tráfego de malware + 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
O checkpoint treinado será salvo no diretório de log especificado (ex.: 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
| Parâmetro | Arquivo | Linha | Descrição | Padrão |
|---|---|---|---|---|
BWO | generate.py | 60 | Taxa de sobrecarga de largura de banda | 0,1 (10%) |
fun | generate.py | 50 | Estratégia de geração | 'fun5' |
n_epochs | adv_fine_tuning_cls.py | 53 | Épocas de treinamento | 50 |
batch_size | adv_fine_tuning_cls.py | 54 | Tamanho do lote | 32 |
num_classes | adv_fine_tuning_cls.py | 56 | Número de classes de tráfego | Depende do conjunto de dados |
learning_rate | adv_fine_tuning_cls.py | 94-95 | Taxa de aprendizado | 2e-5 |
seq_length | adv_fine_tuning_cls.py | 92-93 | Comprimento da sequência de entrada | 256 |
fun)| Estratégia | Descrição |
|---|---|
fun1 | Segmento único, seleção por argmin |
fun2 | Dois segmentos, ambos argmax |
fun3 | Dois segmentos, divisão fixa 50/50, Pad1 argmin + Pad2 argmax |
fun4 | Dois segmentos, divisão aleatória, Pad1 argmin + Pad2 argmax |
fun5 (padrão) | Dois segmentos com cabeçalho fictício aleatório, Pad1 argmin + Pad2 argmax |
fun6 | Dois segmentos com cabeçalho fictício, estratégia guiada por NSP |
random | Linha de base aleatória |
random_dummy_head | Linha de base com substituição aleatória de cabeçalho |
random_pad | Linha de base com preenchimento aleatório |
O PatchGenerator do PacketPatch é treinado com duas tarefas autossupervisionadas:
Determina se dois pacotes de entrada pertencem à mesma categoria de tráfego. Isso capacita o modelo com habilidades de extração de características discriminativas.
Perda: Entropia Cruzada Binária
Reconstrói intervalos consecutivos de bytes mascarados usando contexto bidirecional. Isso capacita o modelo com habilidades de geração de sequências de bytes sensíveis ao contexto.
Perda: Log-Verosimilhança Negativa
Perda Total: Loss = Loss_SCP + Loss_Span-MBM

| Etapa | Tempo (ms/pacote) |
|---|---|
| Pré-processamento do Pacote | 0,054 |
| Geração de Perturbação | 9,626 |
| Reconstrução do Pacote | 0,398 |
| Total | 10,078 |
O PacketPatch supera os seguintes métodos de linha de base de caixa-branca sob suposições estritas de caixa-preta:

Se você usar o PacketPatch em sua pesquisa, cite nosso artigo:
@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},
}
Este projeto está licenciado sob a Licença MIT — consulte o arquivo LICENSE para obter detalhes.
Para perguntas e consultas, entre em contato com o autor correspondente ou abra uma issue no GitHub.
Este projeto é construído sobre o framework ET-BERT, que fornece o modelo pré-treinado e o framework de treinamento UER (Universal Encoder Representations). Agradecemos aos autores do ET-BERT por suas valiosas contribuições.