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

本文主要是介绍Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

MD5简介

MD5算法一般指MD5MD5信息摘要算法(英语: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知识!
在这里插入图片描述

这篇关于Python爬虫从入门到精通:(40)JS逆向_MD5算法,微信公众平台js算法改写_Python涛哥的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817386

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis