|
- 2023兔年吉祥,新年快乐。
- 新的一年,新的开始,祝大家"兔"然暴富,"兔"个平安
最近折腾pdd商家的接口,遇到了anti_content,virtual_mobile等算法,都逐一攻破了,多半都是运气跟到的;这次又遇到了个算法,validate_message,这个就比较简单,简单来分享一下我是怎么把算法拿出来调用的。
- 算法定位
抓包时我们可以看到
如图所示的validate_message和validate_message_v2,以为v2是另一个版本的算法,但其实都是一个算法,只是传进去的加密文本不一样而已
直接F12控制台,搜索关键字,就能快速定位到代码
下了断点后
分别看到p和g传进去的参数是
p = goods_commit_id、cat_id、goods_type;
g = goods_commit_id、cat_id、mall_id、id
他们用^符号隔开,我们看到h.a是一个方法,直接跳进去查看代码
下了断点,并且断下来之后,在控制台输入h.a回车,就能看到,双击箭头处,就可以跳到代码位置。
进来之后,这个断点的位置t.a = function(o)就是它的入口,o就是传进去的p或者g变量,返回的结果即是加密结果。
所以用的都是一个算法。
我们直接把75.74f33ab2.chunk.js整个文件代码拿出来,用nodejs调试。 - 复制粘贴
拿到js代码后,nodejs环境必须得装,这里去查阅相关资料就可以了,我们直接运行这份js代码先看看有无报错
提示window不存在,因为window是浏览器才有的对象,所以nodejs里没有,直接定义一个空的window给它,在顶部加上
[JavaScript] 纯文本查看 复制代码 var window={};
再次运行没有发现报错,但是这个时候你肯定疑惑,应该怎么触发执行t.a = function(o)函数,而且这个函数是在1601: function(o, t, e)里面的。 - 调试
这里其实它执行的代码是给window.webpackJsonp_mfns_goods赋值
如果不懂怎么修改的话,我们其实直接访问window.webpackJsonp_mfns_goods变量就好了,如下图所示
我在最底部输出了window.webpackJsonp_mfns_good变量,发现它1601函数是在[[[,1601:function]]]里面,所以调用的方法应该是
window.webpackJsonp_mfns_goods[0][1]
我们再次输出看看结果
这个时候我们就需要调用1601的函数了,因为我们真正需要的算法在这个函数里面。
报错了,前往报错的地方,分析下原因
我们看到,1601需要传递3个参数的,我们调用的时候一个参数没有传递
其次就是我们需要的算法函数,它是给t.a进行赋值,而t正是我们应该传入进去的第2个参数,也没有传。
为了弄清楚这3个参数是什么,我们直接给1601这里下断点,然后**网页,让这个断点触发
(PS:**网页是因为有可能它之前已经执行过1601函数了,你现在去触发算法,这个1601并不会触发调用的,可能断不到)
断点已经触发了,我们看看o,t,e它都传的什么参数,我们直接照搬传就好了。
我们发现t是一个空的{}对象,可以直接新建空的传进去作为第二个参数。
第一个参数是一个空的object,也可以直接复制出来使用
第三个参数它是一个函数,但是仔细看了下代码,它好像并没有用到,也可以传空
最后我们把代码改成如下:
最后就能拿到t.a的函数进行调用了。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|