拼多多登陸 JS 密碼字段加密解析

個人博客網站

拼多多登陸 JS 密碼字段加密解析

若有侵權請立即聯繫作者刪除!!!

目標: X多多自動登錄時對密碼字段的加密

抓登陸包

網址 https://mms.pinduoduo.com/login

打開調試工具,隨意輸入一個賬號密碼點擊登陸

原始數據

然後我我們看到一個 POST 請求

https://mms.pinduoduo.com/janus/api/auth

原始數據

可見密碼是在 js 中加密好了之後進行 post 提交的 看這貨最後一次加密應該是 base64 加密。

定位可疑加密處

利用 Search 與堆棧調試跟蹤斷點調試在3萬行代碼中找到可疑加密處

原始數據

查找可疑處並斷點調試, 此處明顯 RSA 加密三部劇特徵!

  1. 實例化 new 一個對象
  2. 設置密鑰
  3. 加密

原始數據

跟進方法

原始數據

分析代碼

原始數據

判斷可以將此 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 代碼

自此完成了提交登陸請求時對密碼的加密,用此方法可對其他字段進行自行封裝。

【拼多多】登陸參數解密

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