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

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

> 友情提示:在部落格園更新比較慢,有興趣的關注知識圖譜與大資料公眾號吧。這次選擇蘇寧易購登入密碼加密,如能調試出來代表你具備了一定的JS逆向能力,初學者建議跟著內容除錯一波,儘量獨自將JS程式碼摳出來,實在摳不出來參考這裡[從今天開始種樹](http://www.happyhong.cn/download/suningyigou.html)。 ## 傳送門 ## 前言 最近都在研究一些網站的登入密碼加密JS程式碼,都比較簡單,非常適合有一定爬蟲基礎準備進階的童靴,只有這些做好了下一步才能開始著手滑塊驗證碼這個大坑,廢話不多說,直接開整。 ## 準備 開啟蘇寧易購登入網址[點這裡](http://passport.suning.com/ids/login): ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819200130956.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) 是不是一陣熟悉的趕腳。老規矩,輸入錯誤的賬號密碼點選登入,看看提交連結: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819200249139.png#pic_center) 可以看出登入賬號密碼被提交到了`https://passport.suning.com/ids/login`,看看FormData資料: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819200525359.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) 本篇文章只獲取`password2`的加密方法,其它的引數暫時不管。 ## 除錯 ### 搜尋 除錯的前提是先找到關鍵字在哪個位置,這裡提供了兩種尋找方法: #### 方法一:呼叫棧方式 即在呼叫棧中點選JS檔案連結進去,可以通過函式名大概做一個判斷再點選,如下圖其實就選擇了位置可能比較正確的函式`loginSubmit`: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819200957246.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) 點選進去後其實就靠經驗判斷一下,我往下拉了一小點就發現帶有`encrypt、pwd2`的函數出現,那基本就斷定這就是要找的加密方法: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819201111565.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) #### 方法二:直接搜尋方式 這是我們常用的方法,先搜到包含關鍵字的檔案,再從檔案中搜到關鍵字的位置,這次比較幸運,只有一個檔案包含`password2`,並且這個檔案裡只有一個`password2`,找到的程式碼其實與上面方法找到的一樣: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819201405801.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) 至於使用哪種方式全憑個人習慣,沒有好壞之分。 ### 斷點 除錯開始前得先上個斷點,我是再1484位置下的,下好斷點就要啟用斷點(即輸入賬號密碼),如下所示: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819201657735.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) 一步一步執行看看,首先進入了這裡,看起來像設定公鑰前的準備: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819202044731.png#pic_center) 點選這個按鈕直接進入設定公鑰函式。即`encrypt.setPublicKey(loginPBK)`: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819202203493.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) 產生公鑰,需要提的是這個公鑰是固定的,一會直接複製給`loginPBK`: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819202324713.png#pic_center) 繼續執行: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819202532715.png#pic_center) 又有了一個`encrypt`函式: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819202618141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) 原來是一個叫`al`的函式賦給它的。這個函式返回的結果就是加密後的密碼。那該怎麼扣這個程式碼呢,有一個關鍵點就是`var encrypt = new JSEncrypt();`,去這個檔案裡搜一搜`JSEncrypt`。 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819203101610.png#pic_center) 等於 `JSEncryptExports.JSEncrypt;`,那一直複製到前面J`SEncryptExports`開始的地方一個可以了。 ## python呼叫 又來到了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) ``` 結果: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200819203352561.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center) ## 結束 到這裡今天的蘇寧易購密碼加密扣JS的環節就結束了,強烈建議您練上一遍,有哪裡不懂的可以在評論區留言。關注下面的公眾號,獲取更多內容,當然不關注也無所謂。完整程式碼請訪問[從今天開始種樹](http://www.happyhong.cn/download/suningyigou.html)。 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200321100547328.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2h1YTEzOTUw,size_16,color_FFFFFF,t_70#pic_center)