krishyadav90/ThreatSpectra
GitHub: krishyadav90/ThreatSpectra
ThreatSpectra 是一个全栈钓鱼检测平台,通过机器学习与规则引擎对 URL、邮件、短信和二维码进行实时风险分析,帮助用户在点击前识别可疑内容。
Stars: 1 | Forks: 0
# ThreatSpectra




ThreatSpectra 是一个全栈# ThreatSpectra




ThreatSpectra 是一个全栈# ThreatSpectra




ThreatSpectra 是一个全栈# ThreatSpectra




ThreatSpectra 是一个全栈网络钓鱼检测平台,可在同一处分析多个攻击面:URL、电子邮件、短信和二维码。它将机器学习预测与实用的规则检查相结合,并提供现代化前端以实现快速安全筛查。
## 概述
ThreatSpectra 可帮助用户在点击链接、回复消息或分享敏感数据之前识别可疑内容。
核心功能:
- URL 网络钓鱼检测
- 电子邮件网络钓鱼检测
- 短信网络钓鱼检测
- 二维码 URL 提取与风险检测
- 带 SMTP 发送功能的联系表单
## 功能特性
前端:
- 多模式扫描器界面(URL、电子邮件、短信、二维码)
- 带有置信度值的实时结果卡片
- 用于测试的快速样本输入
- 响应式网络安全主题 UI
后端:
- 启用 CORS 的 Flask API
- 基于 Random Forest 的 URL 检测 pipeline
- 基于特征的电子邮件检测 pipeline
- 基于 TF-IDF 的短信检测 pipeline
- 使用 `zxing-cpp` 进行二维码解码,并以 `pyzbar` 作为备选
- 带 SMTP 转发的联系端点
## 项目结构
```
.
|- app.py
|- index.html
|- .env.example
|- requirements.txt
|- runtime.txt
|- email/
| |- email_features.py
| |- email_predict.py
| |- email_rules.py
|- url/
| |- url_features.py
| |- url_predict.py
| |- url_rules.py
|- sms/
| |- sms_predict.py
|- models/
| |- load_models.py
|- utils/
| |- helpers.py
| |- text_utils.py
|- static/
| |- css/style.css
| |- js/script.js
| |- images/
|- extension/
| |- manifest.json
| |- background.js
| |- content.js
| |- popup.html
| |- popup.css
| |- popup.js
| |- assets/
| |- dist/
|- website_detection/
| |- Phishing_website_detection.ipynb
| |- phishing_model_complete.pkl
|- email_detection/
| |- Model_Training.ipynb
| |- email_phishing_model.pkl
|- sms_detection/
| |- SMS_phishing_detection.ipynb
| |- sms_phishing_model.pkl
```
## API 端点
### `GET /`
提供 ThreatSpectra 主网页服务。
### `POST /predict`
分析 URL 网络钓鱼风险。
请求:
```
{
"url": "https://example.com"
}
```
### `POST /predict_email`
分析电子邮件网络钓鱼风险。
请求:
```
{
"email": "Paste full email content here"
}
```
### `POST /predict/email`
向后兼容的电子邮件路由。
请求:
```
{
"text": "Paste full email content here"
}
```
### `POST /predict/sms`
分析短信网络钓鱼风险。
请求:
```
{
"text": "Your package is on hold, verify now..."
}
```
### `POST /predict-qr`
接受二维码图像上传 (`qr_image`) 并分析解码后的 URL。
### `POST /contact/send`
将网站联系表单的提交内容发送到已配置的收件箱。
请求:
```
{
"name": "Your Name",
"email": "you@example.com",
"message": "Hello"
}
```
## 本地设置
### 前置条件
- Python 3.9+
- `pip`
### 安装与运行 (Windows PowerShell)
```
cd "C:\Users\KRISH\OneDrive\Desktop\Cyber Security Projects\ThreatSpectra"
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install -r requirements.txt
python app.py
```
打开:
- `http://127.0.0.1:5000`
- `http://localhost:5000`
## 浏览器扩展
ThreatSpectra 在 `extension/` 目录中包含一个浏览器扩展。
功能:
- 通过 `POST /predict` 自动扫描访问的网站
- 在页面右上角显示警告提示:`Safe` 或 `Unsafe`
- 支持在弹出窗口中进行手动检查:URL、二维码、电子邮件、短信
- 包含带有删除和清除控制的扫描历史记录
历史记录免责声明:
- 仅存储最近的 15 条检查记录
- 较早的记录会被自动删除
### 1) 启动 API 服务器
```
python app.py
```
### 2) 在 Chrome / Edge / Brave / Opera 中加载扩展
1. 打开扩展页面:
- Chrome:`chrome://extensions`
- Edge:`edge://extensions`
2. 启用 `Developer mode`(开发者模式)
3. 点击 `Load unpacked`(加载已解压的扩展程序)
4. 选择文件夹:`ThreatSpectra/extension`
### 3) 在 Firefox 中加载扩展
1. 打开 `about:debugging#/runtime/this-firefox`
2. 点击 `Load Temporary Add-on`(加载临时附加组件)
3. 选择 `ThreatSpectra/extension/manifest.json`
### 4) 使用扩展
1. 点击扩展图标
2. 保持开启 `Automatic top-right alert`(自动右上角警告)以获取自动网站警告
3. 打开或刷新网站标签页以触发扫描
4. 使用弹出窗口标签页进行手动的 URL、二维码、电子邮件和短信扫描
5. 从 History(历史记录)标签页管理记录
如果弹出警告未出现:
- 确认 Flask 服务器正在运行
- 在普通的 `http/https` 页面上测试(而不是浏览器的内部页面)
- 启用扩展后刷新标签页
## SMTP 配置(联系表单)
设置环境变量(或在本地 `.env` 文件中定义它们):
```
$env:CONTACT_SMTP_HOST="smtp.gmail.com"
$env:CONTACT_SMTP_PORT="587"
$env:CONTACT_SMTP_USERNAME="your-email@gmail.com"
$env:CONTACT_SMTP_PASSWORD="your-app-password"
$env:CONTACT_TO_EMAIL="your-email@gmail.com"
$env:CONTACT_FROM_EMAIL="your-email@gmail.com"
$env:CONTACT_SMTP_USE_TLS="true"
```
更新变量后重启 Flask 服务器。
## 代码健康检查
使用相同的虚拟环境并运行:
```
# 1) 对所有 Python 文件进行语法检查
python -m compileall -q .
# 2) 运行时冒烟检查(导入 app + model 加载器)
python -c "import app; print('APP_IMPORT_OK')"
```
预期结果:
- `compileall` 正常退出且无错误
- 导入冒烟测试打印 `APP_IMPORT_OK`
## 技术栈
- Flask
- Flask-CORS
- scikit-learn
- pandas
- numpy
- requests
- BeautifulSoup
- Pillow
- zxing-cpp
- pyzbar
- HTML, CSS, JavaScript, Bootstrap, AOS
## 贡献指南
欢迎贡献。
贡献方式:
1. 开启一个 issue 描述您的更改。
2. 在使用、修改、分发或部署本项目之前,请先请求许可。
3. Fork 仓库并创建一个功能分支。
4. 提交带有清晰说明和测试详细信息的 Pull Request。
通过贡献,您同意您的贡献可以在本仓库的许可证下使用。
## 许可证
本仓库使用自定义的许可优先许可证:
- 在使用、分发或部署本项目之前,您必须征得所有者的许可。
- 允许通过 Pull Request 进行贡献。
有关完整条款,请参见[许可证](LICENSE)。
## 维护者
- 姓名:Krish
- GitHub:https://github.com/krishyadav90
- LinkedIn:https://www.linkedin.com/in/krish-yadav-aba86a2bb/
## 免责声明
ThreatSpectra 提供的是安全预测,而非绝对保证。在采取行动之前,请通过额外的安全检查来验证高风险结果。
标签:Apex, API服务, Chrome Extension, Flask, Python, SMTP, Splunk, TF-IDF, URL检测, Web安全, 二维码安全, 云计算, 前后端分离, 反欺诈, 多模态安全, 威胁情报, 实时检测, 开发者工具, 数据可视化, 无后门, 机器学习, 浏览器插件, 短信过滤, 网络安全, 蓝队分析, 规则引擎, 逆向工具, 邮件安全, 钓鱼检测, 随机森林, 隐私保护