MD5简介
MD5算法一般指MD5。MD5消息摘要算法是一种广泛使用的加密散列函数,可以生成128位(16字节)的散列值,以确保完整和一致的信息传输。
这里我们以代码为例:某平台js算法被重写!
分析js源码
我们打开网站,输入信息,拿起包裹。
如您所见,用户名显示正确,而pwd是一串字母数字字符。
很容易知道这是md5。
那么我们如何得到这个清晰的文本呢?
1.源码里搜索参数pwd
在这里,我不想直接ctrl f,直接在图中的标记处搜索!
搜索后有很多内容!首先,你可以确定。css文件肯定不是,因为加密算法肯定在js文件里。让我们点击第二个,看一看:
2.js文件里定位搜索pwd
内容搜索直接控制
搜索后,我们看到有20个。
3.使用断点
20个pwd,首先第一个肯定不是。
第二个,在1183行,是一个函数,看起来是?
如果您有疑问,请单击向下箭头设置断点。
以此类推,只要有20个疑点,先破分。
一旦我们都准备好了,让我们再次点击登录。发现代码位于1883行。
基本上就是这样。
你可以把鼠标放在这个函数的源代码里,系统会提示‘123456’。
4.复制JS代码,使用调试工具
确定以上功能后,我们点击进入!
那么我们就在该点右上角的第三个位置(转到下一个函数调用)。
那样地
后我们选中return这段代码,就会看到‘123456’加密后的md5。
发现是和网站post提交的pwd是一样的。
那就肯定确定是这段js函数了
我们看到,这里的 n、e、t 等等参数都是未知的,那么我们需要复制大括号以上的所有代码。
粘贴到JS调试工具里,先点击格式化,再点击加载。
我们看到有个错误信息:n未定义
5.改写js代码
没有n,那么我们就在代码最上面定义一个n:
var n = {}
然后我们再点击加载就成功了~
成功后,我们可以把最下面的的这段函数n.exports改为getPwd.
并计算下这个表达式。可以看到计算后的结果是正确的!
Python执行js代码
js代码我们有了,我们如何在Python代码里执行呢?
1.环境安装
- nodejs开发环境(自行安装)
- pip install PyExecJs
2.复制刚才的js代码
创建wechat.js文件放在同目录,把刚才复制的js代码写进去
3.Python代码
#!/usr/bin/env python3# -*- coding: utf-8 -*-import execjs# 1.实例化一个node对象node = execjs.get()# 2.js源文件编译ctx = node.compile(open('./wechat.js', encoding='utf-8').read())# 3.执行js函数funcName = 'getPwd("{0}")'.format('123456')pwd = ctx.eval(funcName)print(pwd)
代码执行后,我们就看到了结果~
关注Python涛哥!学习更多Python知识!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50771.html