写一篇实战的逆向文章 只提供逆向思路不提供源码
只可用于学习研究 禁止商用
目标网站
https://ec.minmetals.com.cn/open/home/purchase-info/
请求分析
点击翻页按钮 观察请求 发现请求都是成对出现的
首先访问了 open/homepage/public接口 返回了一个字符串
第二次访问了 /open/homepage/zbs/by-lx-page 接口 得到了明文
请求成对出现 /public接口和by-lx-page接口
第一次请求(public接口 )返回了一个字符串
第二次返回了明文
by-lx-page接口分析
观察数据包 发现在请求体中有一个param参数
解决了这个param这个网站就搞定了
逆向参数
首先打上xhr断点 跟堆栈 最后确定 d函数就是加密函数的入口
n 为明文 但是执行e.call(t, n)之后 就是我们需要的param参数
然后单步执行进入到函数内部查看加密逻辑
这个就是加密函数 其中 A.prev = A.next 恒等于4 所有直接走case4
return n = A.sent,
r = n.data,
t.setPublicKey(r),
a = b(b({}, e), {}, {
sign: f()(JSON.stringify(e)),
timeStamp: +new Date
}),
s = t.encryptLong(JSON.stringify(a)),
A.abrupt("return", s);
所以 这一段就是加密函数 在index.js当中
如果没有定位到 直接在index.js 搜索 t.setPublicKey
JS代码
代码这里就不粘了 因为太长了一直粘贴不成功
只需要将函数补完就行了 对象不需要补 只需要补全用到的对象的属性或者方法