瑞数FSSBBIl1UgzbN7N443T分析
本文僅做研究使用.
研究的是一個移動的網站,12580惠生活https://hsh.12580.com/Login/login.html
觀察抓包:
分2次請求,才得到了頁面:
加入不處理cookie,直接進行第二次請求:
這樣是獲取不到數據的.
原因:
第一次請求獲取了js代碼,生成FSSBBIl1UgzbN7N443T這個cookie.帶著這個cookie請求才是成功的,這也是今天要分析的.
目標:
由于第一次請求獲取js代碼的數據每次都是變化的,變量也是混淆的,因此要完美的破解的話,必須解決每次多變不一的混淆,因此我們的目標是這樣,每次獲取得到的js代碼,直接使用一個eval來執行,偽代碼:
function get_data(jscode){eval(jscode)return FSSBBIl1UgzbN7N443T}思路:
按照以上的目標,分析還是要以單次獲取的js來分析:
首先來觀察下代碼:
基本上是無法閱讀的,細心看下:
String對象被替換了
window對象被替換了.
所以要查看如何調用的話,在代碼里面基本讀不出來了.
js 扒下來運行,發現
1.id="9DhefwqGPrzGxEp9hPaoag" 的content屬性是一個關鍵的地方 2.window['$_ts'];這個也是解密相關的參數,是固定的,也可以抓出來.接著來到了下一層的eval:
調用的關系是這樣的:
源代碼是這樣的,但是我們在node中執行的時候就會出錯.
出錯的原因是:
_$DA函數沒有定義
但是函數明顯有定義:
由于我們的目標是不打算替換任何的代碼和改變任何一處源代碼的內容,所以我們打算深入的研究一下這個問題:
舉例:
在瀏覽器中,我們定義了一個函數a和全局變量b,使用window[‘a’]和window[‘b’]來進行調用,發現是可以調用成功的
node中:
這樣發現,函數a并沒有添加到全局的global對象中.window[‘a’]和window[‘b’]均為undefined
這是一個非常有意思的結果.在瀏覽器中,var 定義的全局變量會加到全局window屬性中去,函數也自動加到了全局為window調用.但是在node中卻不會加到全局.
這個也是我們使用eval執行出現報錯的原因.
解決辦法:
使用遍歷AST修改代碼,將全局的var和代碼第一層函數添加到window對象上去:
全局var
首層函數
這樣就不需要改變任何代碼內容就完美的解決了這個問題
剩下的所有分析都在第二層的eval中了.
有幾個難點:
1.location.reload會一直重新加載頁面,阻擾分析的進行,可以將這段代碼屏蔽掉 2.canvas對象: 某數中不僅使用了2d的canvas畫圖也是用了webgl的3D畫圖,所以這一部分的模擬需要很認真. 3.檢測的瀏覽器對象需要一一模擬,當然按照我們追求完美的結果的話需要這樣接下來python模擬請求:
后面還有一個參數MmEwMD會在接下來的日子里分享思路.
總結
以上是生活随笔為你收集整理的瑞数FSSBBIl1UgzbN7N443T分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兽医提醒:这几种养狗方式,会让狗狗身体越
- 下一篇: 怎么获取网易云歌单外链链接