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, 安全研发, 异步并发, 无后门, 用户名枚举, 网络情报, 聊天机器人, 计算机取证, 运行时操纵, 逆向工具