js分析
通过抓包可以看到接口的参数有这一堆, 已知d是加密的参数, c是uuid, w是缺口x, e和s是接口返回的, 其余参数可固定
打断点基本可以找出来加密位置是h.getCoordinate方法加密, 而g参数是格式为[['x', 'y', timestamp], ['x', 'y', timestamp]]的轨迹, 而轨迹的xy轴并非是通过图片的长宽开始计算, 而是从滑块的整个div的长宽来计算
[Python] - [["34", "177", 1654765743366], ["72", "202", 1654765743366], ["73", "202", 1654765743429], ["77", "202", 1654765743432]]
复制代码
跟进去后发现, 轨迹的加密只用到了4个函数, 其中有一个方法(string10to64)是除k取余法
代码扣下来, 改一下调用的方式,运行起来异常的顺畅, 用扣下来的代码加密后的值替换也校验成功
算法还原
对于算法还原不提供源码, 只提供思路和踩坑点
string10to64
prefix_integer
主要是生成一个列表并多个值为空, 然后'0'.join()再对字符串进行切片
pretreatment
get_coordinate
这个没啥好注意的, 只要不要传空列表就行, 不然join会报错
最后感谢@漁滒 指导 |