超节点大单交付公告时连续中标背后的“隐性护城河”
2026/5/12 5:00:36
基于机器学习(ML)和PyQt可视化的恶意流量检测系统的完整实现,包括了抓包、协议解析、特征提取、模型训练、实时预测以及告警系统等功能,适合用作本科毕设项目。
scapy进行网络流量抓包。你可以选择真实抓包(需要管理员权限)或者使用模拟流量数据进行测试。(当前演示的是使用模拟流量数据测试的)XGBoost算法来进行分类。malicious-traffic-detection/ ├─ requirements.txt # 依赖库 ├─ README.md # 项目说明文档 ├─ run.py # 程序入口 ├─ config.py # 配置文件 ├─ capture.py # 网络抓包模块 ├─ parser.py # 协议解析模块 ├─ features.py # 特征提取模块 ├─ model.py # 机器学习模型模块 ├─ explain.py # SHAP 解释模块 ├─ alerts.py # 告警模块 ├─ gui.py # PyQt GUI模块 ├─ synthetic_data.py # 合成数据生成(用于训练) └─ utils.py # 工具类(例如时间戳获取)
capture.py:负责实时抓包。使用scapy进行抓包并通过回调函数处理每个数据包,将其传递给后续模块进行分析。parser.py:从抓取的包中提取原始的协议数据(如 IP、端口、标志位等)。features.py:将协议解析后的数据转换为机器学习模型所需的特征格式。model.py:训练恶意流量分类模型,并保存和加载模型。使用XGBoost算法进行训练,保存为.joblib文件。explain.py:使用 SHAP 为每个预测结果生成可解释报告。alerts.py:管理恶意流量的告警系统。当模型预测流量为恶意时,触发告警并在 GUI 中显示。gui.py:使用 PyQt5 创建 GUI,展示实时流量数据、分类预测结果以及历史告警。pip install -r requirements.txt
python run.py
config.py中的SIMULATE = False并且确保你有管理员权限(Linux 系统需要sudo权限,Windows 系统需要管理员权限)。model.py中的train_from_dataframe函数会读取特征数据,并训练出一个XGBoost模型。如果你使用的是合成数据,可以使用synthetic_data.py生成训练数据。explain.py提供了基于 SHAP 的模型解释功能。你可以为每个预测生成详细的 SHAP 可视化报告,帮助理解模型如何做出分类决策。RandomForest、SVM)进行比较,并优化模型参数以提高分类效果。