拼多多登陸 JS 密碼字段加密解析
若有侵權請立即聯繫作者刪除!!!
目標: X多多自動登錄時對密碼字段的加密
抓登陸包
網址 https://mms.pinduoduo.com/login
打開調試工具,隨意輸入一個賬號密碼點擊登陸
然後我我們看到一個 POST 請求
https://mms.pinduoduo.com/janus/api/auth
可見密碼是在 js 中加密好了之後進行 post 提交的 看這貨最後一次加密應該是 base64 加密。
定位可疑加密處
利用 Search 與堆棧調試跟蹤斷點調試在3萬行代碼中找到可疑加密處
查找可疑處並斷點調試, 此處明顯 RSA 加密三部劇特徵!
- 實例化 new 一個對象
- 設置密鑰
- 加密
跟進方法
分析代碼
判斷可以將此 js 復寫出來,摘寫出加密方法,放到
HBuilder
中調試
修改複寫該部分, 並將加密的匿名函數改寫,調用
頭部補入
// 定義 navigator 與 window
var navigator = {};
var window = this; // 等於當前對象
js代碼尾部改寫爲調用模式,提供給 Python 使用
// 1. 將上面這一坨匿名函數掐頭去尾留中間,將其暴露出來, 這樣才能使這個匿名函數暴露出來。
// 2. 改寫 將 rt 解密對象,賦值給 JSEncrypt
JSEncrypt = rt
// 自己寫一個 func 來調用加密, 摘抄加密處如何使用的即可
function test(text){
var p = new JSEncrypt; // 上面剛剛得到的JSEncrpyt 正好new 一個賦值給 p
// 經過測試 PublickKey 爲固定值,摘抄即可
p.setPublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOJ3pYE2cYqdHAnQhd0akAQ6tKiepF6ZCXnYix8HyZJapWm5aeJRmXpWPaH2l+tZzgwOELJLu0BYk6eefWpd79Zm63+cSRdRqhgSv3/Anh4XVjBBewc26KUKMq5MWnEVCyjEDZSzUvCnDiVOl+Uid9tRRr1ZrBMKsXwSgjvge0NwIDAQAB"),
password = p.encrypt(a) // 適當改寫
console.log(password) // 打印
};
test('密碼')
測試js是否能加密
利用 Python 的 js2py 模塊運行 js
with open("encryp.js", "r", encoding="utf-8") as f:
self.context.execute(f.read())
ret = self.context.test('待加密的字符串')
GitHub 代碼
自此完成了提交登陸請求時對密碼的加密,用此方法可對其他字段進行自行封裝。