trevjacq/phishing-email-detector
GitHub: trevjacq/phishing-email-detector
一个基于规则与机器学习融合的钓鱼邮件检测项目,借助 Claude AI 提供自然语言解释,解决邮件钓鱼识别与可解释性难题。
Stars: 1 | Forks: 0
# 钓鱼邮件检测器
一个基于 Python 的钓鱼邮件检测工具,结合了基于规则的启发式方法和朴素贝叶斯机器学习模型,用于识别钓鱼邮件——现在支持每条判决的 Claude AI 驱动的通俗语言解释、实时 Gmail 收件箱扫描,以及带颜色编码判决和标记分解的 HTML 扫描报告仪表板。
该项目由 Trevor Young 构建,作为一个网络安全作品集项目。
## 功能
- 基于关键词和域名启发式的规则检测
- 基于朴素贝叶斯分类器的机器学习检测,训练数据超过 17,500 封真实钓鱼邮件
- 智能组合判决系统——通过权衡两层逻辑防止误报
- 通过 IMAP 的实时 Gmail 收件箱扫描
- 每封处理邮件的 JSON 扫描日志
- 自动生成的 HTML 报告仪表板,带颜色编码的判决和标记分解
- 机器学习模型的置信度百分比
- 详细标记输出,精确显示邮件被标记的原因
- Claude AI 驱动的通俗语言解释——每条判决都包含人类可读的摘要,说明邮件为何被标记以及用户应采取的操作
## 项目结构
```
phishing-detector/
│
├── data/ # Dataset files (not included, see Setup)
├── logs/ # Auto-generated JSON scan logs
├── models/ # Saved ML model and vectorizer (auto-generated)
├── reports/ # Auto-generated HTML scan reports
├── utils/
│ ├── rules.py # Rule-based detection logic
│ ├── ml_detector.py # Naive Bayes ML model (train + predict)
│ ├── preprocessor.py # Text cleaning and preprocessing
│ ├── email_fetcher.py # IMAP Gmail fetching
│ ├── logger.py # JSON scan logger
│ └── reporter.py # HTML report generator
├── main.py # Entry point
├── requirements.txt # Project dependencies
└── README.md
```
## 安装说明
### 前置条件
- Python 3.10 或更高版本
- pip(随 Python 附带)
- 已启用 2FA 的 Gmail 账户(用于实时收件箱扫描)
### 步骤 1 — 克隆仓库
```
git clone https://github.com/YOUR_USERNAME/phishing-detector.git
cd phishing-detector
```
### 步骤 2 — 创建虚拟环境
```
python -m venv venv
```
激活环境:
- **Windows:** `venv\Scripts\activate`
- **Mac/Linux:** `source venv/bin/activate`
### 步骤 3 — 安装依赖
```
pip install -r requirements.txt
```
### 步骤 4 — 下载 NLTK 数据
```
python -c "import nltk; nltk.download('stopwords'); nltk.download('punkt')"
```
### 步骤 5 — 添加数据集
- 从 [Kaggle](https://www.kaggle.com/datasets/naserabdullahalam/phishing-email-dataset) 下载钓鱼邮件数据集
- 将文件重命名为 `emails.csv`
- 将其放置在 `data/` 文件夹内
CSV 文件必须包含名为 `Email Text` 和 `Email Type` 的列,且取值分别为 `Safe Email` 和 `Phishing Email`。
### 步骤 6 — 配置 Gmail(用于实时收件箱扫描)
1. 在 Gmail 账户中启用两步验证
2. 在 myaccount.google.com 生成应用密码
3. 打开 `utils/email_fetcher.py` 并填写:
```
EMAIL_ADDRESS = "your_email@gmail.com"
APP_PASSWORD = "your_sixteen_char_app_password"
```
## 用法
```
python main.py
```
这将:
1. 加载并清理数据集
2. 训练朴素贝叶斯分类器
3. 将模型保存到 `models/`
4. 在两个测试邮件上运行检测
5. 扫描实时 Gmail 收件箱中的未读邮件
6. 将所有结果记录到 `logs/scan_log.json`
7. 在 `reports/scan_report.html` 生成 HTML 报告
## 示例输出
```
Loading dataset...
Cleaning text...
Vectorizing text...
Training model...
--- Model Performance ---
precision recall f1-score support
Safe 0.98 0.97 0.98 1753
Phishing 0.97 0.98 0.97 1755
========== DETECTION RESULTS (Test Emails) ==========
--- Email 1 ---
Subject : URGENT: Your account has been compromised!
Sender : security@accounts-verify.xyz
Rules : PHISHING (score: 27)
ML Model : PHISHING (confidence: 89.21%)
VERDICT : PHISHING
--- Email 2 ---
Subject : Your order has shipped
Sender : orders@amazon.com
Rules : SAFE (score: 0)
ML Model : PHISHING (confidence: 83.41%)
VERDICT : SAFE
```
## 工作原理
### 组合判决逻辑
| 条件 | 判决 |
|---|---|
| 规则得分 10 或更高 | PHISHING |
| 机器学习置信度 85%+ 且预测为钓鱼 | PHISHING |
| 规则得分 > 0 且机器学习预测为钓鱼 | PHISHING |
| 规则得分为 0 且机器学习置信度低于 85% | SAFE |
### 基于规则的检测
| 检查 | 增加分数 |
|---|---|
| 检测到紧急语言 | 每匹配一次 +2 |
| 检测到钓鱼关键词 | 每匹配一次 +2 |
| 可疑发件人域名 | 每匹配一次 +3 |
| 通用问候语(如 Dear Customer) | +2 |
| 过多感叹号 | +1 |
### 机器学习检测
- 文本使用预处理器清洗
- 使用 5,000 个特征通过 TF-IDF 向量化
- 在 17,500+ 封邮件上训练的多项朴素贝叶斯分类器
- 模型和向量化器通过 pickle 保存到 `models/`
## 依赖项
| 包 | 用途 |
|---|---|
| scikit-learn | 朴素贝叶斯分类器和 TF-IDF 向量化器 |
| pandas | 加载和操作数据集 |
| numpy | 数值计算 |
| nltk | 自然语言处理与停用词移除 |
## 路线图
- [x] 阶段 1 — 项目设置与环境配置
- [x] 阶段 2 — 基于规则的检测引擎
- [x] 阶段 3 — 朴素贝叶斯机器学习模型(训练与预测)
- [x] 阶段 4 — 实时 IMAP Gmail 收件箱扫描
- [x] 阶段 5 — 组合评分、JSON 日志记录与 HTML 报告仪表板
- [ ] 阶段 6 — 置信度阈值调整与扩展规则集
- [ ] 阶段 7 — Web UI(Flask 或 Streamlit)
## 作者
**Trevor Young**
- LinkedIn: [linkedin.com/in/trevor-young-b22831137](https://linkedin.com/in/trevor-young-b22831137)
- 邮箱: trevjacq@gmail.com
- CompTIA Security+ (SY0-701) 认证
## 许可证
本项目开源,采用 MIT License 授权。
标签:AI解释, Apex, Claude AI, ETW劫持, Gmail扫描, HTML报告, IMAP, JSON日志, Python, 云计算, 假阳性抑制, 关键词匹配, 域名启发式, 投资组合项目, 文本预处理, 无后门, 日志记录, 朴素贝叶斯, 机器学习, 混合检测, 网络安全, 置信度评分, 规则引擎, 逆向工具, 钓鱼邮件检测, 隐私保护