Python与JS逆向工程实践案例解析——以企查cha为例

我们废话不多说直接开始

1.根据我们需要的数据找到数据接口

通过关键词直接查找我们想要的数据

这里我们以小米为例

2.分析加密参数-观察请求头

不用说 第一个参数肯定是加密的,而且是键和值同时加密 

           cookie中一时半会看不出来 到时候再说

3.找到参数加密位置

但是这种不同页面参数名会变的怎么处理呢?

这里我就介绍两种方法

        1.搜索关键词-headers[

因为是请求头,它最后加密得到的值很有可能会通过字典赋值给headers,即headers[i]=u

        2.hook参数名

这里每一页的参数名是不变的,我们通过重复请求同一页来hook

hook之后再逐步调试即可(经测试过没问题的)

找到加密位置比较简单就不赘述了,最后可知加密参数名为i  加密参数值为u

4.解析参数加密方式

1.加密参数名i的加密方式

1.1>.进入第一个断点观察

发现参数名其实就是通过加密 t(url) 和 n(请求负载)并toLowerCase(变小写)和最后substr(8, 20)取出下标8到20的值 来得到

注:这n后面的 (0,
                o.default)(t) 是常数

感兴趣可以进函数里面看看

charCodeAt() 方法返回字符串中规定索引(下标)处字符的 Unicode编码。所以肯定是定值

1.2>.我们接着进入a.default函数中观察

发现还是调用其他函数 我们重复此操作继续跟一次

发现加密方式为HMAC 这里我们就可以通过node.js自己实现了

这里的adefault是自己在node.js中实现的算法

如下

注:这里为什么是sha512加密呢? 我们可以观察加密值的长度 发现是128为所以可以大概判断为sha512加密方式

最终效果图如下

2.加密参数值u的加密方式

2.1>.观察参数

这里多了个s.default)() 进入后观察

可知该值为常数

2.2>.同理进入第二个断点观察

:这n后面的 (0,
                o.default)(t) 是常数 说明跟上一次一样

2.3>.继续跟进第一个断点

2.4>.继续跟进a.default

发现加密方式和上一次i是一样的

2.5>.有了上一次经验 这次就很简单了 来通过node.js实现

效果图如下

注:这里需要注意函数的调用过程和参数的传递千万不能错

4.实现python调用

python就通过execjs来实现js文件调用即可 细节就不展示了

效果展示如下

代码用途
本代码仅供学习、研究和交流使用,禁止用于任何商业用途或非法用途。使用者应对其行为负责,作者不对代码的滥用或不当使用承担任何责任。

作者:努力的。。。

物联沃分享整理
物联沃-IOTWORD物联网 » Python与JS逆向工程实践案例解析——以企查cha为例

发表回复