← 资料库索引 ← 个人博客 原始链接 ↗ 🔍
个人博客

快手设备 did/egid 注册流程

发表时间:(页面未标注)采集时间:2026-10-09 11:53:22来源:www.lxspider.com原文语言:zh状态:完整

内容概要总结

爬虫逆向知识站(lxspider)的一页逆向笔记,梳理快手设备标识 did/egid 的完整注册流程。流程分步:第一步 POST .../rest/infra/gdfp/report/android 上报加密 deviceInfo,服务器返回 egid;第二步 POST .../rest/n/log/client/collect 上报多个日志事件;后续再走 .../antispam/sdk、.../antispam/pluginManage、.../antispam/dataReport,全部返回 result:1 才算注册成功。关键细节:did 为 ANDROID_ 前缀加 16 位 hex,客户端随机生成(即 deviceInfo 的 #66 字段);egid 为 64 字节 hex,由服务器第一步返回(形如 DFP51921CA87...);判定 did/egid 有效的方法是用业务接口(如 /rest/antman/feed/profile2)能否拉到数据。deviceInfo 生成链路为 80+ 字段 → Protobuf 序列化 → AES-128-CBC(PKCS7)→ Base64 → URL 编码,AES 密钥 MLjDCGseHHsIDsmd、IV ziwNnWVzvLfncRLJ;sign = Base64(SHA1(deviceInfo 密文含 CRLF 换行 + SALT))。ulog 日志链路为 Protobuf → GZIP → AES-128-CBC。antispam 请求则 sign = MD5(appkey+secretkey+timestamp),body 经 GBK JSON → GZIP → RC4(固定 S 盒、无 KSA)→ AES-128-CBC → Base64 包装。

原文内容(原文即中文)

⚠ 说明:⚠ 逆向分析来源,仅作资料存档,其结论未经官方确认;文中字段名/算法为实现细节,可能随版本变化。

Lx

完整注册流程
┌─────────────────────────────────────────────────────────────┐
│ 第一步 POST .../rest/infra/gdfp/report/android│
│ 上报加密 deviceInfo → 服务器返回 egid │
├─────────────────────────────────────────────────────────────┤
│ 第二步 POST .../rest/n/log/client/collect │
│ 上报多个日志事件(protobuf+gzip+AES) │
├─────────────────────────────────────────────────────────────┤
│ 后续 │
│ POST .../antispam/sdk │
│ POST .../antispam/pluginManage (多次) │
│ POST .../antispam/dataReport (多个事件) │
│ ↑ 请求全部返回 result:1 才算注册成功 │
└─────────────────────────────────────────────────────────────┘

  • did:ANDROID_ + 16位hex(客户端随机生成,即 deviceInfo 的 #66 字段)
  • egid:64字节hex,服务器第一步返回(形如 DFP51921CA87...)

有效性判定:did/egid 可用于业务接口(如 /rest/antman/feed/profile2)拉取数据,则注册有效。

gdfp 设备指纹上报

deviceInfo 生成链路

80+设备参数字段
 → Protobuf序列化
 → AES-128-CBC 加密 (PKCS7填充)
 → Base64 编码
 → URL编码 
 → deviceInfo 参数

AES参数:
Key: MLjDCGseHHsIDsmd
IV: ziwNnWVzvLfncRLJ
模式:CBC + PKCS7

sign 算法

sign = Base64( SHA1( deviceInfo密文(含CRLF换行) + SALT ) )

关键:SHA1 的输入是带 CRLF 换行的 Base64 密文原文,而非二进制密文。输出为 20 字节 SHA1 摘要再 Base64(28字符)。

ulog 日志上报

  • bodyMd5 = MD5(加密后的body二进制)

body 加密链路

日志事件 → Protobuf序列化
 → GZIP 压缩
 → AES-128-CBC 加密 (PKCS7)
file
file
  • 1 = ANDROID_{did}@{egid} ← 必须带 @egid 后缀,缺失会返回 result:11
  • 4/12 = ANDROID_MIGU_WS_XXL_CPC,6 ← 必须与URL的oc参数一致,不一致返回 result:11
  • 14 = robust_id JSON(随机32hex)

antispam 风控请求

常量

secretkey :固定
appkey : 固定
sign : MD5(appkey + secretkey + timestamp)

body 加密链路

JSON 明文 (GBK编码)
 → GZIP 压缩
 → RC4 流加密 ( 固定S盒, 无KSA)
 → AES-128-CBC 加密 + PKCS7 (ksriskctlbusinss)
 → Base64 编码
 → {"data": "..."}包装
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可

发表回复 取消回复

放大预览