复现 MineApi.getKohProfile() 响应解密流程 —
Base64 → XXTEA → [GZIP] → Protobuf
解密后的字节为 Protobuf 编码的 GetKohProfileRsp 消息。
由于缺少 .proto 定义文件,此处提供通用的 Protobuf 字段解析。
OkHttp 拦截器,检测响应头 campencrypt=true:
• 从 AccountManager 获取当前用户 userId
• 从 NetSecurityService 获取 userKey
• Base64.decode(bytes, 0) → 解码
• XXTEA.decrypt(decoded, userKey) → 解密
Corrected Block TEA,32位整数块操作:
• Delta 常量: 0x9E3779B9
• 轮数: q = 6 + 52 / (n+1)
• 密钥不足4个int自动补零
• 小端序字节转换
• 末位int存储原始字节长度
检测响应头 GH-gzip=true:
• 使用 GZIPInputStream 解压
• 1024字节缓冲区逐块读取
Protobuf 反序列化:
• 反射获取 GetKohProfileRsp.parser()
• parser.parseFrom(inputStream, registry)
• 输出 Profile.GetKohProfileRsp 对象