prathmeshjagtap75/Intrusion-Detection-System-Using-Machine-Learning-and-Wireshark
GitHub: prathmeshjagtap75/Intrusion-Detection-System-Using-Machine-Learning-and-Wireshark
结合 Wireshark 抓包与 Random Forest 机器学习算法,实现网络流量的入侵检测与正常/可疑分类。
Stars: 0 | Forks: 0
# 使用机器学习和 Wireshark 的入侵检测系统
一个基于机器学习的入侵检测系统(IDS),它使用 **Wireshark** 捕获真实网络流量,提取数据包特征,并使用 **Random Forest** 分类器将网络活动分类为 **Normal(正常)** 或 **Suspicious(可疑)**。在 **Kali Linux** 上使用 Python 和 Scikit-learn 开发。
# 概述
入侵检测系统(IDS)在现代网络安全中发挥着关键作用,通过监控网络流量来识别可疑活动。传统的 IDS 解决方案依赖于基于特征的检测,而基于机器学习的 IDS 解决方案则学习流量模式,并能从捕获的网络数据中识别异常。
本项目演示了完整的 IDS 工作流程——从使用 **Wireshark** 捕获数据包,到使用 **Python** 和 **Scikit-learn** 训练和评估机器学习模型。
# 目标
* 使用 Wireshark 捕获实时网络流量。
* 从 PCAP 文件中提取有意义的数据包特征。
* 为机器学习构建结构化数据集。
* 训练 Random Forest 分类器。
* 将网络流量分类为 **Normal(正常)** 或 **Suspicious(可疑)**。
* 使用标准机器学习指标评估模型性能。
# 功能
* 使用 Wireshark 进行实时数据包捕获
* 使用 PyShark 处理 PCAP 文件
* 自动生成 CSV 数据集
* 基于 Random Forest 的入侵检测
* 使用 Accuracy Score 进行模型评估
* 生成 Confusion Matrix
* Feature Importance 可视化
* 命令行实现
* 在 Kali Linux 上开发和测试
# 技术栈
| 类别 | 技术 |
| -------------------- | ------------ |
| 编程语言 | Python 3 |
| 操作系统 | Kali Linux |
| 数据包捕获 | Wireshark |
| 数据包解析 | PyShark |
| 机器学习 | Scikit-learn |
| 数据处理 | Pandas |
| 数值计算 | NumPy |
| 可视化 | Matplotlib |
# 安装说明
克隆仓库
```
git clone https://github.com/prathmeshjagtap75/Intrusion-Detection-System-Using-Machine-Learning-and-Wireshark
```
导航到项目目录
```
cd Intrusion-Detection-System-Using-Machine-Learning-and-Wireshark
```
安装所需依赖项
```
pip install -r requirements.txt
```
# 工作流程
### 步骤 1 – 捕获网络流量
使用 Wireshark 捕获实时网络流量并将其保存为 **PCAP** 文件。
### 步骤 2 – 提取数据包特征
运行数据包提取脚本:
```
python3 ids.py
```
这将提取数据包的详细信息,例如:
* 源 IP 地址
* 目标 IP 地址
* 协议
* 数据包长度
并将它们存储在:
```
network_data.csv
```
### 步骤 3 – 训练机器学习模型
执行:
```
python3 train_model.py
```
该脚本执行以下操作:
* 数据预处理
* 特征编码
* 训练集与测试集划分
* Random Forest 训练
* 流量预测
* 性能评估
### 步骤 4 – 分析结果
模型生成:
* Accuracy Score
* 预测输出
* Confusion Matrix
* Classification Report
* Feature Importance 图表
# 结果
该 IDS 成功演示了:
* 实时数据包捕获
* 从网络流量生成数据集
* 机器学习模型训练
* 网络流量分类
* 性能评估
* 特征可视化
# 模型评估
使用的评估指标:
* Accuracy Score
* Confusion Matrix
* Precision
* Recall
* F1-Score
* Feature Importance
# 局限性
测试期间使用的数据集主要包含 **具有相同数据包长度的 ICMP 数据包**。由于捕获的流量缺乏多样性,Random Forest 模型分配的 **feature importance 值接近 0.0**。
这是预期内的结果,因为机器学习模型需要多样化的数据才能准确确定特征的重要性。
为了获得更好的结果,未来的数据集应包括:
* TCP 流量
* UDP 流量
* DNS 请求
* HTTP/HTTPS 流量
* FTP 流量
* 混合的良性流量和可疑流量
* 更大的数据包大小差异
# 获得的技能
* 用于网络安全的机器学习
* 网络流量分析
* 数据包检查
* 特征工程
* 数据预处理
* Random Forest 分类
* 模型评估
* Wireshark 数据包分析
* 网络安全基础知识
* Python 编程
# 要求
```
pandas
numpy
scikit-learn
matplotlib
pyshark
```
标签:Apex, Python, Scikit-learn, Wireshark, 句柄查看, 无后门, 机器学习, 网络安全, 网络流量分析, 逆向工具, 防御绕过, 隐私保护