如有侵權(quán),請(qǐng)聯(lián)系我刪除
1、引言
? ? ? ? 本文章只做分析,不提供源碼
2、分析
? ? ? ? 首先看一下登錄鏈接和需要什么參數(shù)
好了,看login的參數(shù)初步我們需解決(token, password, rsakey, ds, tk, dv, fuid, sig, shaOne, rinfo)
參數(shù)太多了,我們一個(gè)一個(gè)參數(shù)進(jìn)行分析(注:下面分析的參數(shù)返回值不一定和上圖的一樣,原因是我邊調(diào)試邊寫文章)
2.1 token參數(shù)生成
token的參數(shù)需要解決的有(gid, sig, shaOne)
先看比較簡(jiǎn)單一點(diǎn)的gid是怎么生成的
全局搜索發(fā)現(xiàn)只有三個(gè)js出現(xiàn)gid
發(fā)現(xiàn)gid引用的是下圖這個(gè)方法
還是通過全局搜索方法找shaOne參數(shù)
好了,找到這我們驗(yàn)證下是否是在這個(gè)函數(shù)生成的,清除緩存強(qiáng)制刷新頁面
和上圖加密后的值一樣,確定是從這個(gè)函數(shù)加密出來的
剩下的就是常規(guī)的操作了,一步一步扣代碼就好了。
2.2 password參數(shù)生成
? ????????再生成password參數(shù)之前先要找到rsakey是哪里生成的
可以看出password就是rsa算法加密出來的
2.3? ds和tk參數(shù)生成
他是由viewlog接口返回的,現(xiàn)在我們看下viewlog接口需要什么參數(shù),由下圖看起來我們需要解決(as,fs, sb,tk)參數(shù)
可以看到as是由viewlog接口,那上一個(gè)viewlog是怎么有as的呢?現(xiàn)在我們清除緩存再刷新頁面看看

發(fā)現(xiàn)只需傳ak參數(shù)就可以獲取as返回值,注:雖然這個(gè)接口也返回了ds和tk,但這兩個(gè)值不是login接口的
我們先定位到生成viewlog參數(shù)的地方,全局搜索viewlog
然后我們看下sb參數(shù)是由o賦值的,json格式化一下
mv 好像是鼠標(biāo)移動(dòng)的像素點(diǎn),cr好像是一些頁面參數(shù)


找到sb參數(shù)生成的地方,代碼我就不詳細(xì)說了
而fs是由aes加密生成出來的,key是as加appspi0,values是sb

tk參數(shù)則是上一個(gè)viewlog返回值
ds和tk總結(jié):
? ? ? ? 1. 首先訪問viewlog接口。參數(shù)ak=31a4dfdeb6509f5257bcac99b7be676a
? ? ? ? ?2. 再訪問viewlog接口, 參數(shù)如下:
????????????????as=上個(gè)viewlog接口返回的as
????????????????fs=通過aes加密,key是as加appspi0,values是sb
? ? ? ? ? ? ? ? sb=鼠標(biāo)移動(dòng)的像素點(diǎn),以及一些瀏覽器參數(shù),詳細(xì)請(qǐng)看sb參數(shù)生成的地方
????????????????tk=上個(gè)viewlog接口返回的tk
2.4? dv參數(shù)生成
? ? ? ? 通過全局搜索定位到dv賦值的地方,發(fā)現(xiàn)是window.LG_DV_ARG.dvjsInput進(jìn)行賦值的

? ? 再次通過全局搜索dvjsInput關(guān)鍵字,定位到生成的地方

?通過堆棧,找到e的參數(shù)生成
? ? ??

?后面就靠自己扣代碼了
2.5??fuid 和rinfo參數(shù)生成
? ? 通過fuid = 關(guān)鍵詞找到fuid生成的地方
? ??





? ? 總結(jié),fuid參數(shù):先生成瀏覽器指紋,通過aes加密,rinfo:將fuid參數(shù)傳入_0x2ca40c函數(shù)進(jìn)行加密
? ? 如不知瀏覽器指紋是什么請(qǐng)自行百度
2.6? sig, shaOne
? ? 請(qǐng)參考2.1? ?token生成,只是傳入的參數(shù)不一樣而已
3、Python代碼
? ??????

4、測(cè)試
? ??

5、js轉(zhuǎn)Python代碼注意的點(diǎn)
? ? ? ? 5.1? &,>>? 需要通過ctypes.c_int庫執(zhí)行
? ? ? ? ?5.2? >>> 需要js2py第三方庫進(jìn)行轉(zhuǎn)換