开头:
本系列仅仅是本人开始学习逆向练手项目,记录一下自己的逆向之路。
逆向过程分析:
我们进入到某网站的登陆页面,
首先我们输入一些错误的登陆数据,打开开发者工具进行接口抓包
通过观察,我们可以看到只有参数pwd进行了加密,
那么我们就全局搜索一下pwd,看看有没有什么发现。
通过查找,发现了一处可疑的地方,并打上断点,
再重新click 登陆请求
果不其然!断点停住了
我们输出的密码为12345
可见传入m的参数就是为我们的密码的截取前16位,
现在我们来继续跟进一下m函数。
虽然是一大坨看不懂的东西,但是我们知道这个return返回的东西就是 加密过的pwd,
并且传入的参数 t 和 n 都是 null
因此我们可以先改写一下函数,得到一个return pwd的函数
并尝试将上面看起来相关的一部分js代码 拷贝到调试工具中
并调用getPwd("123456")方法,
惊喜的得到了结果!
并且经过多次运行,发现返回的结果的值都是相同的,
因此考虑到有可能是md5算法加密的,
md5算法加密后产生是固定长度的 (一般为16或32位)数据,
至此,我们完成了数据的解密。
import execjs
# 1、实例化一个node对象
node = execjs.get()
# 2、js源文件源文件编译
ctx = node.compile(open('wechat.js', encoding='utf-8').read())
# 3、执行js代码
pwd = ctx.eval('getPwd("123456")')
print(pwd)
运行结果:
e10adc3949ba59abbe56e057f20f883e
后续将相应固定数据进行补全,再发送post请求。
声明:本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!