Zeyneell/Zcheck
GitHub: Zeyneell/Zcheck
Zcheck 是一款数据驱动、自我校验的异步邮箱 OSINT 工具,通过 690 多个站点排查邮箱关联的账号存在性,并以 canary 校验和自检机制抑制误报。
Stars: 0 | Forks: 0
# Zcheck
**异步邮箱 → 账号 OSINT。** 给它一个邮箱地址;Zcheck 会告诉你那个人在哪些地方拥有账号 —— 类似 holehe 风格,但它是**数据驱动**且**自我校验**的,因此能够扩展到 690 多个站点,并且在网站发生变化时不会悄无声息地失效。
```
____ _ _
|_ /__ __| |_ ___ __ __ | |__
/ / _/ _| ' \/ -_) _| / /| / /
/___\__\__|_||_\___\__|_\_\|_\_\ OSINT
```
## 为什么它与 holehe 不同
| | holehe | **Zcheck** |
|---|---|---|
| 站点 | 约 120 个邮箱检测源 | **3 个邮箱检测源 + 690 多个用户名站点** |
| 添加站点 | 编写 Python 模块 | **编辑一个 JSON 条目**(或添加一个插件) |
| 站点更改其响应 | 检查器静默失效 | **`update` 拉取修复;`doctor` 标记偏移;canary 抑制误报** |
| 误报 | 信任模块 | **每次命中都会与一次性 canary 进行重新校验** |
## 工作原理
两个引擎支持一个运行器:
1. **邮箱检测源** —— 网站的“该邮箱是否已注册?” endpoint(注册/重置)。简单的配置以 JSON 形式存在于 [`email_sites.json`](src/zcheck/data/email_sites.json) 中;需要 CSRF token 或多步骤流程的配置则是 [`sites/plugins/`](src/zcheck/sites/plugins/) 中的 Python 插件。
2. **用户名扫描** —— 从邮箱的本地部分推导出用户名,并使用每个站点的 `e_code` / `e_string` / `m_string` 契约,将其与 **WhatsMyName** 数据集(690 多个站点)进行比对。**不**跟随重定向,因此重定向到通用页面不会被误认为是命中。
### 绝不向您撒谎 —— 防止误报的三重保证
- **Canary 校验。** 扫描完成后,每个声称命中的站点都会使用一个*保证不存在*的标识符进行重新探测。如果它也“找到”了该标识符,则说明它是一个过度匹配的检测源,结果将被降级为 `unknown`。(在测试中,这曾在一次实际运行中抓到了 *Arch Linux GitLab*。)
- **否定标记。** 用户名检查要求存在肯定标记**并且**缺少站点的“未找到”标记 —— 从而消除 soft-404。
- **`zcheck doctor`。** 自我测试:使用已知的正常对照组 + canary 探测每个检查器,并标记任何报告虚假账号的情况。将其接入 CI 以自动捕获偏移。
### 自我更新
`zcheck update` 将数据集刷新到您的用户缓存中,该缓存优先于内置快照。当站点发生更改并且数据集在上游得到修复时,您**无需新版本发布**即可获得修复 —— 无需修改任何代码。
## 安装
```
git clone https://github.com/Zeyneell/Zcheck.git
cd Zcheck
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e .
```
在 Windows 上,您也可以直接双击 **`Zcheck.bat`** —— 它会在首次运行时构建 venv 并进行安装,然后让您进入交互式菜单。
## 用法
交互式菜单(与 Zloc 的感觉相同):
```
zcheck
```
单次运行:
```
zcheck scan someone@example.com # email oracles + username sweep
zcheck scan someone@example.com --mode email # just the email oracles
zcheck scan someone@example.com -u customhandle # override the guessed username
zcheck scan someone@example.com --nsfw --json out.json --csv out.csv
zcheck sites # what Zcheck can check, by category
zcheck doctor --cat coding # health-check a category
zcheck update # refresh the site datasets
```
实用标志:`--mode email|username|both`, `--only site,site`, `--cat cat,cat`, `--nsfw`,
`--concurrency N`, `--timeout S`, `--no-canary`.
## 扩展
添加站点是数据操作,而不是编写代码 —— 有关邮箱检测源和用户名 schema,请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。复杂的站点可以在 `sites/plugins/` 中使用一个小型 Python 插件(自动发现)。
## 道德与范围
Zcheck 用于**授权的** OSINT、安全评估以及 CTF/研究。它只*读取*公开的账号存在性检测源 —— 它从不重置密码,从不向目标发送邮件,也从不进行登录。请勿在缺乏合法依据的情况下,将其用于骚扰、人肉或调查他人。
## 致谢与许可
- 代码:**MIT**(见 [LICENSE](LICENSE))。
- 用户名数据集:由 Micah "WebBreacher" Hoffman 提供的 **WhatsMyName**,**CC BY-SA 4.0** —— 见
[DATA_SOURCES.md](DATA_SOURCES.md)。
标签:ESC4, Homebrew安装, OSINT, 异步编程, 数据驱动, 文档结构分析, 调试插件, 逆向工具, 邮箱侦查