Python 联动 Node 实现 JS 破解登录密码小技巧分享

实验网站

aHR0cHM6Ly9jai5lbG9hbmNuLmNvbS8=

破解对应位置

登录密码的加密部分

图示↓ 登录

分析解密过程

首先,我们找到登录密码的具体 URL,这一步一般是全局搜索关键参数,比如 login ,或者 password 模块,这个网站的 url 请求很少,非常容易就从 xhr 中找到了。对应 /login/v1/02 这个请求

01 接下来往下翻 看到吗?password 这个并非是我们输入时候的密码,我们的目标就是通过原始密码,得出这个值 这里我们先通过全局搜索 password 关键字的方式,查看文件中是否有明文的密码字段 很幸运的是,我们查找第一个文件的时候,就找到了关键加密的位置 然后我们去到 source 文件中,找到对应的 js 文件,在我们看 password 位置打上断点 我们再次刷新页面,输入密码,看到它已经跳到了我们打断点的位置 鼠标移动到箭头位置,发现 o.PUBLIC.DESkey 是个固定值:e9284d45-cf2a-4e46-9367-f122413ca6b0 前面 this.checkPwd.password 通过将鼠标移动到 password 上发现,它也是我们自己的原始密码。后面的 trim 是个匿名的函数头,先不管它。重点是 encryptByDES 。我们将鼠标移动到函数上,然后上方会出现链接到原位置的跳转提示 点击进去我们就进入 encryptByDES 的函数具体实现上 接下来就简单了,通过 python 实现原算法,或者通过 python 调用 js 构造这个函数就可以实现 password 解密了,这里我们采用后一种方式

代码实现

首先你需要安装好 node。

安装教程可以参照:https://www.runoob.com/nodejs/nodejs-install-setup.html

step1:初始化 node 环境,命令行键入

npm init -y

step2:安装好 crypto-js 环境包(当然你也可以通过拷贝原来的 js 包到本地的方式)

npm install crypto-js -S

step3:创建实现解密逻辑的 js 文件

touch crack.jscode crack.js // 这个是通过 vscode 打开 crack.js 的命令

引入 crypto-js 包,将之前的破解代码逻辑拷贝进去

var crack = function(t, e) {var CryptoJS = require("crypto-js");var a = CryptoJS.enc.Utf8.parse(e);try {var s = CryptoJS.DES.encrypt(String(t), a, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7        })    } catch (t) {console.log(t)    }return s.toString()}

step4: 通过 python 调用 js 文件实现解密

touch crack.py
code crack.py

写入 python 调用 js 文件代码逻辑

import execjs
import os

js_file = open("./crack.js").read()
js_compile = execjs.compile(js_file)

crack_result = js_compile.call("crack", "frfrfrf", "e9284d45-cf2a-4e46-9367-f122413ca6b0")

print(f"{crack_result}")

最后通过命令行运行,得到结果

>>> python crack.py
StULrhXDyVg=

破解目录下的文件如下

>>>ls
crack.js          crack.py          node_modules      package-lock.json package.json

后面三个node_modules、package-lock.json、package.json。均是由 node 安装依赖包时生成的文件,不可移除它们,就酱

参考资料

https://www.cnblogs.com/cina33blogs/p/9210931.html

https://mp.weixin.qq.com/s/e0jFdh0hz4ro89i80SJuRA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章