友情提示:優先在公眾號更新,在博客園更新較慢,有興趣的關注一下知識圖譜與大數據公眾號,本次目標是摳出愛奇藝passwd加密JS代碼,如果你看到了這一篇,說明你對JS逆向感興趣,如果是初學者,那不妨再看看我之前的一些文章,可能對你的學習路有些幫助,跟着一起調試,對JS加密方法理解會更深點。如果調試不出來,可以參考我的代碼,本期JS代碼放在從今天開始種樹
提示
文章首先在公眾號更新,CSDN更新較慢,有興趣的關注一下知識圖譜與大數據公眾號吧。
准備
本期摳愛奇藝passwd
加密JS
代碼,傳送門,登錄界面如下(我已經嘗試了一次):
老老方法(輸入錯誤賬號密碼
)找到提交url
和提交的參數(即FormData
里的值):
FormData
提交的參數:
可以看到passwd
已經被某種加密算法加密了,那我們接下來的任務就是找到這個加密JS
代碼,然后使用python
代碼調用運行出來。
調試
找到passwd
選擇剛才的url,查看調用棧:
仔細觀察后可以看到有一個文件里包含doLogin
,那就點進去,進去后搜索passwd
關鍵字,如果你一直看我之前的文章,應該就對這些加密方法名字非常敏感了,能馬上找到:
找到一個rsaFun
,基本斷定就是這里了,那就整上一個斷點:
激活斷點
輸入錯誤的密碼,點擊登錄即可激活斷點:
斷點激活后那就點擊下一步(F11)
按鈕開始運行,進入加密函數:
仔細看上圖,一個getKeyPair
函數,一個encryptedString
函數就是我們尋找的目標,繼續F11
瘋狂調試:
這就是getKeyPair
函數,只要把A
里的函數biFromHex、biHighIndex、BarrettMu
搜一下定義的地方摳出來算是把這個搞定了。
下一個encryptedString
:
依然只要找到這些方法,摳出來放一個文件里,等待python
調用。
python調用運行
如果調用報錯,記得根據報錯信息缺啥補啥,比如window
可以定義為window={}
,如果提示某某函數未定義,可能是你代碼沒有摳全,全原文件里繼續查找,摳出來,下面是我調用的結果:
python
代碼:
import execjs
with open('..//js//aiqiyi.js', encoding='utf-8') as f:
aiqiyi = f.read()
js = execjs.compile(aiqiyi)
#logid = js.call('hexEncode', "123456")
logid = js.call('get_pwd', "12345")
print(logid)
運行結果:
結束
本期講解了愛奇藝密碼加密代碼如何摳取,大家自己練上一練,如果查看完整JS代碼請點擊這里:從今天開始種樹,覺得有幫助的關注一下下面的公眾號,獲取更多內容,當然不關注也無所謂。