资讯动态

手机号反查QQ号实战记录:从跑通代码到读懂TEA加密协议

发布时间:2026/8/18 10:37:34 来源:尧图企业网站定制
手机号反查QQ号实战记录从跑通代码到读懂TEA加密协议【免费下载链接】phone2qq项目地址: https://gitcode.com/gh_mirrors/ph/phone2qqphone2qq 是一个用 Python 3 编写的小工具它的核心功能只有一项通过手机号反查该号码绑定的 QQ 号。整个仓库只有主程序 qq.py 和加密模块 tea.py 两个文件既是能直接跑的命令行工具也是了解网络协议与加密算法的一份不错教材。这篇文章不按说明书的套路来而是完整复盘一次实战从把代码跑起来到拆开看每一步再到批量玩法和使用边界一次讲透。 一个真实场景QQ号丢了手头只剩手机号换新手机、重装系统或者干脆多年没登录找回 QQ 号最尴尬的不是密码而是我到底有几个号。很多人只记得注册用的手机号官方找回流程要走短信验证、好友辅助一长串步骤。phone2qq 提供了一条更直接的路径只要这个账号开启了手机号登录就能拿手机号去和服务器对话把藏在响应里的 QQ 号挖出来。它本质上模拟了一次手机号登录过程只不过我们关心的不是登录结果而是登录协议里附带返回的号码字段。️ 上手第一步把工具跑起来动手之前先交代环境需要 Python 33.5 及以上都行项目不依赖任何第三方库只用标准库连 pip install 都省了。1. 确认 Python 版本python3 --version2. 克隆仓库并进入目录git clone https://gitcode.com/gh_mirrors/ph/phone2qq cd phone2qq3. 直接运行看看默认输出python3 qq.pyqq.py 的主入口里写死了一个测试号码10000000000运行后屏幕会打印一个结果能解析出 QQ 号就输出号码否则输出False。第一次跑不出东西很正常别急着怀疑环境——这个默认号码本来就是占位用的。4. 换成真实手机号想查自己的号打开 qq.py把__init__里的self.num 10000000000改成目标手机号或者更优雅一点直接调用入口方法login QQLogin() print(login.getQQ(13800000000))getQQ(phone)会把号码塞进对象再触发整条查询链路这是推荐的调用方式改号不用动源码。 拆开 qq.py手机号是怎么一步步变成 QQ 号的工具的执行链路比我预想的要长完整走一遍需要两次与服务器的加密交互getQQ(phone)入口方法接收 11 位手机号触发登录流程login0825()第一段握手。用写死的 key0825 密钥把手机号等数据 TEA 加密通过 UDP 包发给腾讯服务器收包解密后取出三个关键凭证——token0825、serverTime服务器时间和 serverIPlogin0826()第二段交换。拿着上一轮的三件套加上密码摘要、设备信息再拼一个数据包加密发出去这次服务器返回的密文里就藏着 QQ 号号码解析把返回的十六进制数据中固定偏移的一段转成十进制就是最终结果。最值得看的其实是最后的解析片段if recvData[:2] 06: qq str(int(recvData[6:14], 16))recvData是解密后的十六进制字符串[6:14]这一小段就是 QQ 号的十六进制表示int(..., 16)再转回字符串号码就到手了。协议里还留了一个fc分支处理另一种返回格式兜底返回False。另外注意一个细节login0826 里密码字段是写死的md5(123456)。说明作者当年只是把协议字段填满让包能发出去真正关心的从来不是登录成功而是响应里顺带返回的号码字段。 藏在 tea.py 里的 TEA 加密为什么手机号不能裸奔两次通信的数据包都不是明文全靠 tea.py 撑腰。TEATiny Encryption Algorithm是一种轻量级分组加密算法128 位密钥、64 位分组靠一个魔法常数0x9e3779b9由黄金分割比衍生做 16 轮迭代混淆。它速度快、实现简单非常适合资源受限的场景——腾讯当年的早期协议就用了它。tea.py 对外暴露两个函数encrypt负责加密decrypt负责解密。加密时会先做特殊补位0xf8标记头再用类似 CBC 的链式结构逐块混淆解密则反着来剥掉补位和尾部\0填充后还原原文。核心的轮函数长这样for i in range(n): s.value delta y.value (z.value 4) k[0] ^ z.value s.value ^ (z.value 5) k[1] z.value (y.value 4) k[2] ^ y.value s.value ^ (y.value 5) k[3]手机号、时间戳、token 这些敏感信息在链路上全部以密文形式传输即使数据包被截获没有密钥也解不出内容。这也是这套查询流程里隐私保护的底气所在。 进阶玩法把注释里的批量查询改成真功能qq.py 底部其实留了一段被注释掉的批量测试代码作者当年就是靠它扫号段验证接口的for i in range(10000): num 1360106%04d % i qq login.getQQ(num) if qq: print(%s %s % (num, qq))想玩批量把外层注释去掉、调整号段即可。但这里必须多说一句批量扫描号码段属于典型的越权行为无论是道德还是法律层面都站不住脚。它作为理解循环调用接口的示例看看就好真要用请严格限定在你自己名下、或明确获得授权的号码清单范围内。⚠️ 使用边界这个工具到底能查什么动手之前有几个客观限制要先讲清楚免得白忙一场仅限开启手机号登录的账号这是 README 里写得明明白白的前提没开这个功能的账号查不出来方法可能已经失效仓库 README 标注了 2016.04.14 的提醒说该方法可能已失效。腾讯的协议一直在变这类逆向工具某天突然不好使是常态跑不出结果优先怀疑接口变动密码是写死的工具用固定密码摘要填充协议它从来不是个正经的登录器而是一个号码提取器。合规提醒手机号反查 QQ 号涉及他人隐私使用边界只有一条只查自己、或经过明确授权的号码。不要拿它去查询、扫描任何他人的手机号更不要用于商业牟利。请遵守当地网络安全和个人信息保护相关法律法规用完及时清理查询记录。工具本身是学习协议与加密的好样本但能力越大越要管住手。 常见问题速查运行后返回 False优先确认手机号是否开启手机号登录再排查服务器是否还响应提示 ImportError检查是不是用了python3而不是pythonWindows 下旧版本容易踩坑并确认 qq.py 和 tea.py 在同一目录程序卡住没输出工具走的是 UDP 直连服务器默认183.60.56.100:8000网络不通或服务器变更都会导致收不到响应报错说不支持 bytes.fromhex说明 Python 版本过旧升级到 3.5 以上。如果你只是想找回自己的 QQ 号这个工具可以一试如果你是想借它理解客户端协议 加密通信这套组合拳那这份代码反而是更值钱的收获。【免费下载链接】phone2qq项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价