WafaaRahmoune/Intrusion-Detection-System
GitHub: WafaaRahmoune/Intrusion-Detection-System
基于多种机器学习与深度学习模型的智能网络入侵检测系统,支持离线 PCAP 分析和实时流量嗅探,可检测并分类 20 种网络攻击。
Stars: 0 | Forks: 0
# 智能入侵检测系统 (IDS)





一款智能入侵检测系统,结合 **7+ 种机器学习/深度学习模型**与元启发式特征优化(**PSO** 和 **Firefly**),能够检测并分类 **20 种网络攻击**。它可以分析来自 **PCAP 文件**或通过 **实时抓包**(Scapy)获取的流量,并在 NF-UQ-NIDS 数据集上达到了约 **97% 的准确率**。
## 功能
- 检测并分类 **20 种攻击类型**
- 支持对 **PCAP 文件**的离线分析与 **实时流量嗅探**(Scapy)
- 提供 **7+ 种 ML/DL 模型**(XGBoost, AdaBoost, Random Forest, LSTM, DNN, ...)
- 使用 **PSO** 和 **Firefly** 进行特征优化,使用 **PCA** 进行降维
- Web 仪表盘:上传、实时扫描、结果展示、攻击案例、历史/归档记录
- 带有邮箱验证的用户认证(JWT)
- 内置助手 / 聊天机器人
## 架构
```
Intrusion-Detection-System/
├── Back-end/ # Flask REST API
│ ├── app.py # application entry point
│ ├── routes.py # API endpoints
│ ├── flow_utils.py # PCAP parsing, flow features, prediction
│ ├── models.py # SQLAlchemy models (User, UploadedFile)
│ ├── models/ # ML artifacts (feature scaler)
│ ├── encoders/ # feature encoders
│ ├── migrations/ # Alembic database migrations
│ ├── requirements.txt
│ └── .env.example # template for your secrets
├── frontend/ # React (Vite) single-page app
│ └── src/ (Pages, Components, Styles, assets)
└── README.md
```
## 技术栈
- **后端:** Python, Flask, Flask-SQLAlchemy, Flask-JWT-Extended, Flask-Migrate (Alembic), Flask-Mail, Scapy, pandas, scikit-learn, XGBoost, joblib, PostgreSQL
- **前端:** React, Vite, JavaScript, CSS
## 快速开始
### 前置条件
- Python 3.10+
- Node.js 18+
- PostgreSQL
### 1. 后端
```
cd Back-end
python -m venv venv
# Windows: venv\Scripts\activate
# Linux / macOS: source venv/bin/activate
pip install -r requirements.txt
# 配置你自己的 secrets
cp .env.example .env # then edit .env with your values
python app.py # starts the API on http://localhost:5000
```
应用程序在首次运行时会自动创建数据库表。
也可以通过 `flask --app app db upgrade` 来执行数据库迁移。
### 2. 前端
```
cd frontend
npm install
npm run dev # starts the app on http://localhost:5173
```
## 配置 (.env)
所有密钥均从环境变量中读取,且**绝不提交到代码仓库**。
将 `Back-end/.env.example` 复制为 `Back-end/.env` 并填写以下内容:
- `DATABASE_URL` : 你的 PostgreSQL 连接字符串
- `JWT_SECRET_KEY` : 一串较长的随机字符串
- `MAIL_USERNAME` / `MAIL_PASSWORD` : 一个 Gmail 地址和对应的 Gmail **应用密码**
## 数据集与模型
- 在 **NF-UQ-NIDS** 数据集(20 个攻击类别)上进行训练和评估。
- 模型包括:XGBoost, AdaBoost, Random Forest, LSTM, DNN;使用 **PSO** 和 **Firefly** 进行特征优化;使用 **PCA** 进行降维。
- 报告的性能:约 **97% 的准确率**。
- 注意:未提交大型的已训练模型权重文件;`Back-end/models/` 目录中仅包含轻量级的预处理产物。
## 许可证
基于 MIT License 发布。详见 [LICENSE](LICENSE)。
标签:Apex, Flask, React, Syscalls, 入侵检测系统, 安全数据湖, 机器学习, 测试用例, 深度学习, 网络安全, 自定义脚本, 逆向工具, 隐私保护