1. 环境使用
使用手机连接电脑 adb控制手机
打开cmd 输入 adb devices
查看下面是否有设备
edge浏览器打开 edge://inspect/#devices
chrome浏览器打开 chrome://inspect/#devices
在手机中打开小程序网页等待一会,就会出现页面信息
先刷新一下网页 重新获取全部的文件
2.请求解析
接口:
activity/function/task/get
xmsign
加密数据
noncestr
加密数据
xmtimestamp
13位时间戳
3.代码分析
xmSign参数
按住 ctrl+shift+p
打开搜索
搜索 xmsign
信息发现有5条数据 全部打上断点 刷新页面
在打断点的时候 前面两个打不上 只有最后可以 那我们先测试一下最后的能不能断下来
成功断下
看到了一个md5 大概率就是md5 先把这些参数拿出来 测试一下 是原本的md5 那开始看这些参数哪来的
这个只是把r里面的数组都拼接起来 继续向上找 看看 nonceStr
在哪里生成的
看到这里 发现是从m获取到的 继续向上找
x = x && JSON.stringify(x).length > 2 && Object.keys(x).length ? Object.assign(x, m) : m,
r = g(x)
找到生成的了 nonceStr
就是 v
函数生成的了 打上断点跟进去看看
看到 Math.random() 通过一些位运算改变了一些什么 大概率就是随机生成的了 32位
现在捋一下思路
通过m获取到 nonceStr
和xmTimestamp
把这两个拼接起来在把上面拼接的内容加上 p.default.enc.Base64.parse("dWgzJEhnJl5ISzg3NiVnYnhWRzdmJCVwPTBNfj5zMXg=").toString(p.default.enc.Utf8)
的盐进行md5生成
m到q就是拼接的然后加上盐 进行md5加密
tokenSign
接口: xm/token/getUserToken
比上面多了一个参数 tokenSign
继续先来一个搜索大法 下面这个文件跟上面xmSign是一起的 直接看这个
可以直接看到用的是md5加密 n
参数就在上面生成的
直接把吧断点打上
r.default.getUrlParameter("li")
这个看方法名就是用url中获取一个数据 ,重复请求了一下发现是固定的参数 猜测一下可能是对应的当前活动页面的id
这三步就是跟上面xmSign的加密方式相同了
变化了
p.default.enc.Base64.parse("
SjdoOCZeQmdzNSNibio3aG4lIT1raDMwOCpidjIhc14=").toString(p.default.enc.Utf8)
J7h8&^Bgs5#bn*7hn%!=kh308*bv2!s^
跟上面差不多的加密就可能多了一个活动id
可以看到从接口出去的tokenSign是跟上面一样的
py实现了没有任何问题