這個爬蟲JS逆向加密任務,你還不來試試?逆向入門級,適合一定爬蟲基礎的人

羅小黑的黑發表於2020-08-27

友情提示:在部落格園更新比較慢,有興趣的關注知識圖譜與大資料公眾號吧。這次選擇蘇寧易購登入密碼加密,如能除錯出來代表你具備了一定的JS逆向能力,初學者建議跟著內容除錯一波,儘量獨自將JS程式碼摳出來,實在摳不出來參考這裡從今天開始種樹

傳送門

前言

最近都在研究一些網站的登入密碼加密JS程式碼,都比較簡單,非常適合有一定爬蟲基礎準備進階的童靴,只有這些做好了下一步才能開始著手滑塊驗證碼這個大坑,廢話不多說,直接開整。

準備

開啟蘇寧易購登入網址點這裡:
在這裡插入圖片描述
是不是一陣熟悉的趕腳。老規矩,輸入錯誤的賬號密碼點選登入,看看提交連結:

在這裡插入圖片描述
可以看出登入賬號密碼被提交到了https://passport.suning.com/ids/login,看看FormData資料:
在這裡插入圖片描述
本篇文章只獲取password2的加密方法,其它的引數暫時不管。

除錯

搜尋

除錯的前提是先找到關鍵字在哪個位置,這裡提供了兩種尋找方法:

方法一:呼叫棧方式

即在呼叫棧中點選JS檔案連結進去,可以通過函式名大概做一個判斷再點選,如下圖其實就選擇了位置可能比較正確的函式loginSubmit
在這裡插入圖片描述
點選進去後其實就靠經驗判斷一下,我往下拉了一小點就發現帶有encrypt、pwd2的函式出現,那基本就斷定這就是要找的加密方法:
在這裡插入圖片描述

方法二:直接搜尋方式

這是我們常用的方法,先搜到包含關鍵字的檔案,再從檔案中搜到關鍵字的位置,這次比較幸運,只有一個檔案包含password2,並且這個檔案裡只有一個password2,找到的程式碼其實與上面方法找到的一樣:
在這裡插入圖片描述
至於使用哪種方式全憑個人習慣,沒有好壞之分。

斷點

除錯開始前得先上個斷點,我是再1484位置下的,下好斷點就要啟用斷點(即輸入賬號密碼),如下所示:
在這裡插入圖片描述
一步一步執行看看,首先進入了這裡,看起來像設定公鑰前的準備:
在這裡插入圖片描述
點選這個按鈕直接進入設定公鑰函式。即encrypt.setPublicKey(loginPBK)
在這裡插入圖片描述
產生公鑰,需要提的是這個公鑰是固定的,一會直接複製給loginPBK
在這裡插入圖片描述
繼續執行:
在這裡插入圖片描述
又有了一個encrypt函式:
在這裡插入圖片描述
原來是一個叫al的函式賦給它的。這個函式返回的結果就是加密後的密碼。那該怎麼扣這個程式碼呢,有一個關鍵點就是var encrypt = new JSEncrypt();,去這個檔案裡搜一搜JSEncrypt
在這裡插入圖片描述
等於 JSEncryptExports.JSEncrypt;,那一直複製到前面JSEncryptExports開始的地方一個可以了。

python呼叫

又來到了python呼叫的環節,老程式碼又來了:

import execjs

with open('..//js//suningyigou.js', encoding='utf-8') as f:
    suningyigou= f.read()
js = execjs.compile(suningyigou)
logid = js.call('get_pwd', "123456")
print(logid)

結果:
在這裡插入圖片描述

結束

到這裡今天的蘇寧易購密碼加密扣JS的環節就結束了,強烈建議您練上一遍,有哪裡不懂的可以在評論區留言。關注下面的公眾號,獲取更多內容,當然不關注也無所謂。完整程式碼請訪問從今天開始種樹
在這裡插入圖片描述

相關文章