非常的好用!!
| Type | 1 | 2 | 4 | 5 | 6 | 27 |
|---|---|---|---|---|---|---|
| 含义 | 免费 | 付费 | VIP | SVIP | 活动 | 节日 |
全部类型爆破和解密成功
---
活动表情
下面是Claude写的
商城表情的资源通过公开 CDN(i.gtimg.cn / gxh.vip.qq.com)匿名下发,无需登录:
| 资源 | URL 模板 | 内容 |
|---|---|---|
| 表情包元数据 | /club/item/parcel/{id%10}/{id}_android.json |
名称、updateTime、每个表情的 hash(md5) |
| 明文缩略图 | /club/item/parcel/item/{hash[:2]}/{hash}/{H}x{W}.png |
静态 PNG(动图仅首帧) |
| 加密动图 | /club/item/parcel/item/{hash[:2]}/{hash}/{H}_{W} |
TEA 加密流(把 .png 的 {H}x{W}.png 改成 {H}_{W}) |
关键:加密动图流对所有人公开可下载,付费门禁只体现在「能否拿到解密密钥」,而不是「能否下载文件」。这也符合产品逻辑——表情发出去必须让没买的人也看得见。
密钥完全由**表情资源的生成时间戳(秒级)**派生,与账号无关:
key = md5( str(秒级时间戳) ).hexdigest()[:16] # 取十六进制摘要前 16 个字符 = 16 字节 ASCII
时间戳来源有两条:
xydata.json的timestamp字段(毫秒)÷1000 —— 免费/VIP 包直接可得;付费包该接口常返回 302,拿不到。- 拿不到时 → 爆破:秒级时间戳熵极低(2013–至今约 4×10⁸ 个),配合已知明文
GIF89a头,多核瞬间可枚举出来。
不是标准 CBC,而是腾讯特有的交织链式 TEA(16 轮,大端序)。典型错误症状是「首块解出 GIF89、后续全乱」——那就是把这套链当成标准 CBC 解了。
逐块解密(Dec 为 TEA 单块解密):
明文_i = Dec( 密文_i XOR 上一块TEA中间值 ) XOR 上一块密文
解密后还需处理头尾:
- 头部:
1 字节控制位 + (控制位 & 0x07) 字节填充 + 2 字节 salt,跳过即可。 - 尾部:截到最后一个 GIF trailer
0x3B,去掉块对齐的填充零。
真实种子时间戳(资源生成时刻)与 android.json 里的 updateTime(上架时刻)非常接近(实测偏移 11 秒 ~ 4 天)。因此采用两级搜索:
- 快速通道:在
updateTime ± 14 天(约 240 万候选)内并行搜索 → ~20ms 命中。 - 全量回退:窗口未命中时退回
2013 → now全范围(约 4 亿候选)→ 秒级兜底。
单块 known-plaintext 验证器(fast_test_key)只解前两块、零堆分配,配合 Rayon 多核,实测:
| 表情包 | 类型 | 耗时 |
|---|---|---|
| 11340 祝福鸟 | VIP | 24.7 ms |
| 247623 天使小泪 | 付费(¥6) | 21.2 ms |