MysteryObstacle/Lambert
GitHub: MysteryObstacle/Lambert
基于BERT架构的加密流量分类微调模型,通过改进注意力机制提升对未知数据集的分类效果。
Stars: 17 | Forks: 0
# Lambert🐣

`注:` 本代码基于 [UER-py](https://github.com/dbiir/UER-py) 和 [ET-BERT](https://github.com/linwhitehat/ET-BERT)
## 1. 简介
Fine-tuning 是基于预训练方法的重要组成部分。
LAMBERT 是一种新颖的 Fine-tuning 模型,它利用其独特的注意力机制来改善序列损失。
这种改进在未经预训练的数据集上尤为明显。
## 2. 准备工作
### 2.1 克隆仓库
```
git clone https://github.com/MysteryObstacle/Lambert.git
cd Lambert
```
### 2.2 创建新的 conda 环境
```
conda create -n LAMBERT python=3.8.16
conda activate LAMBERT
```
### 2.3 安装 Pytorch
```
pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu121
```
### 2.4 安装其他依赖
```
pip install -r requirements.txt
```
### 2.5 配置环境变量
如果你使用的是 Linux,可以这样做:
```
export PYTHON PATH="${PYTHONPATH}:./"
```
如果你使用的是 Windows,可以手动将 lambert 的根目录路径添加到 python 环境变量中。
## 3. 数据集
### 3.1 原始数据集
| 数据集 | 数据包 | 标签 |
|------------------|--------|-------|
| ISCX-VPN-Service | 60000 | 12 |
| ISCX-VPN-App | 77163 | 17 |
| USTC-TFC | 97115 | 20 |
| CSTNET-TLS1.3 | 581709 | 120 |
1. [ISCX-VPN](https://drive.google.com/drive/folders/1is609sosAdqf9YJAfwr72hBqM4OeNuZq?usp=sharing)(包含 ISCX-VPN-Service 和 ISCX-VPN-App)
2. [USTC-TFC](https://drive.google.com/file/d/1F09zxln9iFg2HWoqc6m4LKFhYK7cDQv_/view?usp=sharing)
3. [CSTNET-TLS1.3](https://drive.google.com/drive/folders/1is609sosAdqf9YJAfwr72hBqM4OeNuZq?usp=sharing)
4. 或者你也可以准备自己的数据集。
### 3.2 处理后的数据集
`注:` 原始流量数据需要进行预处理,预处理部分与 [ET-BERT](https://github.com/linwhitehat/ET-BERT) 一致
将数据处理好放入 datasets 文件夹后,文件树示例如下:
```
├─iscx-app
│ └─packet
│ └─nolabel_test_dataset.tsv
│ └─test_dataset.tsv
│ └─train_dataset.tsv
│ └─valid_dataset.tsv
├─iscx-service
│ └─packet
│ └─nolabel_test_dataset.tsv
│ └─test_dataset.tsv
│ └─train_dataset.tsv
│ └─valid_dataset.tsv
└─ustc-tfc
│ └─packet
│ └─nolabel_test_dataset.tsv
│ └─test_dataset.tsv
│ └─train_dataset.tsv
│ └─valid_dataset.tsv
└─cstnet-tls1.3
└─packet
└─nolabel_test_dataset.tsv
└─test_dataset.tsv
└─train_dataset.tsv
└─valid_dataset.tsv
```
## 3. 使用方法
### 3.1 预训练
```
python pre-training/pretrain.py --dataset_path dataset.pt --vocab_path models/encryptd_vocab.txt \
--output_model_path models/pre-trained_model.bin \
--world_size 8 --gpu_ranks 0 1 2 3 4 5 6 7 \
--total_steps 500000 --save_checkpoint_steps 10000 --batch_size 32 \
--embedding word_pos_seg --encoder transformer --mask fully_visible --target bert
```
### 3.2 Fine-tuning
```
python fine-tuning/lambert.py \
--pretrained_model_path models/pre-trained_model.bin \
--output_model_path output/lambert/lambert.bin \
--evaluate_output_path output/lambert/lambert.txt \
--vocab_path models/encryptd_vocab.txt \
--train_path datasets/ustc-tfc/packet/train_dataset.tsv \
--dev_path datasets/ustc-tfc/packet/valid_dataset.tsv \
--test_path datasets/ustc-tfc/packet/test_dataset.tsv \
--epochs_num 20 --batch_size 32 --embedding word_pos_seg \
--encoder transformer --mask fully_visible \
--seq_length 128 --learning_rate 2e-5
```
### 3.3 推理
```
python inference/infer.py \
--classifier_file fine-tuning/lambert.py \
--classifier_name Lambert \
--load_model_path output/lambert/lambert.bin \
--test_path datasets/ustc-tfc/packet/test_dataset.tsv \
--prediction_path output/lambert/infer.tsv \
--vocab_path models/encryptd_vocab.txt \
--embedding word_pos_seg --encoder transformer --mask fully_visible
```
标签:Apex, BERT, ET-BERT, Google搜索, IP 地址批量处理, LAMBERT, PyTorch, TLS 1.3流量分析, Transformer, UER-py, Vectored Exception Handling, VPN流量识别, 入侵防御系统, 凭据扫描, 加密流量分类, 威胁猎捕, 微调, 恶意流量检测, 机器学习, 注意力机制, 流量识别, 深度学习, 网络安全, 网络流量分析, 逆向工具, 隐私保护, 预训练模型