PhishLens
高级钓鱼邮件分析器
免费的本机钓鱼邮件分析器 — 解析 .eml/.msg,提取 IOC,检查 SPF/DKIM/DMARC,进行 0–100 的风险评分,并可选择使用 VirusTotal、AbuseIPDB、URLScan、WHOIS 和 Claude AI 威胁情报来丰富分析结果。无需云端。您的邮件将保留在您的本地机器上。免费的本机钓鱼邮件分析器 — 解析 .eml/.msg,提取 IOC,检查 SPF/DKIM/DMARC,进行 0–100 的风险评分,并可选择使用 VirusTotal、AbuseIPDB、URLScan、WHOIS 和 Claude AI 威胁情报来丰富分析结果。无需云端。您的邮件将保留在您的本地机器上。
## 什么是 PhishLens?
PhishLens 是一款**免费的、本地的、可安装的**钓鱼邮件分析工具。它可以解析 `.eml` 和 `.msg` 文件,提取 IOC,检查身份验证头,进行风险评分,并可选择使用实时的 OSINT 和 AI 驱动的威胁情报来丰富分析结果 —— 除非您明确启用,否则所有操作都不会将您的邮件发送到任何外部服务。
无需订阅。无需云端。您的邮件将保留在您的机器上。
## 快速开始
```
# 克隆或解压
git clone https://github.com/boltx/phishlens
# 安装依赖
pip install -r requirements.txt
# 启动
python run.py
```
浏览器将自动打开并访问 **http://127.0.0.1:7331**
## 功能
### 核心分析 — 免费,无需 API 密钥
| 功能 | 描述 |
|---------|-------------|
| 邮件解析 | 完整支持 `.eml` 和 `.msg` (Outlook) — MIME, multipart, base64 |
| 头部分析 | From, To, Reply-To, X-Originating-IP, X-Mailer, Message-ID |
| 身份验证检查 | 从 `Authentication-Results` 解析 SPF / DKIM / DMARC |
| IOC 提取 | URL, IP, 域名, 邮件地址 |
| URL 分析 | 基于 IP 的 URL, 短链接服务, 仿冒域名, 可疑 TLD |
| 附件分析 | 危险扩展名检测, SHA256 + MD5 哈希计算 |
| 欺骗检测 | 显示名称欺骗, Reply-To 不匹配 |
| 接收链 | 完整的逐跳追踪 |
| 关键字检测 | 40 多种钓鱼关键字模式 |
| 风险评分 | 0–100 加权评分,包含完整的因子细分 |
| 批量分析 | 最多支持同时处理 50 个文件,并行处理 |
| 历史记录 | SQLite 持久化存储 — 搜索、过滤、排序、导出 |
| 导出 | JSON, TXT (单文件) — CSV + JSON (批量) |
### OSINT 集成 — 可选,使用您自己的 API 密钥
| 服务 | 功能描述 | 免费额度 |
|---------|-------------|-----------|
| VirusTotal | URL, IP, 域名, 文件哈希信誉 | 4 次请求/分钟 |
| AbuseIPDB | IP 滥用评分, 国家/地区, ISP, TOR 节点检测 | 1000 次检查/天 |
| URLScan.io | 完整的 URL 扫描及截图 | 提供免费额度 |
| WHOIS | 注册商, 创建日期, 年限, 新注册标志 | 免费 (无需密钥) |
| DNS | A, MX, TXT, NS 记录 + SPF/DMARC 记录查询 | 免费 (无需密钥) |
### AI 分析 — 可选,使用您自己的 API 密钥
- **Claude AI** — 完整的威胁情报报告:
- 攻击类型分类(凭证钓鱼、BEC、恶意软件投递等)
- 包含技术 ID 的 MITRE ATT&CK TTP 映射
- 基础设施分析
- 社会工程学策略分解
- 推荐的 SOC 操作
- 针对 SIEM 的威胁狩猎查询
## API 密钥
所有的集成都是 **100% 可选的**。该工具在没有任何 API 密钥的情况下也能完全正常运行。
添加密钥的方法:运行工具 → 进入 **SETTINGS** (设置) 选项卡 → 输入密钥 → 点击 **SAVE** (保存)。
密钥将保存在本地的 `phishlens_config.json` 文件中(永远不会被提交 — 已列入 `.gitignore` 中)。
| 服务 | 获取您的密钥 |
|---------|-------------|
| VirusTotal | https://virustotal.com/gui/my-apikey |
| AbuseIPDB | https://abuseipdb.com/account/api |
| URLScan.io | https://urlscan.io/user/profile |
| Anthropic (Claude AI) | https://console.anthropic.com/settings/keys |
## 运行选项
```
python run.py # Default — port 7331, opens browser
python run.py --port 8080 # Custom port
python run.py --no-browser # Don't auto-open browser
python run.py --host 0.0.0.0 # Expose on LAN
python run.py --reload # Dev mode — auto-reload on code change
python run.py --data-dir ~/data # Custom directory for DB and config
```
## 项目结构
```
PhishLens/
├── run.py ← Cross-platform launcher (auto-installs deps)
├── requirements.txt ← Python dependencies
├── .gitignore ← Excludes config, DB, venv, build artifacts
├── CHANGELOG.md ← Version history
│
├── backend/
│ ├── main.py ← FastAPI server — all API routes
│ ├── parser.py ← Email parsing engine (.eml + .msg)
│ ├── osint.py ← Async OSINT orchestrator
│ ├── ai_analysis.py ← Claude AI threat intelligence engine
│ └── config.py ← Config manager (PHISHLENS_DATA_DIR aware)
│
├── frontend/
│ └── index.html ← Single-file SPA — 5 pages
│
├── samples/
│ ├── sample_phishing.eml ← Test phishing email (score: 100)
│ └── sample_clean.eml ← Test clean email (score: 0)
│
├── assets/
│ ├── logo.png ← Logo (light background)
│ └── logo_dark.jpg ← Logo (dark background)
│
└── packaging/
├── build_deb.sh ← Build .deb installer (Ubuntu/Debian/Kali)
├── build_appimage.sh ← Build portable AppImage (any Linux x86_64)
├── make_icon.py ← Generate app icon from SVG
└── deb/ ← Debian package structure
```
## API 参考
| 方法 | Endpoint | 描述 |
|--------|----------|-------------|
| `POST` | `/api/analyze` | 上传单个 `.eml` 或 `.msg` |
| `POST` | `/api/analyze/raw` | 提交原始邮件文本(粘贴模式) |
| `POST` | `/api/analyze/full` | 在一个请求中完成 解析 + OSINT + AI |
| `POST` | `/api/analyze/bulk` | 一次最多上传 50 个文件 |
| `POST` | `/api/osint/{id}` | 对已有的分析运行 OSINT |
| `POST` | `/api/ai/{id}` | 对已有的分析运行 AI 分析 |
| `GET` | `/api/history` | 列出所有过往的分析记录 |
| `GET` | `/api/history/{id}` | 获取某一次分析的完整结果 |
| `DELETE` | `/api/history/{id}` | 删除某一次分析 |
| `DELETE` | `/api/history` | 清除所有历史记录 |
| `GET` | `/api/stats` | 仪表板统计数据 |
| `GET` | `/api/config` | 读取当前设置(密钥会被掩盖) |
| `POST` | `/api/config` | 保存设置 |
| `GET` | `/health` | 后端健康检查 + 服务状态 |
## Linux 安装说明
### .deb 安装包 — Ubuntu / Debian / Kali
```
bash packaging/build_deb.sh
sudo dpkg -i dist/phishlens_2.0.0_amd64.deb
phishlens
```
### AppImage — 适用于任何 Linux x86_64(无需安装)
```
bash packaging/build_appimage.sh
chmod +x dist/PhishLens-2.0.0-x86_64.AppImage
./dist/PhishLens-2.0.0-x86_64.AppImage
```
### 卸载
```
sudo dpkg -r phishlens
```
## 环境要求
- Python 3.8 或更高版本
- pip(依赖项将在首次运行时自动安装)
## 使用示例文件进行测试
在 `samples/` 目录中包含了两封示例邮件:
```
# 打开工具并拖放这些文件以验证一切正常
samples/sample_phishing.eml → Expected: PHISHING, Score ~100
samples/sample_clean.eml → Expected: LIKELY CLEAN, Score ~0
```
## 许可证
MIT 许可证 — 可免费使用、修改和分发。
Built by Boltx