dmitryflynn/opensint

GitHub: dmitryflynn/opensint

OpenSINT 是一个开源且可自托管的情报收集工作台,通过聚合多源公共数据,帮助用户一站式完成域名、IP、邮箱、用户名等实体的情报查询与可视化调查。

Stars: 0 | Forks: 0

# 🛰 OpenSINT **一个开源、可自托管的情报收集工作台。** 将域名、IP、电子邮件、用户名和文件/哈希情报统一在一个控制台中 —— 然后将你发现的线索映射到可视化的调查图谱上。永久免费,基于 MIT 许可证,无需账户。
## 为什么需要 专业的 OSINT 平台将十几种查询功能藏在付费墙后。OpenSINT 是该工作流的免费开源替代实现,由你自己运行。大多数模块在**零配置**下即可使用公共数据源运行;可选的 API key 可以解锁更丰富的结果。 ## 功能 | 模块 | 功能说明 | 无需 key 可用? | | --- | --- | --- | | **通用搜索** | 自动检测任何输入的实体类型,并将其路由到正确的模块 | ✅ | | **域名情报** | WHOIS 注册信息、实时 DNS (A/AAAA/MX/NS/TXT/CNAME/SOA/CAA)、TLS 证书、通过证书透明度 (Certificate Transparency) 获取被动子域名 | ✅ | | **IP 情报** | 地理位置、ASN/ISP 归属、滥用信誉、暴露的端口与服务 | ✅ 地理 · 🔑 信誉/端口 | | **电子邮件情报** | Gravatar 配置文件 + 关联账户、泄露暴露 | ✅ gravatar · 🔑 泄露 | | **用户名搜索** | 在 120 多个平台(社交、开发、游戏、安全、创意、商务)枚举用户名 | ✅ | | **文件与哈希分析** | 跨 70 多个防病毒引擎查询 MD5/SHA-1/SHA-256 的信誉,或直接上传文件 | 🔑 VirusTotal | | **密码泄露** | 基于数以十亿计的泄露密码进行 k-anonymity 检查(仅返回计数) | ✅ | | **调查面板** | 从任何模块固定实体,并将它们链接成可保存、可共享的图谱 | ✅ | `✅ = 免费/公共来源` · `🔑 = 需要可选的 API key 以获取完整结果` ## 快速开始 ``` git clone https://github.com//opensint.git cd opensint npm install # installs root, server, and web dependencies npm run dev # API on :4000, UI on :5173 (hot reload) ``` 打开 **http://localhost:5173**。 ### 生产环境(单端口) ``` npm run build # builds the React app into web/dist npm start # Express serves the API + the built UI on :4000 ``` 打开 **http://localhost:4000**。 ## 配置 每个模块默认在免费/公共来源上运行。要解锁可选的集成功能,请复制示例环境文件并添加你需要的 key: ``` cp .env.example .env ``` | 变量 | 解锁功能 | 获取 key | | --- | --- | --- | | `HIBP_API_KEY` | 邮箱密码泄露暴露 | | | `VIRUSTOTAL_API_KEY` | 文件与哈希信誉 | | | `ABUSEIPDB_API_KEY` | IP 滥用信誉 | | | `SHODAN_API_KEY` | IP 开放端口与服务 | | | `IPINFO_TOKEN` | 更丰富的 IP 地理位置 | | 编辑 `.env` 后重启服务器。侧边栏会显示哪些集成已生效。 ## 架构 ``` opensint/ ├── server/ Node + Express API (ES modules, dependency-light) │ ├── index.js App bootstrap; serves web/dist in production │ ├── routes.js REST endpoints, one per module │ ├── config.js Env + integration status │ └── services/ One file per data source │ ├── detect.js identifier type detection │ ├── dns.js whois.js ssl.js subdomains.js │ ├── ipinfo.js geo + AbuseIPDB + Shodan │ ├── email.js breach.js gravatar + HIBP + Pwned Passwords │ ├── username.js multi-platform enumeration │ ├── virustotal.js file/hash reputation │ └── store.js flat-file investigation persistence └── web/ React + Vite single-page app └── src/pages/ Dashboard, per-module pages, graph board ``` - **无数据库。** 调查面板以单个 JSON 文件持久化存储(`server/data/`),使得自托管变得非常简单。 - **优雅降级。** 每个服务都隔离自身的故障 —— 单个上游服务的失效永远不会拖垮整个查询,并且缺失的 key 会返回有用的提示信息而不是直接报错。 - **全面的超时机制。** 没有响应缓慢的提供商能挂起请求。 ## API 所有 endpoint 都位于 `/api` 下,并返回 `{ ok, data }` 或 `{ ok: false, error }`。 | 方法 | Endpoint | 说明 | | --- | --- | --- | | `GET` | `/api/detect?q=` | 识别实体类型 | | `GET` | `/api/domain?domain=` | 完整的域名报告(或 `/dns`, `/whois`, `/ssl`, `/subdomains`) | | `GET` | `/api/ip?ip=` | IP 情报 | | `GET` | `/api/email?email=` | 电子邮件情报 | | `GET` | `/api/username?username=` | 用户名枚举 | | `GET` | `/api/hash?hash=` | 哈希信誉 | | `POST` | `/api/file/scan` | 原始文件主体 → VirusTotal | | `POST` | `/api/password/check` | k-anonymity 密码泄露检查 | | `GET/POST/DELETE` | `/api/investigations` | 调查面板的 CRUD 操作 | ## 技术 Node 18+ · Express · React 18 · React Router · Vite。无付费服务,无遥测。 ## 贡献 欢迎提交 Issue 和 PR —— 新的用户名平台、额外的数据源以及 UI 优化都是很好的首次贡献。请保持新增内容仅限于**公共/防御性**来源,以符合项目的范围。 ## 许可证 [MIT](LICENSE)。不隶属于任何商业 OSINT 提供商。
标签:GitHub, MITM代理, 图分析, 威胁情报, 安全调查, 实时处理, 开发者工具, 数据泄露, 自定义脚本