wangkai-tech23/LiPar

GitHub: wangkai-tech23/LiPar

LiPar 是一种轻量级并行学习模型,用于车载网络入侵检测,以提升检测效率并适应实际车辆环境。

Stars: 26 | Forks: 4

# LiPar LiPar 是一种轻量级并行学习模型,用于实用的车载网络入侵检测。LiPar 具有出色的检测性能、运行效率和轻量化的模型尺寸,能够很好地适应实际车载环境,保护车载 CAN 总线的安全。 详细信息请参阅我们的论文 **LiPar: A Lightweight Parallel Learning Model for Practical In-Vehicle Network Intrusion Detection**。 ([arXiv:2311.08000v2](https://arxiv.org/abs/2311.08000v2)) ## 数据集 我们使用的数据集是 [Car-Hacking Dataset](https://ocslab.hksecurity.net/Datasets/car-hacking-dataset)(您可以通过链接查看该数据集的详细信息)。我们也将数据文件上传至 `./OriginalDataset/` 目录。由于上传文件大小限制,我们将每个数据文件压缩为 `.rar` 格式。您可以通过解压文件获得原始数据。 ## 数据处理 数据处理代码已上传至 `./DataProcessing/` 目录。以下是我们数据处理的具体步骤: 1. **数据预处理与清洗**:`data_process.py` 用于处理攻击数据集,包括 `DoS_Attack_dataset`、`Fuzzy_Attack_dataset`、`Spoofing_the_RPM_gauge_dataset` 和 `Spoofing_the_drie_gear_dataset`。`data_process_normal.py` 仅用于处理 `normal` 数据集。您可以通过修改代码中的 `file_path` 和 `df.to_csv` 函数中的新文件名,来逐一预处理数据集。程序将分别生成五个预处理后的数据文件。生成的数据集位于压缩文件 `./DataProcessing/PreprocessedData.rar` 中。 2. **图像数据生成**:`img_generator_seq.py` 用于将一维数据顺序处理为 RGB 图像数据。对于攻击数据集,其中同时包含攻击报文和正常报文。因此,如果一幅图像完全由正常报文构成,我们将其标记为正常图像,否则标记为攻击图像。这意味着每个攻击数据集可以生成两组图像。您可以在代码的 `image_path_attack` 和 `image_path_normal` 中设置不同的目录地址,用于存储生成的攻击图像和正常图像。每组新生成的图像将按顺序从 1 到 `n`(`n` 为该组图像总数)命名。处理完一个数据文件后,您可以修改 `file_path` 中的文件名和路径以处理其他文件。我们使用的是上一步获得的预处理数据文件。对于正常数据集,程序自然只会生成一组正常图像。最终,您将在不同目录下获得 9 组图像。 3. **数据集划分**:我们用于存储所有图像的目录是 `./data_sequential_img/train/`。接下来,我们需要从所有图像数据中划分出训练集、验证集和测试集。`split_trainset.py` 用于将总图像数据的 30% 划分到验证集和测试集目录 `./data_sequential_img/val/`。然后,`split_testset.py` 用于将 `val` 集中的 $\frac{1}{3}$ 图像划分到名为 `./data_sequential_img/test/` 的测试集。最终,训练集、验证集和测试集中的图像比例为 `7:2:1`。您也可以通过修改代码中的 `Train_Dir`、`Val_Dir` 和 `Test_Dir` 来更改路径和目录名称。 ## 模型训练与测试 对于基于学习的模型,首先需要对模型进行训练,通过训练获得模型中的最优权重和参数值。最后,将训练得到的权重和参数加载到模型中进行测试,以验证模型的最终检测性能。 因此,我们为每个模型构建了两个程序,分别用于模型的训练过程和测试过程。您会发现类似 `train.py`、`train_LSTM.py` 或 `train_CANet.py` 的文件用于模型训练,而类似 `predict.py`、`predict_LSTM.py` 或 `predict_CANet.py` 的文件用于模型测试。 以 STParNet 为例,模型构建、训练和测试的所有文件都存储在同一目录 `./STParNet/` 下。训练前,您需要通过类似 `from par_DW_LSTM4 import ParDWLSTM` 的代码导入要训练的模型。此处,`par_DW_LSTM4` 是构建模型的 Python 文件名,`ParDWLSTM` 是模型的主类。您还需要设置输入图像的路径。`image_path` 指向所有图像所在的目录,`train_dataset` 中的 `root` 指向训练集目录,`validate_dataset` 中的 `root` 指向验证集目录。此外,`save_path` 指向用于保存最优权重和参数文件的路径,文件格式为 .pth。 类似地,在测试模型时,我们可能需要修改 `predict.py` 中 `image_path` 所使用的测试数据路径,以及 `model_weight_path` 中加载已训练模型参数文件的路径。 ## 模型尺寸统计 模型尺寸测试的代码已上传至 `./MemoryTest/` 目录。运行每个程序可以获取模型各部分的内存消耗。 ## 资源自适应算法 资源自适应算法的代码已上传至 `./ResouceAdaptationModel/` 目录。代码中的具体参数需要根据实际需求进行设置。 如有其他问题,请联系 zahboyos@163.com。
标签:Apex, CAN总线安全, Car-Hacking数据集, PFX证书, 人工智能, 凭据扫描, 图像生成, 实际部署, 并行学习, 攻击检测, 数据预处理, 机器学习, 用户模式Hook绕过, 网络入侵检测系统, 网络安全, 车载网络安全, 车辆安全, 轻量级模型, 逆向工具, 隐私保护