Python爬虫从入门到精通:(44)JS逆向:试客联盟的逆向分析_Python涛哥

45 篇文章 18 订阅

我们来看下试客联盟的逆向分析,切换到密码登陆。

在这里插入图片描述


JS代码解析

我们进行抓包。经过分析,我们看到密码可能在这个js里实现

在这里插入图片描述

点进去后,我们发现源码里有一段var key = new RSAKeyPair("10001",'',rsa_n);,那我们就怀疑这个可能就是密码的实现方式。我们打断点验证一下,果然停留在了这里。我们来看下这一部分源码:

在这里插入图片描述

setMaxDigits(131);
            var formData = $("#loginForm").serializeArray();
            var key = new RSAKeyPair("10001",'',rsa_n);
            for (var i = 0; i < formData.length; i++) {
                if (formData[i].name === 'password') {
                    formData[i].value = encryptedString(key, formData[i].value);
                    break;
                }
  • setMaxDigits(131);:不知道是什么,先留着
  • serializeArray():这是一个js函数,其作用是:使用来实现序列化(对登陆页面的表单中的值进行序列化,序列化成一个数组,数组元素就是表单中的数据【用户名和密码】)
  • var key = new RSAKeyPair("10001",'',rsa_n);:说明密码是RSA加密方式key就是公钥,公钥的生成需要用rsa_n,rsa_n是什么鬼目前还不知道。后续对其做处理
  • for循环:如果表单的名字是password,那么进行加密。

我们进入setMaxDigits(131)encryptedString的js函数,发现他俩都在一个barrett.js文件里,我们复制整个文件里的代码放到调试工具里。

然后我们再写一个函数getPwd(),把加密的代码改写并复制进去调试下:

在这里插入图片描述

我们看到,计算后提示rsa_n未定义。

我们可以想到,整个rsa_n肯定在网页源码中,我们来搜下:

在这里插入图片描述

没搜到!那我们就把整个网页刷新下,在搜索下:

在这里插入图片描述

现在我们搜索到了,复制rsa_n的值,来调试计算下:

在这里插入图片描述

这时,我们就获取到了加密后的密码。


Python代码实现

创建shike.js文件,并修改上述js代码复制进去。

在这里插入图片描述

Python代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
import re
import execjs

# 获取rsa_n
url = 'http://login.shikee.com/getkey?v=fb8ccb83550b28b545fe22c68aef5091'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
page_text = requests.get(url=url, headers=headers).text
#正则取出
ex = r'var rsa_n = "(.*?)";'
rsa_n = re.findall(ex, page_text)[0]

# 加密的逆向
node = execjs.get()
pwd = '123456'
file = 'shike.js'
ctx = node.compile(open(file, encoding='utf-8').read())
funcName = 'getPwd("{0}","{1}")'.format(pwd, rsa_n)
password = ctx.eval(funcName)
print(password)

这样就获取了密文。

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

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值