OpenOSINT/OpenOSINT

GitHub: OpenOSINT/OpenOSINT

基于 MCP 协议的开源情报框架,为 AI 代理提供九种被动情报收集工具,支持终端 CLI 与自动化 OSINT 调查。

Stars: 14 | Forks: 5

# OPENOSINT(1) — 通用命令手册
OpenOSINT

[![Release](https://img.shields.io/github/v/release/OpenOSINT/OpenOSINT?label=release&style=flat-square)](https://github.com/OpenOSINT/OpenOSINT/releases) [![Python](https://img.shields.io/badge/python-3.10%2B-blue?style=flat-square)](https://www.python.org/) [![MCP](https://img.shields.io/badge/protocol-MCP-blueviolet?style=flat-square)](https://modelcontextprotocol.io/) [![PyPI](https://img.shields.io/pypi/v/openosint?style=flat-square)](https://pypi.org/project/openosint/) [![License: MIT](https://img.shields.io/badge/license-MIT-green?style=flat-square)](LICENSE)
OpenOSINT demo
## 名称 **openosint** — 用于开源情报的 Model Context Protocol 服务器与 CLI。 ## 概要 ``` openosint [-v] command [args ...] openosint email ADDRESS [-t SECONDS] openosint username HANDLE [-t SECONDS] ``` ## 描述 **openosint** 是一个模块化的 OSINT 框架,通过 Anthropic Model Context Protocol (MCP) 向大型语言模型暴露 9 个情报收集工具。它同时也可作为传统的命令行接口,供人类直接执行。 该框架基于非阻塞的异步运行时 (Python `asyncio`) 构建。所有外部二进制文件均作为托管子进程被调用,并强制执行硬性超时。框架没有内嵌 LLM —— **openosint** 提供的是工具接口,由兼容 MCP 的客户端自主调用。 ## 架构 | 层级 | 路径 | 职责 | |-------|------|----------------| | 核心工具 | `openosint/tools/` | 外部 OSINT 二进制文件与 API 的异步包装器。无 I/O,无 UI。 | | MCP 服务器 | `openosint/mcp_server.py` | 将核心函数转换为 MCP 工具 schema。路由 LLM 调用。 | | CLI | `openosint/cli.py` | 面向人类的接口。直接调用核心工具。 | 任何层级都不会导入其上方的层级。核心工具是无状态的,且对 MCP 或 argparse 一无所知。 ## 安装说明 需要 Python 3.10 或更高版本。 ``` git clone https://github.com/OpenOSINT/OpenOSINT.git cd OpenOSINT pip install -e . ``` **外部依赖**(必须存在于 `PATH` 中): | 二进制文件 | 用途 | 安装 | |--------|---------|---------| | `holehe` | 电子邮件账户枚举 | `pip install holehe` | | `sherlock` | 用户名枚举(300+ 平台) | `pip install sherlock-project` | | `sublist3r` | 子域名枚举 | `pip install sublist3r` | | `phoneinfoga` | 电话号码情报 | [下载二进制文件](https://github.com/sundowndev/phoneinfoga/releases) | 如果某个二进制文件缺失,对应的工具将返回一条描述性的错误字符串。服务器和 CLI 对于依赖已满足的工具仍然保持正常运行。 **可选环境变量:** | 变量 | 工具 | 用途 | |----------|------|---------| | `HIBP_API_KEY` | `search_breach` | HaveIBeenPwned API 密钥 — [在此处获取](https://haveibeenpwned.com/API/Key) | | `IPINFO_TOKEN` | `search_ip` | 用于提高速率限制的 ipinfo.io token | ## 工具 ### search_email 使用 [holehe](https://github.com/megadose/holehe) 枚举与电子邮件地址关联的在线服务和社交账户。 **MCP 参数:** `email` (字符串, 必填) — 目标电子邮件地址。 **CLI:** ``` $ openosint email target@example.com $ openosint email target@example.com -t 60 ``` **示例输出:** ``` OSINT results for 'target@example.com': [+] Spotify https://open.spotify.com/user/target [+] WordPress https://wordpress.com/target [+] Gravatar https://gravatar.com/target [+] Office365 email used ``` ### search_username 使用 [sherlock](https://github.com/sherlock-project/sherlock) 跨 300+ 平台搜索用户名。 **MCP 参数:** `username` (字符串, 必填) — 目标用户名或别名。 **CLI:** ``` $ openosint username johndoe99 $ openosint username johndoe99 -t 120 ``` **示例输出:** ``` OSINT results for username 'johndoe99': [+] GitHub https://github.com/johndoe99 [+] Twitter https://twitter.com/johndoe99 [+] Reddit https://reddit.com/user/johndoe99 [+] HackerNews https://news.ycombinator.com/user?id=johndoe99 ``` ### search_breach 通过 [HaveIBeenPwned v3 API](https://haveibeenpwned.com/API/v3) 检查电子邮件地址是否出现在已知公开数据泄露中。 **需要:** 设置 `HIBP_API_KEY` 环境变量。 **MCP 参数:** `email` (字符串, 必填) — 目标电子邮件地址。 **示例输出:** ``` Found in 2 breach(es) for 'target@example.com': [+] LinkedIn (2016-05-05) — leaked: Email addresses, Passwords, Names [+] Adobe (2013-10-04) — leaked: Email addresses, Password hints, Usernames ``` ### search_whois 使用 [python-whois](https://github.com/richardpenman/whois) 检索域名的 WHOIS 注册数据。 **MCP 参数:** `domain` (字符串, 必填) — 目标域名(例如 `example.com`)。 **示例输出:** ``` WHOIS results for 'example.com': [+] Domain: EXAMPLE.COM [+] Registrar: ICANN [+] Created: 1995-08-14 [+] Expires: 2024-08-13 [+] Name Servers: A.IANA-SERVERS.NET, B.IANA-SERVERS.NET [+] Emails: abuse@iana.org ``` ### search_ip 通过 [ipinfo.io](https://ipinfo.io) 检索 IP 地址的地理位置、ASN、主机名和组织数据。 免费套餐:无 token 每月 5 万次请求。设置 `IPINFO_TOKEN` 可获取更高限额。 **MCP 参数:** `ip` (字符串, 必填) — 目标 IP 地址(例如 `8.8.8.8`)。 **示例输出:** ``` IP intelligence for '8.8.8.8': [+] Ip: 8.8.8.8 [+] Hostname: dns.google [+] Org: AS15169 Google LLC [+] City: Mountain View [+] Region: California [+] Country: US [+] Loc: 37.4056,-122.0775 [+] Timezone: America/Los_Angeles ``` ### search_domain 使用 [sublist3r](https://github.com/aboul3la/Sublist3r) 枚举目标域名的子域名。 **MCP 参数:** `domain` (字符串, 必填) — 目标域名(例如 `example.com`)。 **示例输出:** ``` Subdomains found for 'example.com': [+] mail.example.com [+] dev.example.com [+] staging.example.com [+] api.example.com ``` ### generate_dorks 为任意目标字符串(姓名、电子邮件、用户名或域名)生成一组 12 个针对性的 Google dork URL。无网络调用 —— 返回准备在浏览器中打开的 URL。 **MCP 参数:** `target` (字符串, 必填) — 任意目标字符串。 **示例输出:** ``` Google dork URLs for 'john.doe@example.com': [+] "john.doe@example.com" https://www.google.com/search?q=%22john.doe%40example.com%22 [+] "john.doe@example.com" site:linkedin.com https://www.google.com/search?q=%22john.doe%40example.com%22+site%3Alinkedin.com ... ``` ### search_paste 通过 [psbdmp.ws](https://psbdmp.ws) 公共 API 在 Pastebin 数据倾倒中搜索提及的电子邮件地址或用户名。 **MCP 参数:** `query` (字符串, 必填) — 要搜索的电子邮件地址或用户名。 **示例输出:** ``` Found in 3 paste(s) for 'target@example.com': [+] https://pastebin.com/aB1cD2eF (2023-04-12) [+] https://pastebin.com/xY3zA4bC (2022-11-08) [+] https://pastebin.com/mN5oP6qR (2021-07-30) ``` ### search_phone 使用 [phoneinfoga](https://github.com/sundowndev/phoneinfoga) 收集电话号码的运营商、国家和线路类型数据。 **MCP 参数:** `phone` (字符串, 必填) — E.164 格式的目标电话号码(例如 `+14155552671`)。 **需要:** `PATH` 中存在 `phoneinfoga` 二进制文件。[在此处下载](https://github.com/sundowndev/phoneinfoga/releases)。 **示例输出:** ``` Phone intelligence for '+14155552671': [+] International format: +1 415-555-2671 [+] Country: United States [+] Carrier: AT&T [+] Line type: Mobile ``` ## 命令 ``` email ADDRESS [-t SECONDS] ``` 使用 holehe 枚举针对 *ADDRESS* 注册的在线服务。默认超时:120 秒。 ``` username HANDLE [-t SECONDS] ``` 使用 sherlock 枚举 *HANDLE* 注册的平台。默认超时:180 秒。 **全局标志:** | 标志 | 描述 | |------|-------------| | `-v, --verbose` | 启用到标准错误输出的调试级别日志。 | | `-t, --timeout N` | 覆盖默认的子进程超时时间(秒)。 | ## 配置 ### Claude Code 安装后注册 MCP 服务器: ``` claude mcp add openosint python /absolute/path/to/OpenOSINT/openosint/mcp_server.py ``` 验证: ``` claude mcp list ``` ### Claude Desktop 添加至 `~/Library/Application Support/Claude/claude_desktop_config.json`: ``` { "mcpServers": { "openosint": { "command": "python", "args": ["/absolute/path/to/OpenOSINT/openosint/mcp_server.py"] } } } ``` ## 示例 枚举针对电子邮件地址注册的服务: ``` $ openosint email target@example.com -t 60 ``` 跨所有支持的平台搜索用户名: ``` $ openosint username johndoe99 ``` 启用详细输出: ``` $ openosint -v email target@example.com ``` MCP 注册后通过 Claude Code 进行 Agentic 执行: ``` $ claude > Investigate target@example.com. If you find an associated username, trace it across other platforms and compile a full report. ``` ## 文件 | 路径 | 描述 | |------|-------------| | `openosint/mcp_server.py` | MCP 服务器入口点 (stdio transport)。 | | `openosint/cli.py` | CLI 入口点。 | | `openosint/tools/search_email.py` | 电子邮件枚举模块。 | | `openosint/tools/search_username.py` | 用户名枚举模块。 | | `openosint/tools/search_breach.py` | 数据泄露检查模块。 | | `openosint/tools/search_whois.py` | WHOIS 查询模块。 | | `openosint/tools/search_ip.py` | IP 情报模块。 | | `openosint/tools/search_domain.py` | 子域名枚举模块。 | | `openosint/tools/generate_dorks.py` | Google dork URL 生成器。 | | `openosint/tools/search_paste.py` | Pastebin 数据倾倒搜索模块。 | | `openosint/tools/search_phone.py` | 电话情报模块。 | | `openosint/tools/exceptions.py` | 共享异常层次结构。 | | `pyproject.toml` | 项目元数据与构建配置 (PEP 621)。 | | `DISCLAIMER.md` | 法律声明与道德使用政策。 | ## 退出状态 | 代码 | 含义 | |------|---------| | 0 | 执行成功。 | | 1 | 一般错误(参数无效、工具故障)。 | | 130 | 被 SIGINT 终止 (Ctrl-C)。 | ## 作者 由 Tommaso Bertocchi 开发。 ## 许可证 MIT 许可证。详见 [LICENSE](LICENSE)。 *OpenOSINT 2.1.0 — 2026 年 5 月 11 日*
标签:AI代理, AI安全, asyncio, ATT&CK, ATT&CK 框架, Chat Copilot, CLI, DLL 劫持, ESC4, MCP, Model Context Protocol, OSINT, OSINT工具, Python, WiFi技术, 外部攻击面分析, 大语言模型, 实时处理, 开源框架, 异步编程, 情报收集, 持续集成, 无后门, 漏洞研究, 用户名追踪, 网络安全, 自动化调查, 计算机取证, 逆向工具, 邮箱查询, 隐私保护, 黑盒测试