網易滑塊協議分析(一)

網易滑塊驗證碼加密參數分析
在這裏插入圖片描述
如圖所示,再登錄之前,需要先破解它的滑塊,拿到它的關鍵參數

1. 抓包

首先打開抓包工具或者f12控制檯,然後手動滑動,觀察請求包的信息。
在這裏插入圖片描述
我們發現這是個get請求,下面具體看下它的請求參數
在這裏插入圖片描述
其中響應裏的validate就是我們後面處理登錄,需要用到的參數。只有滑動成功,纔會返回值。
我們看下請求參數中,其中大多數參數可以固定不變。只有4個參數需要我們破解。分別是id,token,acToken,data,cb。
通過多次滑動抓包,發現其中id參數也是固定值。token參數可以在請求滑塊圖片的時候找到。
在這裏插入圖片描述
接下來需要破解acToken。全局搜索acToken關鍵字
在這裏插入圖片描述
發現再其中有5處地方出現過。這裏比較少,如果不確定是哪個位置的話,就再全部的位置打上斷點,看它最終會停在哪裏。

這裏我直接通過靜態分析,發現這邊是個check接口,跟驗證碼的接口一致,我們斷點直接打在這裏。
在這裏插入圖片描述
通過動態調試,斷點來到這裏,繼續分析
在這裏插入圖片描述
發現t.acToken在這裏已經生成,並且這個t是通過參數傳遞過來的。這個時候我們應該追溯它的調用棧,看它原始生成的地方。
在這裏插入圖片描述
調用棧追到這裏,發現已經追不動了,沒有更詳細的調用棧了,我們先斷點打在這裏,再追一下
在這裏插入圖片描述
發現這裏斷點處,acToken的值已經生成。右側已經有了更詳細的調用棧,我們繼續向下追。
在這裏插入圖片描述
追到這裏,再向下追,就看不到acToken的值了。我們再這一處的下一個調用棧的地方,下斷點。
在這裏插入圖片描述
這裏發現調用較複雜,不方便觀察其中的值和結果。我們使用抓包工具替換掉原js文件,使用自己本地美化後的js繼續調試。然後斷點下在附近。
在這裏插入圖片描述
註釋部分是原代碼,下面是美化後的代碼。發現在這裏,tmp的值已經生成。是通過Xb這裏方法生成的。
繼續看Xb裏面的方法是怎麼生成的。
在這裏插入圖片描述
可以看到最後調用了Ea方法,去生成我們的acToken。待加密對象中的r,d,b三個值我們都可以找到它的來源。下面我們就導出Ea這個函數,看下本地js生成的值是否跟它生成的一致。
下面是導出內部函數的小技巧。
首先在全局定義一個變量。隨意就好。
在這裏插入圖片描述
然後找到我們要導出的函數,比如說這裏我們要導出Ea這個函數。那麼我們首先找到Ea函數定義的地方,用這個全局變量指向Ea。那麼我們就可以在函數外部去調用這個Ea方法。
在這裏插入圖片描述
接下來使用node,調用getEa這個方法,把參數帶進去調試。
在這裏插入圖片描述
這裏發現我們生成的值與網頁生成的值是一致的。
到這裏acToken的參數加密我們解決了,現在需要的就是找到剛纔加密對象中d的值和b的值。 d的值在這裏生成的。
在這裏插入圖片描述
b的值是傳遞進來的。在Xb函數附近,通過Wb函數生成的。
在這裏插入圖片描述
這裏就不講b和d的生成過程啦。調試技巧和剛纔的一樣,耐心一點,就能整出來。
同樣,接口參數中cb的值也可以通過這種方式整出來。思路和獲取acToken的值一樣,比acToken的生成方式要簡單一些。
在這裏插入圖片描述
我們要先檢驗一下自己生成的cb值和acToken能不能用。
檢驗方式有兩種。
一種是通過抓包工具hook,把它要發的包攔截住,替換成我們自己本地修改的值。
第二種方式是在chrome斷點調試中,修改它參數賦值的地方,改爲我們自己生成的值。

這兩個參數解決了,後面就只剩下data這個參數了。
在這裏插入圖片描述
data參數是一個json。其中又有3個加密參數等待我們解密。
這個放到下一篇再說。
總結一下本篇文章用到的小技巧。

  1. 語法比較複雜的js,可以配合抓包工具替換成本地的js,在本地js中,修改成清晰便於調試的js語法
  2. 內部函數導出。定義一個全局變量,然後內部函數指向全局變量,是這個函數在外部也可以調用。
  3. 檢查調試結果。hook正常的發包請求,修改成我們自己生成的值,便於判斷我們自己生成的值是否正確。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章