爬蟲必看,每日JS逆向之愛奇藝密碼加密,今天你練了嗎?

羅小黑的黑 發表於 2020-09-22

友情提示:優先在公眾號更新,在部落格園更新較慢,有興趣的關注一下知識圖譜與大資料公眾號,本次目標是摳出愛奇藝passwd加密JS程式碼,如果你看到了這一篇,說明你對JS逆向感興趣,如果是初學者,那不妨再看看我之前的一些文章,可能對你的學習路有些幫助,跟著一起除錯,對JS加密方法理解會更深點。如果除錯不出來,可以參考我的程式碼,本期JS程式碼放在從今天開始種樹

提示

文章首先在公眾號更新,CSDN更新較慢,有興趣的關注一下知識圖譜與大資料公眾號吧。

準備

本期摳愛奇藝passwd加密JS程式碼,傳送門,登入介面如下(我已經嘗試了一次):
愛奇藝登入介面

老老方法(輸入錯誤賬號密碼)找到提交url和提交的引數(即FormData裡的值):
請求URL
FormData提交的引數:
FormData
可以看到passwd已經被某種加密演算法加密了,那我們接下來的任務就是找到這個加密JS程式碼,然後使用python程式碼呼叫執行出來。

除錯

找到passwd

選擇剛才的url,檢視呼叫棧:
呼叫棧
仔細觀察後可以看到有一個檔案裡包含doLogin,那就點進去,進去後搜尋passwd關鍵字,如果你一直看我之前的文章,應該就對這些加密方法名字非常敏感了,能馬上找到:
找到passwd
找到一個rsaFun,基本斷定就是這裡了,那就整上一個斷點:
斷點

啟用斷點

輸入錯誤的密碼,點選登入即可啟用斷點:
啟用斷點
斷點啟用後那就點選下一步(F11)按鈕開始執行,進入加密函式:
rsa函式
仔細看上圖,一個getKeyPair函式,一個encryptedString函式就是我們尋找的目標,繼續F11瘋狂除錯:
getkey

這就是getKeyPair函式,只要把A裡的函式biFromHex、biHighIndex、BarrettMu搜一下定義的地方摳出來算是把這個搞定了。
下一個encryptedString
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程式碼請點選這裡:從今天開始種樹,覺得有幫助的關注一下下面的公眾號,獲取更多內容,當然不關注也無所謂。
公眾號