Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥

MD5算法,微信公众平台js算法改写

MD5简介

MD5算法一般指MD5MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

我们这里代码举例:某平台js算法改写!


分析js源码

我们打开网站,输入信息进行抓包。

可以看到,username是正确显示的,而pwd却是一串字母+数字。

很容易知道这个是md5

那么我们怎么获取这个明文呢?

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第1张图片

1.源码里搜索参数pwd

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第2张图片

这里,我不要直接ctrl+f,点图里标记处进行搜索!

搜索后出现了很多内容!首先可以确定.css文件肯定不是,因为加密算法肯定是在js文件里。我们点开第二个看下:

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第3张图片

2.js文件里定位搜索pwd

文件内容搜索直接ctrl+f

搜索后我们看到有20个

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第4张图片

3.使用断点

20个pwd,首先第一个肯定不是。

第二个,在1183行,是一个函数,它好像是的?

既然怀疑是的,那就先点击下行号,打个断点。

类推,20个只要有你怀疑的,都先打上断点、

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第5张图片

都定位好后,我们再来点下登录。发现代码定位到了1883行。

那这个基本就是了。

可以将鼠标放在次函数的源码中,会提示有’123456’的字样。

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第6张图片

4.复制JS代码,使用调试工具

确定好上述函数后,我们点进去!

然后我们在点右上角的第三个位置(进入下一个函数调用)

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第7张图片

然后我们选中return这段代码,就会看到‘123456’加密后的md5

发现是和网站post提交的pwd是一样的。

那就肯定确定是这段js函数了

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第8张图片

我们看到,这里的 n、e、t 等等参数都是未知的,那么我们需要复制大括号以上的所有代码。

粘贴到JS调试工具里,先点击格式化,再点击加载。

我们看到有个错误信息:n未定义

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第9张图片

5.改写js代码

没有n,那么我们就在代码最上面定义一个n:

var n = {
     }

然后我们再点击加载就成功了~

成功后,我们可以把最下面的的这段函数n.exports改为getPwd.

并计算下这个表达式。可以看到计算后的结果是正确的!

Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第10张图片


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爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥_第11张图片

关注Python涛哥!学习更多Python知识!

你可能感兴趣的:(爬虫,python,python,爬虫,javascript)