手机号查QQ号3分钟搞定:phone2qq开源工具完整使用教程
【免费下载链接】phone2qq项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq
忘了QQ号却记得手机号,是不是很抓狂?手机号查QQ号这个需求其实比想象中常见:换了新手机、卸载了QQ、或者只存了号码没存账号。开源项目phone2qq正是为此而生——它用纯 Python 实现,通过手机号逆向查询关联的QQ号,全程命令行操作,代码量极小,几分钟就能跑通。本文就带你完整上手这个小工具,并讲透它的工作原理与使用边界。
为什么你需要一个手机号查QQ号的小工具
日常中这类场景并不少见:
- 换新手机后,只记得绑定用的手机号,QQ号却想不起来
- 想联系老朋友,翻遍通讯录只有号码,QQ号早就不记得了
- 同时管理多个QQ号,绑定关系一团乱麻,需要核对
- 想确认某个手机号是否已经注册过QQ
传统做法要么走官网找回,动辄短信验证、好友辅助验证好几步;要么找客服人工处理,耗时半小时起步。而 phone2qq 的初衷,就是用一段代码把这些过程压缩成一次直接查询——输入手机号,拿到QQ号,仅此而已。
phone2qq 是什么:轻量到只有两个 Python 文件
项目名叫 phone2qq,直译就是"手机号转QQ号"。它针对的是已开启手机号登录的QQ账号,通过模拟QQ登录协议向服务器发起查询。
整个项目精简得令人惊讶:
| 文件 | 作用 |
|---|---|
qq.py | 主程序,负责构造查询请求、与服务器通信、解析结果 |
tea.py | TEA 加密算法的独立实现,提供encrypt/decrypt两个函数 |
核心逻辑集中在QQLogin类里,没有第三方依赖,环境里只要有 Python 3 就能跑。这种"两个文件搞定一件事"的极简风格,正是它最鲜明的特点。
手机号查QQ号的工作原理:一场加密的"两次握手"
想理解 phone2qq 怎么工作,可以先记住两个比喻:
TEA 加密就像保险箱。手机号、密码这些敏感字段不能明文发给服务器,于是先塞进一个用密钥上锁的箱子(tea.encrypt),服务器回包同样是一口加锁的箱子,需要用同一把钥匙打开(tea.decrypt)。tea.py里实现的正是 QQ 通讯用的 TEA 变种算法,16 轮迭代、8 字节分组,轻量但足够混淆数据。
两次登录就像"先报到、再办事"。整个查询要完成两段 UDP 请求:
- 0825 登录(
login0825):把手机号用固定密钥加密后发给服务器,相当于先亮明身份,换回一张"会话令牌"(token0825),同时拿到服务器时间(serverTime)和 IP(serverIP)。 - 0826 登录(
login0826):带上令牌和本地算出的密码摘要再次加密通信,服务器确认无误后,从回包里按偏移量取出 16 进制 QQ 号,转成十进制返回。
整个过程走 UDP 直连、全加密传输,肉眼看到的就是一串串十六进制报文,最终在终端吐出你要的QQ号。
phone2qq 快速上手:三步跑通第一次查询
不需要安装任何依赖,照着这三步走即可。
第一步:获取项目代码
git clone https://gitcode.com/gh_mirrors/ph/phone2qq cd phone2qq第二步:填入要查询的手机号
用编辑器打开qq.py,找到QQLogin类的初始化部分,把默认手机号改成你自己的:
class QQLogin(): def __init__(self): self.num = '10000000000' # 改成你要查询的11位手机号第三步:运行主程序
python3 qq.py程序会调用login.getQQ('10000000000')发起查询,返回一串数字就是关联QQ号,返回False则表示查询不到。当然,你也可以脱离主程序直接写调用:
from qq import QQLogin login = QQLogin() print(login.getQQ('13800138000')) # 传入11位手机号,返回QQ号或False可以自定义的查询参数:认识这几个关键配置
QQLogin初始化时暴露了若干参数,非专业人士建议只改手机号,但了解它们有助于排查问题:
| 参数 | 默认值 | 含义 |
|---|---|---|
num | '10000000000' | 待查询的手机号 |
address | ('183.60.56.100', 8000) | 服务器地址与 UDP 端口 |
fixedData | '0000044b...' | 协议固定填充字段 |
hdKey | '0251ca4a...' | 设备标识密钥 |
token0825/serverTime/serverIP | 空 | 0825 登录后回传的会话信息 |
如果服务器换了 IP,只需要改address一个元组即可,这也是最常见的失效原因之一。
手机号查QQ号的批量玩法:一条 for 循环搞定
查询是逐号进行的,所以天然支持批量。项目源码注释里就留着一段批量测试示例,把注释解开就能用:
# 批量遍历号段,逐个查询 for i in range(10000): num = '1360106%04d' % i # 号段拼接,可自行修改 qq = login.getQQ(num) if qq: print('%s >> %s' % (num, qq)) # 命中才打印把号码段换成你自己的目标范围,就能一次性跑一批手机号。不过要提醒:批量查询只建议用于自己名下或已获授权的号码,无差别扫号属于滥用行为,务必规避。
与传统找回方式对比:phone2qq 的优势与代价
| 维度 | phone2qq | 官方账号找回 |
|---|---|---|
| 操作步骤 | 改号码 → 运行 → 出结果,3步 | 短信验证、好友辅助等多步流程 |
| 耗时 | 秒级到分钟级 | 通常 5 分钟以上 |
| 自动化 | 完全可脚本化、可批量 | 每号都要人工走流程 |
| 依赖条件 | 对方已开启手机号登录 | 需要验证手段可用 |
| 稳定性 | 依赖非官方协议,可能失效 | 官方维护,长期稳定 |
一句话总结:phone2qq 胜在"快"和"自动",代价是它走的是逆向协议,接口一旦变动就会失效(作者在 README 里也注明"方法可能已经失效"),属于应急与学习场景的利器,而非长期依赖的工具。
常见问题FAQ:查询失败、返回False怎么办
查询返回False或程序报错?
- 确认手机号是 11 位纯数字,且该账号已开启"手机号登录"
- 检查网络能否正常访问外网,UDP 8000 端口是否被防火墙拦截
- 若服务器地址已变更,更新
self.address配置
返回的QQ号明显不对?
- 旧账号可能更换过绑定手机,查询结果对应的是当前绑定关系
- 部分回包需要二次解密解析,可对比
login0826中recvData[6:14]与recvData[14:22]两处偏移的解析分支
提示 0825 error?
- 说明第一步登录未获响应,大概率是协议已更新或服务器不可达,此时基本可以判定工具失效,需等待项目更新。
写在最后:合规使用,把工具用在该用的地方
phone2qq 是一个优秀的逆向协议学习样本:TEA 加密实现、UDP 通信、协议报文构造,都是 Python 网络编程的好教材。但请务必守住两条底线:
- 只查自己或已获授权的号码,尊重他人隐私,遵守当地网络安全法规
- 不用于商业爬取或批量扫号,避免触碰法律风险
想立刻体验,git clone https://gitcode.com/gh_mirrors/ph/phone2qq后按本文三步跑一遍即可。跑通之后,建议再读一遍tea.py的加解密实现,看看一个轻量加密算法是如何在 50 行内落地成型的——那才是这个项目最值得学习的地方。
【免费下载链接】phone2qq项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考