Badarulnisa/Ghost-line
GitHub: Badarulnisa/Ghost-line
基于 WhatsMyName 数据集的异步用户名变体生成与跨平台检测 OSINT 工具,解决传统工具只能检测精确用户名且串行效率低的问题。
Stars: 1 | Forks: 0
# username-variant-recon
基于
[WhatsMyName](https://github.com/WebBreacher/WhatsMyName) 数据集构建的异步用户名排列组合 OSINT 工具。
标准的用户名检测工具(包括原始的 WMN 检测脚本)只
检测你提供的精确字符串。但在实际情况中,真实用户很少
在每个平台上使用同一个固定的用户名——他们会去掉数字、
调换姓名顺序、加上所在城市,或者在某些网站上使用单名。
该工具通过种子身份数据生成逼真的候选用户名变体,并利用 WMN 约 700 个网站的数据集对所有变体进行并发检测。
## 为什么开发这个工具
- WMN 自带的检测脚本是串行执行的——为一个用户名检测约 700 个
网站需要数分钟时间。用这种方式检测十几个变体无法扩展。
- 现有的 WMN 封装工具均不支持变体生成。你要么只能检测一个
已知的用户名,要么干脆放弃。
- 大多数用户名生成启发式算法都假设采用西方的 `first.last`(名.姓)
命名习惯。该工具还能生成在南亚 / 中东和北非 (MENA) 命名习惯中常见的单名风格和
重新排序的候选项,这是那些偏重西方命名模式的工具
所生成不足的。
## 工作原理
1. **`variant_engine.py`** —— 接收种子身份数据(姓名 token、已知
真实用户名、出生年份、位置、职业、别名),并通过分隔符变体、
姓名顺序排列、数字后缀和单名形式,生成
去重后的候选用户名列表。
2. **`wmn_wrapper.py`** —— 加载 WMN 实时的 `wmn-data.json`,并通过 `httpx.AsyncClient` +
`asyncio.Semaphore` **并发地**将每个候选项
在每个网站上进行检测,而不是每次只发送一个请求。
3. **`reporter.py`** —— 以 JSON、Markdown 和 CSV 格式输出结果。
## 安装说明
```
git clone https://github.com/Badarulnisa/username-variant-recon.git
cd username-variant-recon
pip install -r requirements.txt
```
## 使用方法
```
# 从 seed data 生成变体并检查所有变体
python3 cli.py --name ahmed chaudhary \
--known-handle chaudharyahmed07 \
--location lahore \
--year 1999 \
--max-variants 100 \
--output report
# 仅检查确切字符串,不生成变体
python3 cli.py --name someexacthandle --single-only
```
### 选项
| 标志 | 描述 |
|---|---|
| `--name` | 一个或多个姓名 token(必填) |
| `--known-handle` | 已确认的真实用户名,用作变异种子 |
| `--location` | 用作前缀/后缀的城市/地区 |
| `--profession` | 用作前缀/后缀的领域/职业 token |
| `--year` | 出生年份(同时尝试 2 位数字格式) |
| `--extra` | 额外的昵称/别名 token |
| `--max-variants` | 生成变体的数量上限(默认为 200) |
| `--single-only` | 跳过生成,仅检测精确的 `--name`/`--known-handle` |
| `--concurrency` | 每个用户名的最大并发请求数(默认为 30) |
| `--no-refresh` | 使用缓存的数据集,而不是获取最新版本 |
输出:`report.json`、`report.md`、`report.csv`。
## ⚠️ 结果解读 —— 请阅读本节
**匹配成功意味着该网站上存在此用户名。但这并不代表是
同一个人。** 常见的用户名会不断被他人重复使用或抢注。在根据
匹配结果得出任何结论之前:
- 将头像、个人简介和发帖活动与你
目标已确认的个人资料进行对比
- 检查交叉链接(该资料是否链接到了其他已确认的
账号?)
- 对出现在大众化网站上的单一匹配结果保持怀疑态度;对于聚集在
特定/相关网站上的匹配结果则可以给予更多信任
该工具仅提供用于人工验证的候选项。它本身无法,
也不可能确认身份。
## 道德与合法使用
该工具仅通过各网站正常的个人资料查询响应来检测用户名的**公开存在性**——这与你的浏览器在
访问个人资料 URL 时发出的请求相同。它不会进行身份验证,也不会绕过访问控制,
或获取私人数据。
仅对你有正当理由调查的用户名/身份使用此工具(你自己的账号、经授权的委托任务,或
不违反你所在司法管辖区的平台服务条款 (ToS) 或骚扰/跟踪法律的个人
调研)。请勿将此工具用于实施骚扰、人肉搜索
或跟踪。
## 路线图
- [x] v1:变体生成 + 异步 WMN 检测 + JSON/MD/CSV 报告
- [ ] 跨平台关联:感知哈希头像比对
(`imagehash`)+ 模糊个人简介/显示名称匹配(`rapidfuzz`),
以自动标记哪些匹配结果可能属于同一身份
- [ ] 图表输出(NetworkX / pyvis)——
用户名 → 网站 → 关联身份集群的可视化实体图谱;兼容 Maltego 的
CSV 导出
- [ ] Wayback Machine 回退机制——针对现在返回“未找到”的网站,检测 CDX API 中的历史
个人资料存在状态(针对已删除/已停用
的账号)
- [ ] 站点可靠性评分——使用 WMN 已知容易出现误报的
网站列表对匹配结果进行权重计算
- [ ] 隐身模式——随机延迟 + User-Agent (UA) 轮换配置,作为
高速/最大并发配置的补充
- [ ] 超越南亚/MENA
单名模式的文化感知变体生成——可配置的命名规则模板
## 许可证
MIT —— 详见 [LICENSE](LICENSE)。
标签:ESC4, OSINT, Python, 安全研发, 异步并发, 无后门, 用户名枚举, 网络情报, 聊天机器人, 计算机取证, 运行时操纵, 逆向工具