【js逆向】md5加密参数破解

MD5

md5:消息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值。该加密算法不可逆,通过暴力穷举法破解,以及网站接口实现解密。
js逆向中,可以通过搜索MD5关键字查找加密位置。

md5的js加密方法:

const CryptoJs = require ('crypto-js');  //导入加密库
let password = 'philosophy'; //加密字符串
let enPwd = CryptoJs.MD5(password).toString();
console.log(enPwd);  //输出结果

python实现MD5加密:

方法一:

import hashlib
str = 'philosophy'  #加密字符串
m = hashlib.md5()
m.update(str.encode('utf-8'))
print(m.hexdigest())

方法二:

from lxpy.encrypt import md5  #第三方库需要安装
print(md5.get_md5(str))

输出结果都为:

225ab6cdf797eae79495ff584a46dfd2

逆向案例

进入登录窗口,打开开发者工具,输入账号密码,点击登录进行抓包:
网站地址:https://www.zhaoxi.net/
【js逆向】md5加密参数破解_第1张图片

在开发者工具中Network面板可以看到登录提交的数据有三个,前两个参数是固定,参数txtpassword明显通过加密生成,如图所示:
【js逆向】md5加密参数破解_第2张图片
通过全局搜索参数名可以看到有多个结果,使用Initiator快速查看堆栈调用,进入send调用中设置断点,重新触发登录请求:
【js逆向】md5加密参数破解_第3张图片
【js逆向】md5加密参数破解_第4张图片
重新登录触发断点后,进行回溯堆栈调用,点击右侧Call Stack(调用堆栈),逐个点击查看,可以发现CheckForm里的Ajax请求前有个#txtpassword ,可以看出hex_md5明显是个加密函数,在控制台console中输入它,双击方法进入查看:
【js逆向】md5加密参数破解_第5张图片
【js逆向】md5加密参数破解_第6张图片
可以确认为md5加密,通过python实现加密,可以发现加密结果和提交的参数值一致。

你可能感兴趣的:(python,爬虫,javascript,前端,开发语言)