
文章目录声明前言一、第一步先别急着脑补二、先打请求,马上遇到第一个坑:`k` 的路径错一位,全盘皆输2.1 错误的直觉2.2 正确的签名路径三、真正的破案时刻:它不是加密文本,它是二进制 `protobuf`3.1 怎样快速判断不是 AES 密文3.2 前端关键证据证据一:接口响应被当成 `arraybuffer`证据二:响应被 `protobuf` 模型解码四、前端不是只告诉你“它是 Protobuf”,还告诉你“数据怎么还原成业务值”五、手撕这个 Protobuf:不用 `.proto`,照样把结构摸出来5.1 顶层结构5.2 `data` 层结构5.3 单条 item 结构5.4 为什么 `stats_raw` 和 `avg_stats_raw` 是 packed varints六、这次逆向最重要的心法:先最小可用,不要一上来建帝国七、纯 Python 落地方案长什么样7.1 `k` 参数生成7.2 响应解析7.3 业务字段转换7.4 时钟偏移容错参考python代码八、现场样本:解出来的数据长什么样8.1 主应用某月数据8.2 对比应用某月数据九、结语声明本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除!前言这次需求是有人找我做的,没想到我新的账号还没权限看,开会员还要好几千一个月,那还是拉倒吧,直接给大哥说分析不了,没权限,大哥二话不说直接找公司商务要了个会员号给我分析,所以才有的这篇文章。这次目标很明确:页面主页:https://app.diandian.com/app/q4kdipukpzo9twn/googleplay-perstarts?...目标接口:https://api.diandian.com/pc/app/v2/stat/frequency/avg/month最终诉求:把“响应体数据解密”完整还原已知条件:请求里的k参数我们已经逆出来了,算法过程可以看 点点数据 k参数逆向实战:别怕,它不是