爬虫 — Js 逆向案例五闪职网登录

news/2024/7/19 8:46:59 标签: 爬虫, python, javascript

目标网站:http://shanzhi.spbeen.com/login/

需求:找到密码加密的过程,进行加密

案例分析

1、多输入几次错误的密码,查看哪些字段是加密的。

在这里插入图片描述

2、如何没有 Search 到相关的字段,可以在 JS 里面找一找。

在这里插入图片描述

3、如果看到 JS 文件里面有 eval(包裹的 js 代码),这种一般是对 JS 文件进行了加密,可以把代码复制到解密网站解密。

点击进入解密网站

将代码整个复制到文本区域内后,点击“解码”,将解码后的代码复制到新建的 JS 文件中。

javascript">function doLogin() {
    var password_old = $("#MemberPassword").val();
    var encrypt = new JSEncrypt();
    var public_key = $("#pk").val();
    encrypt.setPublicKey(public_key);
    var pass_new = encrypt.encrypt(password_old);
    $("#MemberPassword").val(pass_new);
    $("#login_button").submit()
}

4、分析发现 $("#MemberPassword").val() 是输入的密码,所以可以直接把这部分换成密码后运行代码。

javascript">function doLogin() {
    var password_old = '123456';
    var encrypt = new JSEncrypt();
    var public_key = $("#pk").val();
    encrypt.setPublicKey(public_key);
    var pass_new = encrypt.encrypt(password_old);
    $("#MemberPassword").val(pass_new);
    $("#login_button").submit()
}
console.log(doLogin())

5、运行后报错。

javascript">var encrypt = new JSEncrypt();
                  ^
ReferenceError: JSEncrypt is not defined

6、这个可以直接安装模块,在文件所在文件夹的地址栏输入 cmd 后回车,输入命令 cnpm install node-jsencrypt 安装模块,安装模块后导入模块。

javascript">const JSEncrypt = require('node-jsencrypt')

function doLogin() {
    var password_old = '123456';
    var encrypt = new JSEncrypt();
    var public_key = $("#pk").val();
    encrypt.setPublicKey(public_key);
    var pass_new = encrypt.encrypt(password_old);
    $("#MemberPassword").val(pass_new);
    $("#login_button").submit()
}
console.log(doLogin())

7、这里面的 public_key 是公钥,可以在网页源码中找到。

在这里插入图片描述

javascript">const JSEncrypt = require('node-jsencrypt')
function doLogin() {
    var password_old = '123456';
    var encrypt = new JSEncrypt();
    var public_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaP+rYm6rqTMP565UmMU6YXq46KtAN3zwDSO8LNa15p0lJfsaY8jXY7iLsZqQZrGYr2Aayp6hYZy+Q+AMB/VUiSpD9ojPyOQ7r9jsf9jZbTOL4kj6iLZn37fEhp4eLvRgy5EJCyQoFyLCsgLechBTlYl2eA95C3j4ZUFhiV6WFHQIDAQAB';
    encrypt.setPublicKey(public_key);
    var pass_new = encrypt.encrypt(password_old);
    $("#MemberPassword").val(pass_new);
    $("#login_button").submit()
}
console.log(doLogin())

8、返回一下加密后的密码。

javascript">const JSEncrypt = require('node-jsencrypt')
function doLogin() {
    var password_old = '123456';
    var encrypt = new JSEncrypt();
    var public_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaP+rYm6rqTMP565UmMU6YXq46KtAN3zwDSO8LNa15p0lJfsaY8jXY7iLsZqQZrGYr2Aayp6hYZy+Q+AMB/VUiSpD9ojPyOQ7r9jsf9jZbTOL4kj6iLZn37fEhp4eLvRgy5EJCyQoFyLCsgLechBTlYl2eA95C3j4ZUFhiV6WFHQIDAQAB';
    encrypt.setPublicKey(public_key);
    var pass_new = encrypt.encrypt(password_old);
    return pass_new
    // $("#MemberPassword").val(pass_new);
    // $("#login_button").submit()
}
console.log(doLogin())

运行结果:
YUhGv7Ja7VNJDkAjLRmwTa2YYfcZvabqvBuvN04y7RgjVs2Y5xXgsyGvnj9+UwGvyY/n0Q5nb1ZVov0gtNTDg7hek3Xbv3Q3segAdY+klsdJDoAipv7v6KWAp0xmPKLMlUv94vPWljAft+Mlhzfz0XXm3QMM7hsC43OxVOA1qsA=

过无限 debug

在这里插入图片描述

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~


http://www.niftyadmin.cn/n/5037696.html

相关文章

机器学习入门教学——损失函数(极大似然估计法)

1、前言 我们在训练神经网络时,最常用到的方法就是梯度下降法。在了解梯度下降法前,我们需要了解什么是损失(代价)函数。所谓求的梯度,就是损失函数的梯度。如果不知道什么是梯度下降的,可以看一下这篇文章:机器学习入…

Android 图片加载框架Glide源码详解

我们看Glide的源码从Glide类入手,使用的时候我们先调用的with方法,源码中with有3个多载的方法:下图翻译过来就是activity用FragmentActivity Applicationcontext用 with(Context)还有一个with(View)的 殊途…

CCG超级标记

1. 定义 组合范畴语法(Combinatory Categorial Grammar,CCG)是一种用于自然语言语法分析的语言学理论和计算模型。它是一种形式文法,旨在描述句子的结构和语法规则(通过简练的描述形式表现出句子中各成分的句法语义关…

selenium中出现 Other element would receive the click的解决方式

用Python利用selenium操作点击复选框的时候,出现 Other element would receive the click错误。 要点击的复选框情况如图: 首次的时候,我用以下代码定位到复选框,并且点击 alert_input WebDriverWait(driver, 5).until(EC.pres…

刷题笔记25——图论课程表

为了最终理解你所不理解的,你必须经历一条愚昧无知的道路。为了占有你从未占有的东西,你必须经历被剥夺的道路。为了达到你现在所不在的名位,你必须经历那条你不在其中的道路。——艾略特 797. 所有可能的路径(已经告知:是有向无环…

【Vue】浏览器自定义格式化工具

当我们不启用浏览器自定义格式化工具,输出 Ref 或者 Reactive 类的值出输出完整的返回值对象,而且 value 值需要再次点击才可以得到。 为了解决这个问题,我们可以开启浏览器自定义格式化工具。 点击 setting 齿轮 依次找到 preference ->…

被难倒了! 针对高级前端的八个级JavaScript面试问题

JavaScript 是一种功能强大的语言,也是构建现代 Web 的基础之一。这种强大的语言也有一些自己的怪癖。例如,你知道 0 -0 会计算为 true,或者 Number("") 会返回 0 吗? 有时候,这些怪癖会让你百思不得其解&…

数组初学者向导:使用Python从零开始制作经典战舰游戏

引言 战舰游戏,一个广受欢迎的经典游戏,为玩家提供了策略与猜测的完美结合。这个游戏的核心思想是通过猜测敌方船只的位置并尝试击沉它们来赢得比赛。在这篇文章中,我们将使用Python语言和数组来构建这款游戏,让你更加了解数组的…