大神论坛

找回密码
快速注册
查看: 259 | 回复: 0

[思路] 对拼多多微信小程序rfp算法分析

主题

帖子

0

积分

初入江湖

UID
679
积分
0
精华
威望
0 点
违规
大神币
68 枚
注册时间
2023-10-14 10:54
发表于 2024-07-13 20:07
本帖最后由 tocabd 于 2024-07-13 20:07 编辑

对拼多多微信小程序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为字符串:fe
DSL。提交到服务器通过验证会返回rfp值,返回内容中的参数a就是rfp。
其中参数"data":"0aeJy9Vdtu20YQRarCNY****AI3SVPox1EUX9vzf5P1NxvvFqk"由小程序源码中的lightMiniApp.js生成,定位data参数怎么生成的搜索关键词"0a",这个是固定值,搜索很容易就定位到生成data的算法关键位置:
"0a" + i.default.base64(r.default.deflate(ft)
深入研究发现里面是由各种小程序相关环境参数加密生成,如果这些参数缺少,即使生成了data也不会通过服务器验证,无法获取到rfp。如何获取这些相关参数?那就要将小程序反编译出来,用微信官方微信开发者工具进行本地调试,在关键位置下断,将这些参数打印出来,赋值到加密函数里面。微信小程序本地调试和浏览器调试js代码有些区别,小程序调试是在想下断的位置插入代码:debugger;
下面是我自己调试获取到的部分参数,避免侵权只展示部分参数:

只要补好相关参数,生成的参数提交到服务器就能成功获取到rfp


注:若转载请注明大神论坛来源(本贴地址)与作者信息。

返回顶部