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


友情提示:在博客園更新比較慢,有興趣的關注知識圖譜與大數據公眾號吧。這次選擇蘇寧易購登錄密碼加密,如能調試出來代表你具備了一定的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的環節就結束了,強烈建議您練上一遍,有哪里不懂的可以在評論區留言。關注下面的公眾號,獲取更多內容,當然不關注也無所謂。完整代碼請訪問從今天開始種樹
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM