天天看點

某甯detect、feature參數分析

隻說下思路吧,畢竟把加密代碼公開對人家網站不好。如有權益問題請私信我,我立即删除。

某甯的detect相比feature要簡單的多,detect的js雖然字元串混淆嚴重,但是邏輯很清晰,如下圖

某甯detect、feature參數分析

檢測了啥東西一看關鍵字元就知道了,花個1天時間完全可以搞定detect。難搞的是feature,feature的加密邏輯是這樣:收集浏覽器特征添加到一個數組 ---->每天更新一個key用來對特征數組進行排序---->對排好序的數組進行加密得到featur。最終加密位置如下圖:

某甯detect、feature參數分析

此處js是Function出來的,搜不到的,需要hook:

某甯detect、feature參數分析

整套feature js最核心的地方就在下圖這,所有東西都是經過r.apply出來的:

某甯detect、feature參數分析

某甯這套feature js和某條最新版的_signature加密,是我見過最精巧的設計了(某條的比su甯還要巧妙),代碼短小精悍,格式化出來也就1000行,但是代碼的加密邏輯賊吊,我看大概邏輯是這樣:設定一個大長度空數組、諸多類似遊标的變量,在一個for循環中對一段密文進行解密,解密出來的字元串可能有userAgent、href、cookie等關鍵字元,但解密出來這些字元串并不馬上去比對關鍵特征,而是把關鍵字元串添加到大數組中,解密密文字元串過程又會改變諸多遊标值,進而實作一個完全動态數組(不知道說的對不對...),具體在哪個位置,哪個遊标值處執行"navigator['user-agent']" 驗證其特征根本不知道,而且關鍵特征字元串我記得也是具難找,因為假如你扣的js代碼裡沒寫navigator['user-agent'] = “Mozilla.....”,此時navigator['user-agent']=undefined也不會立即報錯,但是遊标就會變成錯誤值,在循環個10多次直接代碼報錯,此時都循環10多次了,user-agent特征字元串早找不到了(從數組中删除、或替換成其他字元串),看報錯代碼也是一頭霧水...