SandeMK/scamshield
GitHub: SandeMK/scamshield
ScamShield 是一个面向南非 SMS 钓鱼检测的云驱动移动威胁情报网络,结合规则与 ML 混合引擎实时评分并在用户间共享诈骗指标。
Stars: 1 | Forks: 0
# ScamShield
**移动优先、云驱动的威胁情报网络,用于检测南非的 SMS
钓鱼诈骗活动**
南非近期出现了大量激增的 SMS 钓鱼诈骗,这些消息通常会伪装成银行、
SARS 或快递服务。ScamShield 可以近乎实时地检测可疑的 SMS 消息及
其内嵌的 URL,为其分配一个可解释的 0–100 风险评分,并附带至少三个
原因代码,同时通过云威胁情报网络在所有用户之间共享最新发现的诈骗指标。
## 架构
```
┌─────────────────┐ REST ┌──────────────────────┐
│ Android App │──────────▶│ Cloud Scoring API │
│ (SMS listener, │◀──────────│ (FastAPI) │
│ local rules, │ score + │ rules + ML hybrid │
│ dashboard) │ reasons └──────┬───────────────┘
└─────────────────┘ │
│ report scams ▼
▼ ┌──────────────────────┐
┌─────────────────┐ │ Threat Intel DB │
│ Mock Fintech │─────────▶│ (Supabase/Postgres, │
│ API Client │ REST │ hashed indicators) │
└─────────────────┘ └──────▲───────────────┘
│ daily ingestion
┌──────────────┴───────┐
│ Public feeds: │
│ URLhaus, OpenPhish │
└──────────────────────┘
```
## 仓库结构 → 提案交付件
| 文件夹 | 交付件(提案 §) | 状态 |
|---|---|---|
| [`ml/`](ml/) | 混合检测引擎 — 规则 + ML(§3.2.2 核心) | ✅ 完成 — F1 0.956 |
| [`api/`](api/) | 云威胁评分 API(§3.2.2) | ✅ 完成 — 延迟约 3 ms |
| [`ingestion/`](ingestion/) | 公共威胁情报集成(§3.2.4)+ 共享 DB schema(§3.2.3) | ✅ 完成 — 每日自动摄入 |
| [`mobile-app/`](mobile-app/) | Flutter 移动应用程序(§3.2.1, FR-01..FR-10)+ 应用内分析仪表板(§3.2.5) | ✅ 源码完成 — 通过 `mobile-app/setup.sh` 构建 |
| [`fintech-client/`](fintech-client/) | 模拟 Fintech API 客户端(§3.2.6) | 🔜 计划中 |
## 目前的关键结果
| 成功标准 | 目标 | 达成情况 |
|---|---|---|
| 诈骗检测 F1-score | ≥ 0.85 | **0.942** 留出集;模型选择 §14.5:LogReg 0.941 > RF 0.923 > GB 0.915(5 折 CV) |
| 带标签数据集大小 | ≥ 500 | 5,572 (UCI SMS Spam Collection) |
| 解释原因代码 | 每个结果 ≥ 3 个 | 设计保证 |
| 评分响应时间 | < 2 秒 | 本地约 3 ms (p50 1.1 ms) |
## 快速开始(ML 组件)
```
git clone https://github.com/SandeMK/scamshield.git
cd scamshield/ml
pip install -r requirements.txt
python train.py # auto-downloads dataset, trains, evaluates, saves model
python score.py # demo on realistic SA smishing samples
```
## 数据库说明(设计偏差)
作业 2 指定使用 Cloud Firestore;实现时采用了 Supabase
(PostgreSQL)。理由:指标负载是关系型的(唯一的 hash+type upsert 操作伴随 `hit_count` 递增,并通过单个 SQL 函数进行信誉合并),行级安全将表锁定为仅限服务密钥访问,且免费层级无需绑定计费账户。文档中的设计 --
集合、字段、SHA-256 哈希、首次/最后一次出现的元数据 -- 与 `ingestion/schema.sql` 中的 SQL schema 完全一一对应。
## 技术栈
Python 3.11 · scikit-learn · FastAPI · Supabase (PostgreSQL) · Flutter
(Dart) · URLhaus & OpenPhish feeds · GitHub Actions CI
## License
MIT — 见 [LICENSE](LICENSE)。
标签:Android, Apex, AV绕过, DSL, FastAPI, Supabase, 反网络钓鱼, 威胁情报, 开发者工具, 机器学习, 测试用例, 移动应用, 逆向工具