kahz12/ScannUs

GitHub: kahz12/ScannUs

ScannUs 是一个 AI 驱动的模块化 OSINT 框架,用于自动化开源情报收集、分析和报告生成。

Stars: 0 | Forks: 0

``` ____ _ _ / ___| ___ __ _ _ __ _ __ | | | |___ \___ \ / __/ _` | '_ \| '_ \| | | / __| ___) | (_| (_| | | | | | | | |_| \__ \ |____/ \___\__,_|_| |_|_| |_|\___/|___/ ``` **高级 OSINT 与网络情报框架** [![Python](https://img.shields.io/badge/Python-3.10%2B-blue?style=flat-square&logo=python)](https://python.org) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) [![Status](https://img.shields.io/badge/Status-Active-brightgreen?style=flat-square)]() [![Platforms](https://img.shields.io/badge/Platforms-Linux%20%7C%20Windows%20%7C%20Termux-orange?style=flat-square)]()
## 目录 1. [概述](#overview) 2. [架构](#architecture) 3. [功能](#features) 4. [安装](#installation) 5. [配置](#configuration) 6. [使用](#usage) 7. [项目结构](#project-structure) 8. [缓存与存储](#cache--storage) 9. [免责声明](#disclaimer) ## 概述 **ScannUs** 是一个模块化 OSINT 框架,它将多引擎搜索、AI 辅助规划、泄露情报查询、域名侦察、深度 PII 提取和证据收集统一到一个交互式终端背后。 它能将原始线索——一个邮箱、一个用户名、一个域名——转化为结构化、可重复的调查:可缓存、可导出、并随时准备分享。 ### 亮点 | 能力 | 您将获得 | |---|---| | **多引擎搜索** | Google CSE · DuckDuckGo · Brave —— 持久化 SQLite 缓存 | | **四家 AI 提供商** | Gemini · GPT-4o · Claude Sonnet 4.6 · 本地 Ollama —— 令牌流式传输 | | **AI 查询规划器** | 使用 22 个白名单工具的 ReAct 风格多步调查计划 | | **泄露情报** | Have I Been Pwned —— 账户、域名、泄露、k-匿名密码 | | **域名侦察** | WHOIS + DNS + TLS + 安全头 + crt.sh 子域名 + Shodan | | **PII 与密钥提取** | AWS/GitHub/Slack/Stripe 密钥 · JWT · BTC/ETH · IBAN · SSN/CPF/SIN | | **用户名枚举** | Sherlock / Maigret —— 400+ 社交网站 | | **Wayback Machine** | 快照获取 · PII 提取 · 日期间统一差异比较 | | **反向图像搜索** | TinEye + Bing Visual + Yandex + 手动回退 | | **证据收集** | 全页截图 · 媒体下载器 (yt-dlp 级别) · 文件元数据 | | **导出** | Excel · CSV · JSON · HTML 报告 —— 可点击、样式化 | ## 架构 ``` ┌──────────────────────────────────────────────────────────────────────┐ │ Entry Point │ │ main.py │ └────────────────────────────┬─────────────────────────────────────────┘ │ ┌──────────────────▼──────────────────┐ │ CLI Layer │ │ parser.py · menus.py · ui.py │ │ actions.py │ └──────────────────┬───────────────────┘ │ ┌───────────────────────▼────────────────────────┐ │ Core Layer │ │ config · ai_agent (4 providers + planner) │ │ cache (SQLite) · case_manager · state │ └──────┬───────────────┬──────────────────────────┘ │ │ ┌────────▼──────┐ ┌─────▼─────────────────────────┐ │ Search Layer │ │ Analysis Layer │ │ engines/ │ │ web_analyzer · tech_scanner │ │ smart_search │ │ advanced_osint · domain_osint│ │ reverse_* │ │ hibp │ │ username_enum│ │ │ └───────────────┘ └────────────────┬──────────────┘ │ ┌────────────▼────────────┐ │ Utils Layer │ │ media_downloader │ │ results_parse │ │ file_download │ └─────────────────────────┘ ``` ### 设计模式 | 模式 | 位置 | 目的 | |---|---|---| | 策略 | `core/ai_agent.py` | 可切换的 AI 后端 (Gemini · OpenAI · Claude · Ollama) | | ReAct | `IAAgent.plan` / `execute_plan` | 带迭代重新规划的白名单工具目录 | | 工厂 | `search/engines/` | 运行时引擎实例化 | | DAO | `core/database.py` · `core/cache.py` | SQLite 案例存储 + 持久化 TTL 缓存 | | 单例 | `core/cache.get_cache()` | 使用 WAL 日志模式的进程范围缓存 | | 状态 | `core/state.py` | 跨模块运行时状态 | ## 功能 ### 🔍 搜索与情报 - **多引擎搜索** —— Google Custom Search、DuckDuckGo (HTML 爬虫)、Brave Search。带命名空间 TTL 的持久化 SQLite 缓存(SERP 24小时,HTTP 文本 6小时,WHOIS 7天)。 - **AI 查询规划器** —— 描述目标;LLM 生成一个仅由白名单工具组成的 3-8 步计划。每一步都可交互确认,规划器可根据观察结果重新规划 (ReAct)。 - **AI Dork 生成器** —— 自然语言 → 精确的 Google Dork 语法。 - **引导式搜索** —— 姓名 · 用户名 · 邮箱 · 电话 → 复合 `AND` 查询。 - **用户名枚举** —— Sherlock (纯 Python, 400+ 站点) 或 Maigret (3000+, 仅限 Linux/macOS)。 - **反向图像搜索** —— TinEye API → Bing Visual API → Yandex 爬虫 → 手动 URL 回退。多层回退确保总有结果返回。 ### 🤖 AI 分析(流式传输) | 提供商 | 模型 | 成本 | 用途 | |---|---|---|---| | Google Gemini | `gemini-2.0-flash` | 免费层 | 默认 —— 快速、免费、强大 | | OpenAI | `gpt-4o` | 付费 | 最高品质 | | Anthropic | `claude-sonnet-4-6` | 付费 | 出色的分析推理能力 | | Ollama | `llama3` (可配置) | 免费 (本地) | 隔离环境、注重隐私 | - **令牌流式传输** —— 输出增量显示;无需等待完全生成。 - **网页摘要与深度 OSINT 分析** —— 实体提取、关系发现、线索生成。 - **长文本分块** —— 对于超出模型上下文的内容,使用 12 KB 重叠窗口。 - **实体关系图** —— Pyvis 渲染的交互式 HTML 图,保存至 `outputs/graphs/`。 ### 🔒 泄露与泄露情报 (HIBP) - **账户查询** —— 包含某个邮箱的每次泄露及粘贴内容(需付费 HIBP 密钥)。 - **域名泄露** —— 影响某个域名的所有泄露(免费)。 - **泄露详情** —— 单个命名泄露的完整元数据(免费)。 - **被泄露密码** —— k-匿名 SHA-1 查询;明文 **永不离开进程** —— 仅发送前 5 个十六进制字符。 ### 🌐 域名与网络 OSINT - **WHOIS** —— 注册商、创建/过期日期、联系人、域名服务器(7 天缓存)。 - **DNS 记录** —— A、AAAA、MX、NS、TXT、SOA、CNAME、CAA(1 小时缓存)。 - **邮件安全** —— SPF、DMARC、DKIM 选择器提示。 - **TLS 证书** —— 主体、SAN、有效期窗口、密码套件。 - **HTTP 安全头** —— HSTS、CSP、COOP、COEP、CORP 评分。 - **子域名枚举** —— 通过 crt.sh 证书透明度日志被动查询。 - **Shodan 主机查询** —— 服务横幅、开放端口(可选,需要密钥)。 ### 🕰 Wayback Machine - **快照时间线** —— 查询 URL 的存档历史 CDX。 - **快照获取** —— 特定时间戳的原始存档内容。 - **快照 PII 提取** —— 从旧版本中提取出线上站点已清除的标识符。 - **快照差异比较** —— 两个时间戳间可见文本的统一差异,带 SHA-256 指纹。 ### 🎯 PII 与密钥提取 从任何页面或文本中检测并验证 25+ 种标识符类型: | 类别 | 示例 | |---|---| | **云/API 密钥** | AWS (`AKIA…`)、GitHub PAT、GitLab、Slack、Stripe、Google、Discord、Telegram | | **加密钱包** | Bitcoin (base58check + Bech32)、Ethereum (EIP-55 Keccak) | | **国家 ID** | 美国 SSN、阿根廷 DNI/CUIT、墨西哥 RFC、巴西 CPF (mod-11)、加拿大 SIN (Luhn) | | **金融** | IBAN、信用卡 (Luhn) | | **网络** | 公共 IPv4/IPv6 (过滤掉私有/回环/多播)、MAC 地址 | | **令牌** | JWT (头部验证)、PEM 私钥 | | **标准 PII** | 邮箱 (解码混淆)、电话 (通过 libphonenumber 实现国际格式) | ### 🖼 证据与媒体 - **三级媒体下载器** —— yt-dlp (1000+ 平台) → Selenium 点击播放 → 静态 HTML。 - **全页截图** —— Playwright (首选) → Selenium Firefox 回退。 - **文件下载器** —— 按扩展名批量下载;自动提取 PDF/EXIF/DOCX/XLSX 元数据。 ### 📤 导出 | 格式 | 详情 | |---|---| | **Excel** | 样式化表头、交替行、可点击超链接、自动列宽 | | **CSV** | 纯逗号分隔,便于电子表格导入 | | **JSON** | 结构化对象数组,便于程序化处理 | | **HTML** | 自包含的样式化报告,便于分享 | ## 安装 ``` # 1. 克隆 git clone https://github.com/kahz12/scannus.git cd scannus # 2. 创建虚拟环境 python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 3. 安装 pip install -r requirements.txt ``` ### 平台说明 | 平台 | 状态 | |---|---| | **Linux / Windows** | 主要支持平台 —— 所有功能可用 | | **macOS** | 支持 | | **Termux / Android (aarch64)** | 替代方案 —— Maigret 不可用 (无 `aiohttp==3.8.x` 轮子);Sherlock 可用 | **要求:** Python 3.10+,Firefox (用于 Selenium 功能),Ollama 守护进程 (仅当使用本地 LLM 时)。 ## 配置 运行交互式向导以填充 `.env` 文件: ``` python main.py -c ``` ### 环境变量 | 变量 | 服务 | 所需用于 | |---|---|---| | `API_KEY_GOOGLE` · `SEARCH_ENGINE_ID` | Google Cloud / Programmable Search | Google Custom Search | | `BRAVE_API_KEY` | Brave Search API | Brave 引擎 | | `GOOGLE_API_KEY_FOR_GEMINI` | Google AI Studio | Gemini 提供商 | | `OPENAI_API_KEY` | OpenAI Platform | GPT-4o 提供商 | | `ANTHROPIC_API_KEY` | Anthropic Console | Claude 提供商 | | `OLLAMA_HOST` · `OLLAMA_MODEL` | 本地 Ollama 守护进程 | Ollama 提供商 | | `HIBP_API_KEY` | Have I Been Pwned | 账户 + 粘贴查询 (付费) | | `SHODAN_API_KEY` | Shodan | 主机服务横幅查询 | | `SCANNUS_CACHE_DISABLE` | — 设置为 `1` 以绕过缓存 | 调试 | ## 使用 ### 交互式 TUI ``` python main.py # interactive by default python main.py -i # explicit ``` **主菜单:** ``` Guided Search Name · Username · Email · Phone Direct Search Raw query or Google Dork AI Dork Generator LLM-assisted dork creation AI Query Planner ReAct-style multi-tool plan Reverse Image Lookup TinEye · Bing · Yandex · manual URLs Web Technology Scan Tech stack fingerprinting Username Enumeration Sherlock · 400+ sites Domain Recon WHOIS · DNS · TLS · headers · subdomains Breach & Leak Check HIBP: accounts · domains · passwords Load Saved Case Resume a previous investigation Configure API Keys Edit .env credentials ``` ### 命令行示例 ``` # 基础与引导式搜索 python main.py -q 'site:linkedin.com "project manager" "New York"' python main.py -n "John Doe" -u "jdoe88" -e "john@corp.com" python main.py -gd "Find exposed admin panels on .gov domains" # AI驱动的多步骤调查 python main.py -p "Investigate breaches affecting acme.com and dump PII leads" # 域名侦察 python main.py --recon example.com # 泄露情报 python main.py --hibp-account target@example.com python main.py --hibp-domain example.com python main.py --hibp-breach Adobe python main.py --hibp-password # interactive, hidden input # Wayback Machine python main.py -q "site:archive.org" # (交互菜单提供快照获取、PII 提取、差异对比) # 用户名枚举 python main.py --username-enum jdoe88 --enum-backend sherlock # 反向图像搜索 python main.py -rev https://example.com/photo.jpg # 缓存管理 python main.py --cache-stats python main.py --cache-clear wayback # or omit for full wipe # 导出 python main.py -q "query" --excel out.xlsx --json out.json ``` ### 完整 CLI 标志参考 | 分组 | 标志 | |---|---| | **主要** | `-h` · `-q` · `-c` · `-i` | | **搜索** | `-n` · `-u` · `-e` · `-t` · `-b` · `--engine` · `--deep` · `--pages` · `--start-page` · `--lang` | | **AI / NLP** | `-gd "描述"` · `-p "目标"` | | **侦察** | `--recon 域名` · `--username-enum 用户名` · `--enum-backend` | | **泄露 (HIBP)** | `--hibp-account` · `--hibp-domain` · `--hibp-breach` · `--hibp-password` | | **媒体/图像** | `--media-scrape URL` · `-rev URL` | | **缓存** | `--cache-stats` · `--cache-clear [NS]` | | **案例** | `--load-case` | | **导出** | `--excel` · `--csv` · `--json` · `--html` · `--download 类型` · `--metadata` | ### 结果导航 | 输入 | 动作 | |---|---| | `` | 打开每 URL 分析子菜单 | | `n` / `p` / `j ` / `all` / `page` | 分页控制 | | `media ` | 批量媒体下载 | | `save` · `excel` · `exit` | 保存 · 导出 · 退出 | ## 项目结构 ``` ScannUs/ ├── main.py # Entry point — CLI dispatch ├── requirements.txt │ ├── cli/ │ ├── ui.py # Rich theme, console helpers │ ├── parser.py # Argparse + styled help │ ├── menus.py # Interactive TUI menus │ └── actions.py # CLI action handlers │ ├── core/ │ ├── config.py # Directories, .env wizard │ ├── ai_agent.py # 4 providers + planner + 22 dispatchers │ ├── cache.py # SQLite cache (WAL, namespaced TTLs) │ ├── case_manager.py # Save / load / update / delete cases │ ├── database.py # SQLite DAO │ └── state.py │ ├── search/ │ ├── smart_search.py # PII + secret extraction (25+ patterns) │ ├── reverse_image.py # Multi-engine orchestrator │ ├── reverse_image_engines.py # TinEye · Bing · Yandex · manual │ ├── username_enum.py # Sherlock / Maigret wrapper │ └── engines/ │ ├── googlesearch.py · duckduckgosearch.py · bravesearch.py │ └── cache.py # Backward-compat shim → core/cache │ ├── analysis/ │ ├── web_analyzer.py # Fetch + clean + chunk + summarise │ ├── tech_scanner.py # Wappalyzer + WebTech fingerprinting │ ├── advanced_osint.py # Screenshots · Wayback fetch/diff │ ├── domain_osint.py # WHOIS · DNS · TLS · headers · crt.sh │ └── hibp.py # Have I Been Pwned integration │ └── utils/ ├── media_downloader.py # yt-dlp → Selenium → static HTML ├── results_parse.py # Excel / CSV / JSON / HTML export └── file_download.py # Batch download + metadata extraction ``` ## 缓存与存储 ### 持久化 SQLite 缓存 所有上游调用都通过 `core/cache.py` 流转 —— 一个所有命名空间共享的单一 `cache.db`,采用 WAL 日志模式以支持并发进程访问。 | 命名空间 | TTL | 内容 | |---|---|---| | `search` | 24小时 | SERP 结果 | | `http_text` | 6小时 | 清理后的页面内容 | | `whois` | 7天 | 注册数据 | | `dns` | 1小时 | DNS 记录 | | `wayback` | 30天 | 存档快照 (不可变) | | `crtsh` | 24小时 | CT-日志子域名 | | `hibp_account` | 12小时 | 每邮箱泄露查询 | | `hibp_breach` | 7天 | 泄露元数据 | | `hibp_password` | 30天 | k-匿名范围 | ### 输出目录 ``` outputs/ ├── cache/cache.db # Persistent SQLite cache ├── cases/cases.db # Investigation case database ├── downloads/ # Files by MIME type ├── media/ # ZIP archives from --media-scrape ├── reports/ # Excel · CSV · JSON · HTML exports ├── screenshots/ # Full-page PNG screenshots └── graphs/ # Pyvis entity relationship graphs ``` ## 免责声明 ScannUs 严格用于 **教育目的、授权的安全研究和合法的开源情报收集**。用户需对遵守所有适用的当地、国家及国际法律承担全部责任。 **请勿对您未获得明确授权的系统、账户或数据使用 ScannUs。**
由 **Ale** 开发
标签:AI查询规划, AI集成, AI风险缓解, DInvoke, ESC漏洞, Python, ReAct规划, SQLite, 个人身份信息提取, 人工智能, 域名侦察, 多引擎搜索, 威胁情报, 开发者工具, 情报框架, 数据泄露情报, 无后门, 特征检测, 用户定义反射加载器, 用户模式Hook绕过, 系统分析, 网络分析, 自动化分析, 证据收集, 跨站脚本, 逆向工具