某訊滑塊協議分析

某訊滑動驗證碼協議分析

在這裏插入圖片描述
一如既往的先抓包。
在這裏插入圖片描述
這是其登錄接口,登錄接口中的這個值通過搜索可以發現,它是滑塊認證成功後才返回的。
在這裏插入圖片描述
所以,今天主要就是分析這個接口。
這個接口的參數多達39個。以下是此接口部分截圖
在這裏插入圖片描述
雖然參數很多,但是大部分都是無用參數,可固定,有些參數在其它接口也能直接找到。真正需要分析,需要計算的,也就只有5個左右。
其中 acaecd 這個參數跟滑動軌跡有關。 這個key的名字,也就是acaecd並不是固定的,它這個鍵也是從其它接口中返回的。我們重點分析這個參數的值。

控制檯直接搜索這個接口便可直接定位到相關代碼
在這裏插入圖片描述
在這裏插入圖片描述
接口參數一目瞭然,其中我們要分析的參數就在紅框的地方生成的。繼續跟進去。
在這裏插入圖片描述
它這裏會先判斷有無這個函數,如果有繼續調用r.getData(!0).繼續跟進。
在這裏插入圖片描述
一進去會發現這個大的函數。 可以在紅框下方打斷點,觀察這個函數生成的值。
在這裏插入圖片描述
可以發現t中的cd這個值跟我們最後想要的值已經很接近了,可以先記錄下來。至於它怎麼生成這一長串的,目前並不清楚。
在這裏插入圖片描述
這裏cd的那一長串字符賦值給c。 後面又進行了一些操作。重點在操作u的那幾行。直接跳過去看。
在這裏插入圖片描述
u也是從t中取得,此處的一些混淆可以直接替換掉,如果你清楚是在幹嘛的話,也可以不替換。這裏在對u進行截取。這裏其實我們也不用怎麼關心。直接看下面一行加密部分。
在這裏插入圖片描述
我們可以看到這個函數對u進行了加密。下一步又和前面生成的那一長串拼接起來了。我們可以記錄下這個值。後面通過抓包對比,發現最後生成的結果確實是這兩個部分拼接起來的值。
接下來我們就着重分析下這個後面的加密函數。
在這裏插入圖片描述
這個函數就是做了一層包裝,其實U是真正執行的函數,u當成參數傳進去。
追到U函數裏面去。
在這裏插入圖片描述
前面是一大堆定義變量,直接拉到函數末尾。
在這裏插入圖片描述
關鍵點就在這裏,其中我已經把這裏的混淆美化過了。一些加密的點,直接替換掉了,方便分析
解讀一下這裏的代碼。
這裏就是一個for循環,結束條件是 c<n.length,(別問我直接知道的,鼠標放上去,你就能看到函數的作用了),每次 c+=8;
這裏我們監控一下n的值,以及它生成的結果。
在這裏插入圖片描述
加密前的明文 和 加密後的結果一覽無餘。
其中_0x5b382a這個函數是真正加密的函數, _0x12407f這個函數以及 _0x1a3bcd這兩個函數對原字符串做了一些變換。
在這裏插入圖片描述
我對這個函數進行了相關美化。把它用python復現就是這樣
在這裏插入圖片描述
這裏加try的原因是有時候參數n的值不滿4位會報錯。在js中並不會報數組越界異常。

_0x1a3bcd 美化後的js函數
在這裏插入圖片描述
python還原的話直接把這部分用js2py調用,其中裏面的c,u,r,e,o等都是固定值。因爲js中的位移以及抑或操作跟python中有點不太一樣,有點坑,爲了保險起見直接用js2py調用即可。
在這裏插入圖片描述
最後的加密函數 _0x5b382a
在這裏插入圖片描述
python還原後
在這裏插入圖片描述
加密過程的話就圍繞前面的那個for循環串起來就可以了。

我們可以看到整個過程加密了這些值。上一行是加密結果,下一行是加密的值
在這裏插入圖片描述
其中右下角slideValue這個值是我們的滑塊軌跡信息。其它的參數大多可以固定部分需要隨機變化。
觀察軌跡整個數組,發現只有第一組數字比較大。比較特殊,可單獨生成。
找規律第一組數猜測是 其實點擊的座標點, x座標,y座標,第三個數是相對時間。可以隨機。但是不要太大,在這個值附近隨機就可以了。
從第一組數往後都是相對偏移。拿一組數舉例子
[1,0,6] 1,是相對上一次移動的橫座標距離,0是相對上一次移動的縱座標距離,6是相對上一次移動的時間差。
整個過程中我發現x的前面部分的值一直在0、1、2幾個數之間變化,後面部分放緩在0和1之間變化。
y值則可以一直固定爲0不變。相對時間的話也是前面數值比較小,後面數值比較大。數值越小說明移動的越快,越大說明移動的越慢。
我們把數組中的第一個數全部加起來發現,這個數是要大於缺口距離的,比原先多了40。這裏的40其實是滑塊的寬度,也就是說它的計算值是到滑塊右側的距離。
如圖所示
在這裏插入圖片描述
整個加起來的距離其實是這個距離。

成功獲取ticket:
在這裏插入圖片描述

注意點:
1. 圖片識別缺口,完事以後注意網頁縮放問題。
2. 美化代碼以及替換代碼注意修改完畢及時校驗。
3. 有些參數在控制檯搜不到,建議在charles等抓包工具中搜索。
4. js中的位移以及異或運算使用python復現有些坑,建議直接使用js2py等庫執行js

彩蛋:
某訊的滑塊協議好像存在漏洞,不需要滑也能直接獲取ticket。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章