Doble-2/osint-d2

GitHub: Doble-2/osint-d2

一款融合AI认知分析的开源情报CLI工具,通过多源关联和自动化报告生成实现身份画像构建。

Stars: 142 | Forks: 21

# OSINT-D2 [![Python](https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python&logoColor=white)](#安装说明) [![Poetry](https://img.shields.io/badge/Poetry-enabled-60A5FA?logo=poetry&logoColor=white)](#安装说明) [![DeepSeek](https://img.shields.io/badge/AI-DeepSeek%20(OpenAI%20compatible)-111827?logo=openai&logoColor=white)](#ai-和语言) [![License](https://img.shields.io/badge/License-MIT-success)](LICENSE) ``` ____ ____ ___ _ _ _____ ____ ____ / __ \/ __ `__ \ | | |_ _| / __ \/ __ \ / / / / / / / / / | | | | | / / / / / / / / /_/ / /_/ /_/ /| |_| | | | / /_/ / /_/ / \____/\__,_|\__,_| \__,_| |_| \____/\____/ ``` **高级身份关联与认知分析 CLI** OSINT-D2 接收用户名和/或邮箱,从多个 OSINT 源聚合公开证据,并通过定向爬虫丰富数据集。DeepSeek/OpenAI 兼容的分析师可以将证据转化为假设驱动的情报。CLI 默认为英语,同时也支持完整的西班牙语体验 (`--language es`)。 ## 亮点 - 多源关联:单次运行即可关联用户名、邮箱及派生别名。 - 模块化异步管道:包含可复用服务、Sherlock 集成,并支持 WhatsMyName 风格的站点列表。 - 认知 AI 分析 (`--deep-analyze`):生成结构化摘要、亮点和置信度。 - 专业档案导出 (JSON + PDF/HTML):适用于事件响应或高管简报。 - Typer + Rich CLI:提供上下文帮助、交互式向导和 JSON 优先的自动化输出。 ![Social footprint list for torvalds without Sherlock](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8d76ca5d49014300.png) ## 安装说明 **前置条件** - Python 3.11 或更新版本 - Poetry - WeasyPrint 系统依赖 (用于 PDF 生成) ### WeasyPrint 依赖 (Linux) PDF 导出使用 WeasyPrint 并需要系统库。 Ubuntu/Debian: ``` sudo apt-get update sudo apt-get install -y \ libcairo2 libpango-1.0-0 libpangoft2-1.0-0 \ libgdk-pixbuf2.0-0 libffi-dev shared-mime-info ``` Fedora: ``` sudo dnf install -y cairo pango gdk-pixbuf2 libffi shared-mime-info ``` Arch: ``` sudo pacman -S --needed cairo pango gdk-pixbuf2 libffi shared-mime-info ``` **设置** ``` git clone https://github.com/Doble-2/osint-d2.git cd osint-d2 poetry install ``` 验证您的环境: ``` poetry run osint-d2 doctor run ``` 复制 `.env.example` 到 `.env` 并至少配置: - (可选) `OSINT_D2_AI_API_KEY` (仅当您需要远程 AI 时才需要) 可选覆盖项: - `OSINT_D2_AI_BASE_URL` - `OSINT_D2_AI_MODEL` - `OSINT_D2_AI_TIMEOUT_SECONDS` - `OSINT_D2_DEFAULT_LANGUAGE` (`en` 或 `es`) AI 注意事项: - 远程 AI 需要提供商账户 + API 密钥 (即使是免费层级)。 - 如果未配置密钥,OSINT-D2 会自动回退到本地启发式摘要 (无网络调用)。 PyInstaller / 非 Python 用户 (推荐): - 运行一次 `osint-d2 doctor setup-ai` 并粘贴您的提供商密钥。 - 这将保存一个用户配置 `.env` 文件 (无需手动编辑)。 用户配置 `.env` 位置: - Linux: `~/.config/osint-d2/.env` (或 `$XDG_CONFIG_HOME/osint-d2/.env`) - macOS: `~/Library/Application Support/osint-d2/.env` - Windows: `%APPDATA%\\osint-d2\\.env` ## 快速开始 交互式向导 (默认命令): ``` poetry run osint-d2 ``` 直接帮助: ``` poetry run osint-d2 --help poetry run osint-d2 hunt --help ``` 远程 AI 设置 (无需手动编辑 `.env`): ``` poetry run osint-d2 doctor setup-ai ``` 一次性预设 (如果缺少密钥则提示输入): ``` poetry run osint-d2 scan-email user@example.com --deep-analyze --ai-provider groq ``` 包含 AI + 泄露检查的完整搜寻: ``` poetry run osint-d2 hunt -e user@example.com --ai --ai-provider groq --breach-check --no-ai-save ``` ![Command walkthrough showing the initial hunt invocation](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/bb3b13ac15014303.png) ## 命令参考 | Command | Summary | | --- | --- | | `wizard` | 引导式工作流,询问用户名/邮箱、语言、Sherlock、站点列表和导出选项。 | | `scan` | 跨内置源的轻量级用户名扫描。 | | `scan-email` | 以邮箱为中心的扫描,支持可选的本地部分用户名转换。 | | `hunt` | 编排用户名、邮箱、Sherlock 和站点列表并可选 AI 的完整管道。 | | `analyze` | 对先前导出的 JSON 档案重新运行 AI 分析。 | | `doctor` | 环境诊断 (HTTP 连接性、WeasyPrint 冒烟测试、配置检查)。 | 关键 flags (适用于相关命令): - `--site-lists / --no-site-lists` 启用大型数据驱动的站点清单。 - `--sherlock / --no-sherlock` 下载并执行 Sherlock 清单 (~400 个站点)。 - `--strict / --no-strict` 应用防御性启发式规则以减少误报。 - `--export-json` 写入 `reports/.json`。 - `--export-pdf` 写入 `reports/.pdf` (如果 PDF 失败则回退到 HTML)。 - `--format json` 生成机器友好型输出 (推荐用于自动化)。 - `-l, --language [es|en|pt]` 切换本地化提示和 AI 分析。 AI flags (重要): - `scan` 和 `scan-email` 使用 `--deep-analyze/--no-deep-analyze`。 - `hunt` 使用 `--ai/--noai`。 - 所有这些命令都接受 `--ai-provider`, `--ai-save/--no-ai-save`, 和 `--ai-key`。 示例: ``` # 全面 Hunt:usernames, email, Sherlock, site lists, PDF dossier poetry run osint-d2 hunt \ --usernames exampleuser \ --emails user@example.com \ --site-lists \ --sherlock \ --strict \ --export-pdf # 禁用 AI 分析的快速 email triage poetry run osint-d2 scan-email user@example.com --no-deep-analyze # 对 Spanish 的 exported dossier 重新运行 AI profiler poetry run osint-d2 analyze reports/example.json --language es ``` ## AI 和语言 - 英语是默认的 CLI 和 AI 语言。使用 `--language es` (或 `OSINT_D2_DEFAULT_LANGUAGE=es`) 进行切换。 ### 提供商和预设 支持的预设 (示例): - `--ai-provider deepseek` → `deepseek-chat` - `--ai-provider groq` / `groq-70b` → `llama-3.1-70b-versatile` (推荐质量) - `--ai-provider groq-fast` → `llama-3.1-8b-instant` (快速/便宜) - `--ai-provider openrouter` → `openai/gpt-4o-mini` - `--ai-provider huggingface` → `meta-llama/Llama-3.1-8B-Instruct` ### 速率限制 (TPM) 和 Token 用量 大多数免费层级按 **TPM (每分钟 Token 数)** 和/或请求速率进行限制。Token 用量大致为: $$T_{total} \approx T_{system\_prompt} + T_{evidence} + T_{output}$$ 如果您遇到 `RateLimitError`/HTTP 429,OSINT-D2 会回退到本地启发式摘要,以便您的运行仍能完成。 避免 TPM 限制的提示: - 首选 `--ai-provider groq` 以获得更好的输出质量。 - 如果您必须使用小模型 (如 `groq-fast`),OSINT-D2 会自动切换到 **紧凑提示** 并修剪证据以减少 Token。 - 当收到 429 错误时,等待 30–90 秒后重试。 ### 密钥和保存配置 AI 分析是可选的。启用时: - 如果未设置 `OSINT_D2_AI_API_KEY`,OSINT-D2 会回退到本地启发式摘要 (无网络调用)。 - 对于非 Python / PyInstaller 安装,运行 `osint-d2 doctor setup-ai` 并粘贴一次密钥。 - 使用 `--ai-save/--no-ai-save` 控制是否持久化提供商配置。 - 存在 `--ai-key` 选项但不鼓励使用,因为它可能会保留在 Shell 历史记录中;请使用提示符/向导。 `--json-raw` 将提供商 payload 嵌入在 `analysis.raw` 下以供审计。 将 AI 输出视为假设生成;始终使用主要证据进行确认。 ![CLI AI analysis panel screenshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5c634fe885014305.png) ## 报告 - JSON 导出反映内部 Pydantic 模型,使其易于后处理。 - PDF/HTML 档案通过 Jinja2 模板和 WeasyPrint 渲染,包含汇总表和 AI 叙述 (如果可用)。 - 导出文件写入 `reports/` 目录,文件名通过管道辅助程序进行清理。 ## 泄露检查 (HIBP) OSINT-D2 可以查询 Have I Been Pwned (HIBP) 统一搜索并渲染结果: - CLI 表格: `hunt ... --breach-check` - 报告: 如果可用,泄露结果将包含在 HTML/PDF 档案中 示例: ``` poetry run osint-d2 hunt -e user@example.com --breach-check --no-sherlock --no-site-lists ``` ## 打包 (PyInstaller) 您可以将 OSINT-D2 作为独立可执行包分发给“普通用户”。 关键设计点: - AI 密钥存储在用户配置 `.env` 中 (无需编辑项目 `.env`)。 - 运行时数据集 (如 `sherlock.json`) 在冻结模式下存储在可写的用户数据目录中。 - 报告模板打包到可执行文件中。 ### Linux 构建 (文件夹分发) 在与目标发行版/glibc 匹配的干净环境中构建: ``` python -m venv .venv-build source .venv-build/bin/activate pip install -U pip pip install -e . bash scripts/build_pyinstaller_linux.sh ``` ### macOS 构建 ``` python -m venv .venv-build source .venv-build/bin/activate pip install -U pip pip install -e . bash scripts/build_pyinstaller_macos.sh ``` ### Windows 构建 (PowerShell) ``` python -m venv .venv-build .\.venv-build\Scripts\Activate.ps1 pip install -U pip pip install -e . .\scripts\build_pyinstaller_windows.ps1 ``` 产物将位于: - `dist/osint-d2/` (将此文件夹作为 `.zip` 或 `.tar.gz` 发布) ### 最终用户的首次运行设置 在分发的文件夹内: ``` ./osint-d2 doctor setup-ai ./osint-d2 hunt -e user@example.com --ai --ai-provider groq --breach-check ``` ### GitHub Releases (推荐用于多平台) 此仓库包含一个 GitHub Actions 工作流,用于构建以下平台的 PyInstaller 包: - Linux (`.tar.gz`) - macOS (`.tar.gz`) - Windows (`.zip`) 要发布新版本,推送如下标签: ``` git tag v0.1.0 git push origin v0.1.0 ``` 工作流将自动上传产物到 GitHub Release。 ![PDF dossier cover rendered with the classified layout](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9edfa13d56014307.png) ## 架构 - `src/core/` 领域模型、配置、资源加载器和编排服务 (身份管道、语言工具)。 - `src/adapters/` 集成: HTTP 客户端、Sherlock 运行器、站点列表、AI 分析师、导出器、特定爬虫。 - `src/cli/` Typer 命令、交互式向导、doctor 工具和 Rich UI 组件。 CLI 将业务逻辑委托给服务层 (`core/services/identity_pipeline.py`),保持命令精简且可测试。异步操作通过 `asyncio.run(...)` 包装以保持 Typer 友好性。 ## 故障排除 - `poetry run osint-d2 doctor run` 验证 AI 配置是否存在、HTTP 连接性和 WeasyPrint PDF 支持。 - 启用 `--format json` 以捕获用于错误报告或自动化管道的精确输出。 - 如果您在调试期间希望跳过 AI 调用,请使用 `--no-deep-analyze`。 ### 管道输出时出现 "Aborted" 如果您通过管道输出 (例如 `... | head` / `sed -n ...`),您可能会看到 `Aborted.`。这通常是因为下游命令过早关闭导致的 SIGPIPE。 解决方法: - 首选 `--format json` 并重定向到文件。 - 尽可能避免管道传输 Rich 表格。 ## 免责声明 OSINT-D2 旨在用于合法的防御和调查用途 (事件响应、欺诈、品牌保护、自我审计)。请尊重隐私、服务条款和当地法规。 - 请勿将此工具用于骚扰、人肉搜索或未经授权的入侵。 - 关联工作流可能会产生误报;请使用额外证据进行验证。 - AI 生成的内容可能存在偏差或不正确;请将其视为指导而非事实。 根据 MIT 许可证发布。有关详细信息,请参阅 [LICENSE](LICENSE)。
标签:DeepSeek, DLL 劫持, ESC4, ESC8, IPv6支持, OpenAI, OSINT, PDF报告生成, Poetry, Python, Sherlock, 信息聚合, 内存规避, 大语言模型, 威胁情报, 开发者工具, 开源网络情报, 异步编程, 情报收集, 数据爬虫, 无后门, 漏洞研究, 熵值分析, 用户名枚举, 用户画像, 社会工程学, 网络安全, 计算机取证, 认知分析, 调查工具, 身份关联, 身份识别, 逆向工具, 邮件追踪, 隐私保护