网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

python爬虫之某站JS加密逆向分析

时间:2023-05-05 15:40

人气:

作者:admin

标签: python 

导读:实现的目标:可以通过JS加密逆向后,得到加密参数,请求获取数据。此方法同样适用于被前端JS加密的用户名、密码爆破。...

实现的目标:可以通过JS加密逆向后,得到加密参数,请求获取数据。此方法同样适用于被前端JS加密的用户名、密码爆破。

JS加密逆向分析

首先,分析获取数据的API。抓包,发现是:

998db564-eb16-11ed-90ce-dac502259ad0.png  

这个网站不存在分页,是鼠标下滑动态加载数据的,所以利用selenium爬虫效率低,效果也不是很好。

当然如果是菜鸟,最好还是利用这种方式。

先爬一下看看,发现返回的数据是加密的,先不管他。

999e98e8-eb16-11ed-90ce-dac502259ad0.png

我们分析请求参数,发现是两个加密的请求参数,分别是payload和sig。

如果把这两个参数去掉,或者这两个参数是错误的,则request无法返回正确的数据。

99bc401e-eb16-11ed-90ce-dac502259ad0.png

所以,需要对这两个进行JS逆向,还原加密算法

经过调试发现规律如下(至于怎么找断点,怎么找到实现加密算法的位置,本篇不做介绍)。

找到了sig的地方,下断点:

99e5f300-eb16-11ed-90ce-dac502259ad0.png

调试截图如下(只截图了payload的方法):

Payload加密分析:

首先是payload加密,payload加密前:

{sort: 1, start: 40, limit: 20}

需要“翻页”动态加载数据,只要需要更改start即可,这个表示是开始条数,limit表示一次加载20条,比如60、80、100、120等等。

99f29dbc-eb16-11ed-90ce-dac502259ad0.png

第1次进入e2(e) ,进去前e还是明文的payload,进去了_u_e(e) 返回t '{"sort":1,"start":40,"limit":20}' 值没变。

9a02daa6-eb16-11ed-90ce-dac502259ad0.png9a0f2d92-eb16-11ed-90ce-dac502259ad0.png

接着返回e2(e)继续执行for循环,返回的值如下。这个时候,payload被加密了,但是还不是返回的值,继续下一步调试。

",x177WB:d`ym{1L$'=x10nx02x04x15p8[ '&olwx022"
9a1ba3e2-eb16-11ed-90ce-dac502259ad0.png  

接着到了第一次进入e1(e) 中,这个时候e就是加密后的payload传进去。返回u,就是加密的payload了。

LBc3V0I6ZGB5bXsxTCQnPRBuBwYJfnZeJCM7OXR/AH8q
9a3381c4-eb16-11ed-90ce-dac502259ad0.png  

这个是只要payload不变,加密值就不变,还是相对比较简单的。

sign加密分析

sign的值是把加密后的payload值加上常量_P拼接后,作为参数,传到sig(e)中去,payload+_P如下:

LBc3V0I6ZGB5bXsxTCQnPRBuBwYJfnZeJCM7OXR/AH8qW5D80NFZHAYB8EUI2T649RT2MNRMVE2O

这里的e就是加密后的payload,而sign调用的方法是md5(e + _p).toUpperCase(),结果是:

1268D4D682CF9D0C6C3CB4D6E4C3C87F

new t(!0).update(n)[e]() 是payload + -p这个常量:t.prototype.update = function(e) 实际就是这个函数

他又调用了hex函数 finshed函数 调用了 hash函数

LBc3V0I6ZGB5bXsxTCQnPRBuBwYJfnZeJCM7OXR/AH8qW5D80NFZHAYB8EUI2T649RT2MNRMVE2O

跟踪分析发现,就是一个普通的md5加密函数,然后转换成大写。这个就可以不用JS实现,直接python实现MD5加密。

使用Python去实现以上两个参数的加密,修改原来的python脚本如下:

9a3a9dec-eb16-11ed-90ce-dac502259ad0.png9a59de8c-eb16-11ed-90ce-dac502259ad0.png

再次请求:

9a608d54-eb16-11ed-90ce-dac502259ad0.png

发现返回的值是d,也是加密的,可以使用拦截技术,获取到JS解密函数,解密d得到明文。





审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信