共计 1671 个字符,预计需要花费 5 分钟才能阅读完成。
试验网站
aHR0cHM6Ly9jai5lbG9hbmNuLmNvbS8=
破解对应地位
登录明码的加密局部
图示↓
剖析解密过程
首先,咱们找到登录明码的具体 URL,这一步个别是全局搜寻要害参数,比方 login,或者 password 模块,这个网站的 url 申请很少,非常容易就从 xhr 中找到了。对应 /login/v1/02 这个申请
接下来往下翻
看到吗?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…
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/cina3…
https://mp.weixin.qq.com/s/e0…
本文由博客一文多发平台 OpenWrite 公布!