badiginchalavandana-art/Social_Engineering_Risk_Detection
GitHub: badiginchalavandana-art/Social_Engineering_Risk_Detection
这是一个基于机器学习的社会工程学风险检测系统,通过集成多种分类器识别短信和消息中的钓鱼攻击、冒充诈骗等威胁,并提供 REST API 和实时仪表板。
Stars: 0 | Forks: 0
# 由于输入中未提供需要翻译的具体文本,且根据您的要求不能输出解释内容,因此无法提供翻译结果。
SERD ML 项目
社会工程学风险检测器 —— 机器学习系统
版本 4.0 | Python + Scikit-learn + Flask + Dashboard
这是什么?
─────────────
一个完整的端到端 ML 系统,具备以下功能:
1. 生成包含 1,000 条消息的已标注数据集
2. 训练 4 个 ML 分类器 + 一个集成模型
3. 通过 Flask 暴露 REST API
4. 连接到实时网络安全仪表板
项目结构
─────────────────
serd-ml-project/
├── dataset.py ← 步骤 1:构建并保存数据集 (CSV)
├── train_model.py ← 步骤 2:训练 ML 模型,保存产物
├── app.py ← 步骤 3:Flask REST API 后端
├── dashboard.html ← 步骤 4:实时仪表板(在浏览器中打开)
├── requirements.txt ← Python 依赖项
├── README.txt ← 本文件
│
│ (运行脚本后生成)
├── serd_dataset.csv ← 1,000 条已标注消息
├── serd_dataset_stats.txt ← 数据集统计信息
├── serd_model.pkl ← 训练好的 ML 模型(最佳)
├── serd_vectorizer.pkl ← TF-IDF 向量化器
├── serd_hcf.pkl ← 手工特征提取器
├── serd_report.txt ← 完整训练报告
├── confusion_matrix.png ← 混淆矩阵图
└── roc_curve.png ← ROC 曲线(所有模型)
快速开始(3 步)
─────────────────────
步骤 1 — 安装依赖项
在此文件夹中打开 Command Prompt 或 PowerShell,然后运行:
```
pip install -r requirements.txt
```
步骤 2 — 构建数据集 + 训练模型
(按顺序运行两者)
```
python dataset.py
python train_model.py
```
此步骤将:
• 创建包含 1,000 条消息的 serd_dataset.csv
• 训练 Logistic Regression、Random Forest、Gradient Boosting、SVM
• 构建 Voting Ensemble(投票集成)
• 将最佳模型保存到 serd_model.pkl
• 打印完整的准确率报告
步骤 3 — 启动 API + 打开仪表板
在一个终端窗口中:
```
python app.py
```
然后在浏览器中打开 dashboard.html。
您会在顶部栏看到绿色的 “● API ONLINE” 指示器。
步骤 4 — 试用
• 将任何 SMS 或消息粘贴到扫描器中
• 点击 “Analyze with ML”
• 仪表板将其发送到 Flask API
• ML 模型返回:诈骗概率、风险等级、攻击类型、关键词
• 结果实时显示在仪表板中
注意:如果 app.py 未运行,仪表板仍可使用内置的基于规则的备用引擎工作 —— 结果会标记为 “⚠ API offline”。
机器学习详情
─────────────────────────
数据集:
• 500 条诈骗消息(label = 1)
- 钓鱼攻击、冒充诈骗、彩票诈骗、求职诈骗、UPI 欺诈、政府冒充
• 500 条合法消息(label = 0)
- 真实的银行提醒、电商订单、HR、公用事业账单、旅行预订
特征工程:
• 对清洗后的文本进行 TF-IDF(一元语法 + 二元语法,8,000 个特征)
• 42 个手工特征:
- 诈骗关键词标志(35 个关键词)
- 大写单词数、感叹号计数、URL 存在
- 数字计数、单词计数、字符长度、总关键词命中数
训练的模型:
┌─────────────────────┬──────────────────────────────────────────┐
│ Logistic Regression │ L2 正则化,类别平衡 │
│ Random Forest │ 200 棵树,max_depth=20,平衡 │
│ Gradient Boosting │ 150 个估计器,learning_rate=0.1 │
│ SVM (LinearSVC) │ 已校准以输出概率 │
│ Ensemble │ 对所有 4 个模型进行软投票 │
└─────────────────────┴──────────────────────────────────────────┘
评估:
• 80/20 分层训练/测试集划分
• 5 折交叉验证
• Accuracy、F1-score(加权)、ROC-AUC
• 混淆矩阵、分类报告
预期性能(在此数据集上):
• Accuracy : ~95–98%
• F1-Score : ~95–98%
• ROC-AUC : ~97–99%
API 端点
─────────────
GET http://localhost:5000/ → 健康检查
POST http://localhost:5000/predict → 预测单条消息
Body: {"message": "text here"}
POST http://localhost:5000/batch → 批量预测(最多 100 条)
Body: {"messages": ["msg1", "msg2"]}
GET http://localhost:5000/stats → 模型统计 + 报告
GET http://localhost:5000/model-info → 模型类型 + 关键词
仪表板功能
──────────────────
• 5 个 KPI 卡片(总威胁、高风险、中风险、钓鱼攻击、已拦截)
• ML 扫描器:粘贴任何消息 → 即时诈骗概率
• 批量模式:一次分析多条消息
• 3 个图表:风险分布条形图、攻击类型环形图、随时间变化的威胁折线图
• 带分页的高风险警报表
• 高频欺诈关键词条形图
• 模型准确率指标面板
• 侧边栏过滤器:日期、风险等级、攻击类型、来源、置信度
• 每 30 秒自动实时刷新
• API 离线时的备用规则引擎
使用的技术
──────────────────
Python 数据处理与 ML
Scikit-learn ML 算法:LR, RF, GBM, SVM, VotingEnsemble
Pandas + NumPy 数据操作
Matplotlib 混淆矩阵、ROC 曲线
Flask REST API 后端
TF-IDF 文本特征提取
Chart.js 交互式仪表板图表
HTML/CSS/JS 前端仪表板(无框架)
本项目的优势
────────────────────────────────
✓ 真实的 ML 流水线 —— 不仅仅是关键词匹配
✓ 集成模型 —— 结合 4 个分类器以获得最佳准确率
✓ 特征工程 —— TF-IDF + 42 个手工特征
✓ 端到端连接 —— Python 模型 → Flask API → 实时仪表板
✓ 印度语境 —— 涵盖 SBI、HDFC、IRCTC、Paytm、Aadhaar、TRAI
✓ 优雅降级 —— 即使 API 离线也能工作
✓ 生产级模式 —— 校准概率、交叉验证
✓ 研究级质量 —— 混淆矩阵、ROC 曲线、分类报告
# (请您在“================================================================”分隔符之间提供需要翻译的标题,我将按照要求为您翻译。)
Made with Python + Scikit-learn + Flask + Chart.js
SERD v4 — Social Engineering Risk Detector
标签:Apex, Flask, NLP, Python, REST API, Scikit-learn, TF-IDF, 后端开发, 多模态安全, 安全仪表盘, 安全教育, 恶意消息识别, 数据可视化, 数据科学, 文本分类, 无后门, 机器学习, 欺诈检测, 社会工程学检测, 网络安全, 网络测绘, 网络钓鱼防御, 资源验证, 逆向工具, 隐私保护, 集成学习, 风险评分