【软件逆向-[原创]拼夕夕小程序rfp算法分析】此文章归类为:软件逆向。
对某夕夕微信小程序抓包发现head头总会带上一个rfp参数,猜测应该属于指纹信息加密后的签名,用于甄别小程序环境,对行为做出风控。研究发现rfp参数由服务器返回。
POST https://xg.pinduoduo.com/xg/pfb/wxapp HTTP/1.1
Host: xg.pinduoduo.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b13)XWEB/11065
Content-Type: application/json
Referer: https://servicewechat.com/wx32540bd863b27570/1652/page-frame.html
{"data":"0aeJy9Vdtu20YQRarCNYAI3SVPox1EUX9vzf5P1NxvvFqk","timestamp":"1720704568787","appKey":"fe","sign":"1f3be6a75638c91cd2602a3df79d39438ad552d0"}
其中参数sign提交到服务器验证的签名,算法为sha1加盐加密算法,加密算法为:salt+timestamp+data,其中盐salt为字符串:feDSL。提交到服务器通过验证会返回rfp值,返回内容中的参数a就是rfp。
其中参数"data":"0aeJy9Vdtu20YQRarCNY****AI3SVPox1EUX9vzf5P1NxvvFqk"由小程序源码中的lightMiniApp.js生成,定位data参数怎么生成的搜索关键词"0a",这个是固定值,搜索很容易就定位到生成data的算法关键位置:
"0a" + i.default.base64(r.default.deflate(ft)
深入研究发现里面是由各种小程序相关环境参数加密生成,如果这些参数缺少,即使生成了data也不会通过服务器验证,无法获取到rfp。如何获取这些相关参数?那就要将小程序反编译出来,用微信官方微信开发者工具进行本地调试,在关键位置下断,将这些参数打印出来,赋值到加密函数里面。微信小程序本地调试和浏览器调试js代码有些区别,小程序调试是在想下断的位置插入代码:debugger;
下面是我自己调试获取到的部分参数,避免侵权只展示部分参数:
只要补好相关参数,生成的参数提交到服务器就能成功获取到rfp
更多【软件逆向-[原创]拼夕夕小程序rfp算法分析】相关视频教程:www.yxfzedu.com