dgoni97/scout-osint
GitHub: dgoni97/scout-osint
Scout 是一个单人 OSINT 研究工具,从公开来源收集信息并将其关联为带置信度评分的实体图谱,辅以 LLM 生成结构化情报报告。
Stars: 1 | Forks: 0
# Scout — OSINT 与研究聚合代理
Scout 是一个**单人 OSINT / 研究工具**。给它一个目标——域名、
公司、用户名、电子邮件、电话号码、自由文本主题,或(可选模块)一个
EVM 加密货币地址 / ENS 名称——它就会从多个来源收集**公开**信息,
将标识符关联成一个带有置信度评分的**实体图**,使用
LLM 生成结构化的**情报报告**,将所有内容存储在
加密的本地数据库中,并通过一个小型 Web 仪表板提供服务。它可以按计划重新扫描
目标并标记出发生变化的内容。
其标志性能力是**实体解析 / 画像分析**:跨平台链接属于同一真实实体的账户和标识符——呈现形式为带有置信度评分的**证据,而非最终的定论**。

## 伦理与范围(硬性约束)
这些是内置的,而非可选项:
- **仅限公开数据** — 不进行登录/cookie 抓取,不绕过 auth/CAPTCHA,不使用
凭证,不伪造 User-Agent/浏览器/TLS 指纹。每个请求
都带有诚实的 User-Agent(标明 Scout 名称),并且严格遵守 `robots.txt` 和单主机速率
限制。
- **证据,而非定论** — Scout 绝不会断言“这是同一个人”或
“这是一个诈骗犯”。每个链接和发现都带有置信度;即使是
最强的置信度也只是“可能”,而非证明。
- **公司与个人不对称** — 对于公司/组织,Scout 可能会挖掘得更深(它们
是公开主体);对于个人,它仅聚合他们自己在公开场合发布的内容,
并且个人的已归档但随后被删除的内容会被标记出来,绝不会
显示为当前内容。
- **默认被动** — 唯一的主动探测(TCP 端口检查)**默认关闭**
且需在每次扫描时明确选择启用,并附带授权免责声明。
- **本地且加密** — 所有收集的数据都通过**静态加密**(SQLCipher)保存在您机器上的 SQLite DB
中。您可以随时删除目标及其所有数据。
只有发送到已配置 LLM/搜索提供商的内容才会离开机器;
变更通知是**无内容**的(仅包含目标名称 + “已更改”,绝不包含报告
内容)。
- **泄露数据** — 仅限存在性元数据(哪个泄露事件、何时、数量)。Scout 绝不会
获取、存储或显示泄露的凭证或内容。
## 架构
```
input → classify target → run collectors → normalize → correlate → LLM synthesis → store → serve
```
- **目标分类器** — 按优先级排序的检测(电子邮件 → 电话 → 钱包 →
域名 → 用户名 → 公司/主题),带有操作员覆盖选项。
- **收集器**(`scout/collectors/`) — 可插拔、故障隔离,在一个共享的 HTTP 层后并发运行
(速率限制、`robots.txt` 双通道策略、诚实的
UA、短暂的扫描范围缓存)。每个收集器返回统一形状的 `Finding` 记录。
- **关联引擎**(`scout/correlate/`) — 构建置信度加权的标识符
图。信号通过 noisy-OR 组合,在跨越枢纽节点时以乘法方式衰减,
并根据稀有度/熵进行加权。模糊匹配是 Jaro-Winkler + Soundex
(标准库)。匹配强度(0–100 %)是一个与发现/边缘置信度
(0.0–1.0)截然不同的轴。
- **枢纽引擎**(`scout/pivot/`) — 从发现的标识符向外扩展,支持
`interactive`(操作员批准每次跳跃;针对个人的默认模式)或 `auto` 模式,
受 `max_depth` 和 `min_confidence_to_pivot` 限制。
- **LLM 合成**(`scout/synth/`) — 在一个有边界的
**不可信数据**块上生成散文式报告;可引用的来源列表和风险标志是
确定性地构建的,绝不来自模型(防御 prompt 注入,§6)。
- **存储**(`scout/store/`) — 加密的 SQLite;每次扫描对应一行,用于历史记录/diff。
- **仪表板**(`scout/web/`) — `ThreadingHTTPServer` 仅绑定到 `127.0.0.1`,
带有 Host 头部防护,并且每个改变状态的 POST 请求都有 CSRF token。
- **调度器**(`scout/rescan.py`,`deploy/`) — `scout rescan-all` 重新扫描跟踪的
目标,并在发生真正的(非易失性)变化时触发无内容通知。
完整的设计规范——威胁模型、每个收集器的契约、置信度和
匹配强度模型、伦理约束,以及刻意推迟的内容——位于
**[docs/SPEC.md](docs/SPEC.md)** 中。它是在编写代码之前写好的,也是代码构建所依据的基础;
此 README 中各处的章节引用(§6,§8,§14……)均指向该文档。
## 设置
要求 **Python 3.11+**。
```
python -m venv .venv
# Windows: .venv\Scripts\activate Linux/macOS: source .venv/bin/activate
pip install anthropic pillow sqlcipher3-wheels
cp .env.example .env # then edit .env
```
只有 `SCOUT_DB_PASSPHRASE` 是必需的(它用于加密存储)。其他所有内容都是
可选的——缺少 API key 会将该收集器降级为“源不可用”,
绝不会导致扫描崩溃。有关每个 key 的说明,请参见 `.env.example`(搜索/LLM/GitHub/泄露事件/
链上/通知凭证)。
依赖项(保持在最低限度,§11):`anthropic`(LLM),`pillow`(头像图像
哈希),`sqlcipher3-wheels`(静态 DB 加密)。其他所有内容均为标准
库。
## 用法
```
scout run [--mode interactive|auto] [--max-depth N] [--min-confidence F] [--type TYPE] [--onchain] [--port-check] [--no-report]
scout serve [--port 8770] [--onchain] # the dashboard, on http://127.0.0.1:
scout rescan-all [--onchain] [--no-report] # re-scan tracked targets, notify on change
scout delete # remove a target and all its data
scout validate-config # validate the platform records against the schema
```
示例:
```
scout run example.com # domain intel, mail config, website, security, reputation…
scout run raven11 --type username # handle presence across ~30 platforms + correlation
scout run 0xd8dA…6045 --onchain # EVM address: activity, sanctions/scam/mixer screen, labels
scout serve # then open http://127.0.0.1:8770
```
仪表板允许您启动扫描,审查报告 + 实体图 + 原始
发现(每个事实都链接到其来源),批准/拒绝枢纽节点,粘贴 URL 进行
解析,解决风险标志,对比两次扫描,以及删除目标。
## 收集器 (v1)
Web/新闻搜索(Brave),域名情报(通过 DoH 的 DNS/DNSSEC,RDAP,IP→ASN,TLS,
Certificate-Transparency 子域名),邮件配置(SPF/DKIM/DMARC/BIMI/提供商),
网站画像(标题/OG,联系方式,重定向链,sitemap,技术栈,favicon +
analytics-ID 同一操作者信号),安全态势(headers,HSTS-preload,TLS,
WAF,`security.txt`),声誉与归档(Tranco,Wayback,URLhaus),用户名
存在性(~30 个平台),GitHub,RSS/新闻源,邮件情报(Gravatar,PGP,
泄露**存在性**),电话情报(离线验证),制裁/观察名单名称
筛查(OpenSanctions),企业泄露(OCCRP Aleph,针对公司目标,可选),
头像感知哈希,一个可选的**链上**模块(活动,地址
标签,制裁/诈骗/混币器筛查,有边界的资金流向追踪),以及一个可选的,
默认关闭的**端口检查**。
## 调度
`scout rescan-all` 与操作系统无关;可以使用您的调度器按间隔运行它。示例
配置(需调整路径)位于 `deploy/` 中:
- **Windows** — `deploy/windows/`(任务计划程序 `.bat` + `register-task.ps1`)
- **Linux** — `deploy/systemd/`(`.service` + `.timer`,首选)或
`deploy/cron/`(crontab 备选)
在检测到变化时,它会发送一个**无内容**通知(Telegram 或 SMTP),
仅包含目标名称 + “已更改”——请在 `.env` 中配置频道。
## 测试
```
python -m pytest # full suite (mocked network)
```
**733 个测试**,所有网络请求均被模拟,无实际调用。该套件涵盖了分类器、
收集器、存储、关联/信号评分(包括负面信号 + 稀有度
加权)、diff 逻辑、合成 prompt/隔离、仪表板安全门控,
以及调度器变更门控。
## 数据来源、许可与归属
Scout 是一个**个人 / 研究工具**。它使用的某些数据集**仅限非商业用途**——请尊重每个来源的条款。
| 数据集 / 来源 | 用于 | 许可 / 条款 |
|---|---|---|
| **OpenSanctions** (`targets.simple.csv`) | 制裁/观察名单名称 + 钱包筛查 | **CC-BY-NC 4.0 — 仅限非商业用途**;需要归属 |
| **GraphSense TagPacks** | 地址标签(已推迟;v1 中使用 etherscan-labels) | 根据不同包的来源,按政策不包含 PII |
| **brianleect/etherscan-labels** | 链上地址标签 | Etherscan 公共标签云的重新发布转储——**请验证来源;再次分发可能触及 Etherscan ToS** |
| **Chainalysis Sanctions Oracle** | 链上制裁交叉检查 (`eth_call`) | 免费的公共合约;需要您自己的 RPC endpoint |
| **Chainabuse** | 诈骗/钓鱼报告筛查 | 通过官方报告 endpoint;适用其条款 |
| **ICIJ Offshore Leaks / OCCRP Aleph** | 公司目标调查泄露(仅限公共集合) | 记者审查的公共利益数据;各自有其条款;适用个人隐私免责声明 |
| **Tranco** | 域名排名 | 免费的研究列表 |
| **Wayback / CDX**,**crt.sh**,**URLhaus**,**HIBP**,**keys.openpgp.org** | 归档,CT,威胁,泄露存在性,PGP | 各自适用其条款;HIBP 仅限泄露**存在性** |
**方法论借鉴**(仅限方法论——注明之处未复制代码):
- `lissy93/web-check` (MIT) — 几项域名/网站/安全检查。
- `soxoj/maigret`,`soxoj/socid-extractor`,`sherlock-project/sherlock` (MIT) —
用户名存在性网站格式,检测方法论,以及个人资料字段本体。
- `OffcierCia/On-Chain-Investigations-Tools-List` — 链上数据来源。
- **OpenSanctions** / `checkmarble/marble` — 名称匹配方法论(重新实现)。
- `minaminao/tornado-cats` — Tornado-Cash 参考(仅限方法论,未复制代码)。
在近乎逐字移植常量表或记录的地方(WAF 签名,DKIM
选择器,混币器池地址,平台记录),代码中均带有
`# Adapted from ` 注释。
## 许可证
代码为 MIT 许可证(见 [LICENSE](LICENSE))。**数据来源则不然**——其中一些带有
各自的条款,且 OpenSanctions 为 CC-BY-NC 4.0,仅限非商业用途。在进行任何商业用途之前,请查阅上方的表格。
## 刻意未构建的内容 (v1)
更深度的链上取证(比例污染分析,地址聚类,BTC/UTXO
启发式算法,跨链桥接追踪,混币器时间去匿名化,NFT
分析),更广泛的跨扫描实体图,Markdown/PDF 导出,以及持续的
用户名存在性校准循环均已**推迟**(规范 §14)。一些关联
信号在未来的收集器为其提供数据之前将保持**休眠**状态。目前仅实现了 Anthropic LLM
后端;OpenAI/Google/本地模型均已作为扩展点记录在文档中。
标签:DLL 劫持, ESC4, OSINT, 大语言模型, 实体关联, 情报收集, 本地加密, 漏洞研究, 逆向工具