今天給大家來分析并還原某驗的 JS 加密,做過爬蟲的應該都知道這個驗證碼,如果你還沒遇到以后你會碰到的相信我
話不多說,時間寶貴,進入正題!
抓包
進入官網,點擊選擇今天的主題滑動驗證,其他驗證類型的加密大同小異,只要你掌握了下面的方法!
點擊按鈕抓包,隨意拖動一下,請求數據包如下
可以看到一堆請求參數,其實你要做的就是實現 w 的加密
點擊進去,就能看到加密的 JS 文件,為便于分析將其保存到本地。
AST 還原
通過調試可以看到有大量的 unicode 格式的編碼以及數組名稱的混淆
傳統解決方法是在瀏覽器 console 端輸入就能看到它的廬山真面目,但是這種方法太麻煩了,接下來我們用 AST 來將其還原!
首先還原 unicode 編碼,打開 AST 在線解析網站(https://blogz.gitee.io/ast/[1])
將待還原的代碼放進去
可以看到只需要把 extra 屬性刪掉就能還原原來的值。遍歷代碼如下:

注意 jscode 就是之前扣下來的 JS 代碼, 最后將還原后的代碼寫入到 decode_slide.js 文件中
接下來是混淆數組的還原。觀察調試代碼,所有的數組都是基于 JS 文件中開頭的大數組 KBBji.$_Co,同時將該數組賦值給很多變量,這些變量名都是隨機生成的。
所以接下來我們要做的找出這些變量名稱,然后將其替換成對應的字符串值!
AST 在線解析一下
image.png
根據解析結果,編寫相應的遍歷代碼

上面就將所有的變量名找出來了,找到之后就能將所有的這種形式 $_DFCB(66) 代碼還原了,這樣代碼就能有個直觀感受!
相信聰明的你很快就能寫出還原的代碼。經過上面幾步整體還原后的代碼是這樣的
根據關鍵詞很快就能搜索到加密所在位置,清晰可見!如果不還原你是搜不到的.. 還原后在網站上我們也能很快定位到加密位置,打上斷點
同樣的代碼可讀性相差多大,相信你一眼就能看到。你以為這樣就完了?No!
Reres 替換
既然代碼已經還原了,但是我們在網站上調試的時候還是混淆的代碼,那怎么辦呢?
接下來上另一個神器 Reres, 它的作用是將請求映射到本地,即你可以用本地 JS 來代替遠程 JS 文件。
用法直接參考它的 github https://github.com/annnhan/ReRes[2]
好了有了這個東西,我們就能在網站上用還原后的 JS 來進行調試,太強了把!
效果如下:
tql,這下加密參數扣起來就沒壓力了吧!