这是一个基于网络流量分析的操作系统指纹识别系统,通过分析网络数据包的特征来识别不同的操作系统类型。
- 自动生成多种类型的网络流量数据
- 提取 PCAP 文件中的网络流量特征
- 支持多种操作系统的识别(CentOS、Ubuntu、Debian、Windows、macOS)
- 使用机器学习模型进行操作系统分类
- 集成多个分类器提高识别准确率
project/
├── send_https_requests.sh # 网络流量生成脚本
├── pcap_extractor.py # PCAP 文件特征提取
├── process_features.py # 特征处理和数据预处理
├── model_training.py # 模型训练和评估
├── predict.py # 使用训练好的模型进行预测
├── feature_files/ # 特征文件存储目录
└── pcap_files/ # PCAP 文件存储目录
- Python 3.x
- scikit-learn
- pandas
- numpy
- pyshark
- loguru
- bash 脚本
- 安装依赖包:
pip install pandas numpy scikit-learn pyshark loguru
- 安装系统依赖:
sudo apt-get install tcpdump tshark
- 生成网络流量数据:
chmod +x send_https_requests.sh
./send_https_requests.sh
- 提取 PCAP 文件特征:
python pcap_extractor.py
- 处理特征数据:
python process_features.py
- 训练模型:
python model_training.py
- 使用模型进行预测:
python predict.py --pcap <path_to_pcap_file> --model <path_to_model_file>
系统提取的主要特征包括:
- IP 包长度统计特征(最大值、最小值、平均值、标准差)
- TTL 值统计特征
- TCP 窗口大小统计特征
- TCP 标志位统计
- TCP 时间戳特征
使用集成学习方法,包含以下分类器:
- K近邻分类器 (KNN)
- 支持向量机 (SVM)
- 随机森林 (Random Forest)
- 逻辑回归 (Logistic Regression)
- 运行流量生成脚本需要 root 权限
- 确保有足够的磁盘空间存储 PCAP 文件
- 建议在测试环境中运行流量生成脚本
需要的文件可以从以下链接下载:Google Drive
MIT License
- Fork 该项目
- 创建特性分支
- 提交更改
- 发起 Pull Request
如有问题,请提交 Issue 或 Pull Request。