這裏看到參數只有一個需要解密
然後下斷點,找到這個位置,Object(c.b)(data.password, "AmrGowGCtUwd/2PgTyrJuV==")
進入 Object(c.b)可以看到是一個通用庫加密方式,找到在綫網站,輸入密鑰 AmrGowGCtUwd/2PgTyrJuV== 測試
分析 Object(c.b) 對應的函數
函數功能
根據提供的函數定義,可以得出以下結論:
- 功能: 這個函式
r
主要用於 加密 資料。 - 加密方式: 使用的是 TripleDES 加密算法,以 ECB 模式進行加密,並採用 PKCS7 填充。
輸入參數:
e
: 需要加密的原始資料(明文)。t
: 加密使用的密鑰,以 UTF-8 格式解析。
輸出結果:
- 返回加密後的密文,以字符串形式表示。
函數解析
- 引入加密庫: 函數中使用了
o
物件,這個物件很可能是引入的加密庫(例如 CryptoJS)的一個命名空間,提供了加密相關的函數和常量。 - 密鑰解析:
o.enc.Utf8.parse(t)
這部分將傳入的密鑰t
從 UTF-8 字符串轉換為加密庫可以使用的內部表示形式。 加密操作:
o.TripleDES.encrypt(e, n, { ... })
這一行是核心加密操作:e
: 需要加密的明文。n
: 已解析的密鑰。mode: o.mode.ECB, padding: o.pad.Pkcs7
:指定加密模式為 ECB,填充方式為 PKCS7。
- 返回密文: 最後將加密後的結果轉換為字符串返回。
與 Object(c.b)
的關係
回到原問題的 Object(c.b)
,根據上下文推測,c.b
很可能是一個變數或函式,指向了這個加密函數。使用 Object()
將其轉換為對象,可能是為了確保在某些情況下能正確調用函數。
潛在問題與改進
- 密鑰安全性: 密鑰的安全性至關重要。密鑰應該妥善保管,避免洩露。建議使用更安全的密鑰管理方式,例如將密鑰存儲在服務器端,並使用安全的傳輸方式。
- 加密模式: ECB 模式雖然簡單,但存在安全風險,尤其是當加密的數據有明顯的模式時。建議使用更安全的加密模式,例如 CBC 或 GCM。
- 填充方式: PKCS7 填充是一種常用的填充方式,但也有其他選擇。可以根據具體需求選擇適合的填充方式。
- 加密庫: 選擇可靠的加密庫非常重要。不同的加密庫在性能、安全性、易用性等方面可能有所差異。
結論
這個函數實現了一個簡單的 TripleDES 加密功能,但存在一些安全性和可優化的地方。在實際應用中,建議根據具體需求選擇更安全的加密算法、模式和填充方式,並注意密鑰的管理。
再然後是 headers 裏面的字段:sign
sign參數就是由:rs()(o + c + r + n + o)得來,rs()函數進入後是一個md5。
所以可以得到:md5(o + c + r + n + o)
n和o找到了,時間戳和一個固定值,c是cookie裏面的uu值取出來的,最後結果就是:
n = (new Date).getTime()
md5('12b6bb84e093532fb72b4d65fec3f00b' + cookie_uu + "/user/loginErrorCount" + n + '12b6bb84e093532fb72b4d65fec3f00b'),