栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python爬虫从入门到精通:(40)JS逆向

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python爬虫从入门到精通:(40)JS逆向

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

MD5简介

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

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


分析js源码

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

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

很容易知道这个是md5。

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

1.源码里搜索参数pwd

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

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

2.js文件里定位搜索pwd

文件内容搜索直接ctrl+f

搜索后我们看到有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知识!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348213.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号