drishtisharma14052007-eng/QRShield

GitHub: drishtisharma14052007-eng/QRShield

QRShield 是一套基于 Flask 的二维码与 URL 欺诈检测系统,通过多策略解码、重定向追踪和启发式规则自动识别钓鱼链接、恶意重定向和品牌冒充行为。

Stars: 0 | Forks: 0

# 🛡️ QRShield ### 智能二维码欺诈检测与风险分析系统 [![Python](https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white)](https://python.org) [![Flask](https://img.shields.io/badge/Flask-3.0%2B-000000?style=flat-square&logo=flask&logoColor=white)](https://flask.palletsprojects.com) [![OpenCV](https://img.shields.io/badge/OpenCV-4.5%2B-5C3EE8?style=flat-square&logo=opencv&logoColor=white)](https://opencv.org) [![SQLite](https://img.shields.io/badge/SQLite-3-003B57?style=flat-square&logo=sqlite&logoColor=white)](https://sqlite.org) [![License: MIT](https://img.shields.io/badge/License-MIT-22c55e?style=flat-square)](LICENSE) **QRShield** 解码二维码,追踪其重定向链,并运行多层欺诈检测 pipeline,从而在单次扫描中标记钓鱼链接、恶意重定向和品牌冒充行为。 [功能](#-key-features) · [工作原理](#-how-it-works) · [技术栈](#-technology-stack)
## 🎯 问题陈述 二维码在设计上是不透明的——用户在扫描之前无法看到目标 URL。攻击者利用这种盲目的信任,将钓鱼链接、恶意软件和凭证收集页面嵌入到菜单、海报、停车计费器和电子邮件的二维码中。大多数链接扫描器需要用户手动复制和粘贴 URL;**QRShield 自动完成了从图像上传到风险判定整个链路的自动化。** ## ✨ 核心功能 - **双重输入模式** — 上传二维码图像*或*直接粘贴 URL 进行分析。 - **多策略二维码解码** — 结合带自适应阈值的 OpenCV 检测器和 pyzbar 回退机制,即使图像质量较低也能实现高解码率。 - **重定向链追踪** — 手动追踪最多 10 个 HTTP/HTTPS 跳转,以暴露真实的最终目标并捕获域名切换攻击。 - **12+ 项独立欺诈检测** — 包括 HTTPS 强制验证、基于 IP 的 URL、URL 缩短服务、可疑 TLD、混淆 URL、钓鱼关键词,以及跨主流平台(Google、PayPal、Amazon、Microsoft 等)的品牌冒充检测。 - **域名年龄情报** — 原始 socket WHOIS 查询(RFC 3912)可标记新注册域名,这是一个强烈的钓鱼信号,且无需任何外部依赖。 - **0–100 风险评分** — 具有严重程度乘数的加权计分模型,映射到五个清晰的风险级别,并附带通俗易懂的建议措施。 - **扫描历史与报告** — 每次扫描及其完整发现和重定向链都会被持久化保存,可通过永久报告 URL 进行搜索和查看。 - **安全优先设计** — 服务器端上传验证,解码后立即删除文件,参数化 SQL,且不保留超出报告所需的任何数据。 ## 📸 截图 | 仪表板 | 风险结果 | 扫描历史 | |---|---| | ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9f6fd2ecb2223034.png) | ![结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ac794308ac223041.png) | ![历史](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/348ebfff13223047.png) | ## ⚙️ 工作原理 1. **输入** — 用户上传二维码图像或直接粘贴 URL。这两种路径都将数据输入到同一个分析 pipeline 中。 2. **解码与分类** — 解码二维码并使用模式匹配对其内容进行分类(URL、电子邮件、电话、支付链接等)。 3. **追踪重定向** — 如果内容是 URL,QRShield 会手动追踪每一个重定向跳转,记录每个中间目标,以揭示链接实际指向的位置。 4. **运行欺诈检测** — 最终 URL 将经过一系列独立的检测规则,涵盖结构性危险信号(HTTPS、基于 IP 的主机、缩短服务)、内容危险信号(钓鱼关键词、品牌冒充)以及信誉信号(通过 WHOIS 获取域名年龄)。 5. **评分与判定** — 每个触发的发现都会累加风险分数;总分将汇总为 0–100 的评分,并映射到五个风险级别之一,每个级别都附带通俗易懂的建议措施。 6. **报告** — 扫描结果将被持久化保存,并呈现为交互式风险仪表盘、带有颜色标记的发现卡片,以及可视化的重定向链时间线,同时提供永久的可共享报告链接。 ## 🏗️ 架构图 ``` ┌──────────────────────────────────────────────────────┐ │ Browser (Client) │ │ Dark-theme UI · SVG Gauge · Vanilla JS · CSS │ └─────────────────────┬────────────────────────────────┘ │ HTTP (multipart/form-data · JSON) ┌─────────────────────▼────────────────────────────────┐ │ Flask Application │ │ app.py · routes/api.py (Blueprint /api/*) │ └──┬──────────────┬──────────────────┬─────────────────┘ │ │ │ ▼ ▼ ▼ services/ services/ services/ qr_decoder redirect_checker fraud_detector │ │ ↕ ↕ ↕ ↕ │ │ domain_age risk_scorer │ │ └──────────────┴────────────────────────────────────── │ models/database.py │ database.db (SQLite) ``` 模块化的服务层确保了各项职责相互独立——二维码解码、重定向追踪、欺诈检测和风险评分都作为独立且可测试的单元运行。 ## 🛠️ 技术栈 | 层级 | 技术 | |---|---| | **语言** | Python 3.11+ | | **Web 框架** | Flask 3.0+ | | **二维码解码** | OpenCV(带 pyzbar 回退) | | **图像处理** | Pillow, NumPy | | **HTTP / 网络** | requests, 原始 socket WHOIS (RFC 3912) | | **数据库** | SQLite(零配置,基于文件) | | **前端** | HTML5, CSS3, 原生 JavaScript | ## 🔮 未来增强计划 - 集成 **VirusTotal API** 以进行第三方信誉评分 - 使用针对已知品牌域名的编辑距离比较进行**域名抢注(Typosquatting)检测** - **Punycode / IDN 解码**,以捕获同形异义词(外观相似字符)攻击 - 用于批量二维码分析的**批量扫描 endpoint** - 扫描历史的 **CSV/JSON 导出** - 用于多用户部署的**速率限制与身份验证** ## 👤 作者 本项目作为一个网络安全作品集项目构建,展示了: - Flask 中的模块化后端架构和清晰的服务设计 - 钓鱼检测和威胁建模概念的实际应用 - 协议级网络编程(基于 TCP 的原始 WHOIS) - 从原始输入到可操作安全判定的端到端思维
**QRShield** — 因为您不必盲目信任一个二维码。
标签:Flask, Python, QR码识别, 威胁情报, 安全, 开发者工具, 搜索语句(dork), 数据可视化, 无后门, 欺诈检测, 超时处理, 逆向工具, 钓鱼检测