Miro-sh/matrix-checker

GitHub: Miro-sh/matrix-checker

一个通过 MAS 注册流程精确检测 Matrix.org 用户名可用性的扫描工具,解决了传统 profile 查询误报率高的问题。

Stars: 1 | Forks: 0

# matrix-checker 一个用于 Matrix.org 的用户名可用性扫描工具。给它提供一个名单列表,每行一个, 它会告诉你哪些用户名仍然可以注册。 ## 为什么不直接使用 /profile 大多数脚本通过调用 `GET /_matrix/client/v3/profile/@name:matrix.org` 来检查 Matrix 用户名。在 matrix.org 上,这种检查方式在很多情况下是不准确的。那里的身份验证由 Matrix Authentication Service (MAS) 处理,许多已经存在的账户仍然会在 profile endpoint 返回 `No row found (profiles)`。像 `void`、`ghost`、 `zero`、`hex` 和 `cipher` 这样的名字通过这种方式读取会显示为“可用”,尽管它们 实际上已被注册。 matrix-checker 会询问实际拥有账户的组件。它会重放 MAS 注册表单的用户名验证步骤并读取结果。这样就避免了 profile 技巧带来的误报, 并且绝对不会创建账户。 ## 工作原理 1. `GET /register/password` 以获取 session cookie 和 CSRF token。 2. 带着用户名和不匹配确认字段的密码发起 `POST /register/password` 请求。 密码不匹配会导致表单每次都提交失败,因此注册过程永远不会 完成。服务器仍然会首先验证用户名,如果该名称已被使用,则会返回 "This username is already taken"。如果没有该提示,则意味着 该名称可用。 MAS endpoint 是从 `/_matrix/client/v1/auth_metadata` 读取的,因此同样的 方法也适用于其他委托给 MAS 实例的 homeserver。 ## 安装 ``` git clone https://github.com/Miro-sh/matrix-checker.git cd matrix-checker pip install -r requirements.txt ``` ## 使用方法 ``` # 检查列表,每行一个用户名 python3 matrix_scan.py -i wordlists/pokemon.txt # 提高并发并保存空闲名称 python3 matrix_scan.py -i input.txt -c 4 -o available.txt # 指向另一个使用 MAS 的 homeserver python3 matrix_scan.py -s https://example.org -i input.txt ``` ### 选项 | Flag | 默认值 | 描述 | |------|---------|-------------| | `-i, --input` | `input.txt` | 输入文件,每行一个用户名 | | `-s, --homeserver` | `https://matrix.org` | Homeserver 基础 URL | | `-c, --concurrency` | `3` | 并行请求数 | | `-t, --timeout` | `20` | 每个请求的超时时间(秒) | | `-o, --available-out` | `available.txt` | 写入可用用户名的文件路径 | 空行和以 `#` 开头的行将被跳过,重复项会被移除,并且在检查前 `@user:matrix.org` 会被简化为 `user`。 ## 示例输出 ``` [*] MAS register endpoint : https://account.matrix.org/register/password [*] 7 pseudos a verifier | concurrence 2 [+] zzq9x7k2vplm4random FREE [-] ghost TAKEN [-] cipher TAKEN [-] void TAKEN [+] qwlkjzxcv8827aa FREE [*] Termine en 0.3s Libres : 2 Pris : 5 Invalides : 0 Erreurs : 0 ``` 每行的前缀含义如下:`+` 表示可用,`-` 表示已被占用,`x` 表示无效的 localpart,`!` 表示出现错误。 ## 词表 `wordlists/` 文件夹中有一些按主题分类的列表,你可以将其作为输入使用。 | 文件 | 主题 | |------|-------| | `attacks.txt` | Web 和网络攻击技术 | | `bugbounty.txt` | Bug bounty 工具和术语 | | `pokemon.txt` | 法语 Pokémon 名称 | | `pays.txt` | 法语国家名称 | | `nouns_en.txt` | 常见英语名词 | | `nouns_fr.txt` | 常见法语名词 | 如果你愿意,可以先将它们合并到一个文件中: ``` cat wordlists/*.txt > input.txt python3 matrix_scan.py -i input.txt -o available.txt ``` ## 注意事项与限制 请保持较低的并发度,大约在 3 到 5 之间。MAS 会对突发请求进行 rate-limits,扫描器在遇到 `429` 错误时会自动退避并重试。仅查询符合 Matrix 语法 `[a-z0-9._=/+-]` 的小写 localpart;其他任何内容都会被标记为 `INVALID`。由于注册尝试是故意设置为无效的,因此不会在服务器端写入任何内容。 ## 免责声明 请仅使用此工具检查你自己想要注册的名称,并遵守 matrix.org 的服务条款。 ## 许可证 MIT。详见 [LICENSE](LICENSE)。
标签:Matrix, Python, 无后门, 用户名枚举, 系统独立性, 逆向工具