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

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