一個(gè)反爬 JS 逆向分析的例子




不不不,這會(huì)增加我們的工作量,因?yàn)檫@些參數(shù)值有時(shí)候是加密的結(jié)果,也有時(shí)候是頁面返回的值。如果你一開始就去全局搜索字段, 分析到最后發(fā)現(xiàn)是取網(wǎng)頁的某個(gè)值,那豈不是浪費(fèi)許多時(shí)間?
為了避免這種事情發(fā)生,我們可以直接拿剛剛 POST 請求中已經(jīng)被加密的參數(shù)值搜一下,使用快捷鍵 CTRL + SHIFT + F 全局搜索 JS :
搜搜 vv 字段

搜搜?oauth_token?字段

搜搜?pwdencrypt 字段

從搜索結(jié)果中可以發(fā)現(xiàn), oauth_token 和 vv 為網(wǎng)頁返回的值,而 pwdencrypt 全局搜索不到,大概率是加密的密文了,這樣一下子就干掉了兩個(gè)參數(shù)啦,接下來只需要分析 pwdencrypt 即可。
全局搜索一下?pwdencrypt 字段:


可以看到:
pwdencrypt 在此使用了 RSAUtils.encryptedString 進(jìn)行加密。
當(dāng)然,你也可以在這里打個(gè)斷點(diǎn),然后重新點(diǎn)擊登錄按鈕,來確定參數(shù)的加密位置:

扣取加密代碼函數(shù)
先把鼠標(biāo)懸浮在函數(shù)名稱那,然后會(huì)彈出一個(gè)窗口來,你點(diǎn)一下就可以進(jìn)入相關(guān)的函數(shù)了:

接著,你可能會(huì)一臉懵逼的看到一堆js代碼,不知道這么扣?不要慌,只要你遇到不是套娃的寫法以及一個(gè)Js文件多種方法實(shí)現(xiàn)的,簡單粗暴的全部復(fù)制粘貼就行了,這個(gè)就網(wǎng)站就是如此。
首先全選我們定位到的 JS 代碼,然后復(fù)制粘貼一波:

接著在 node 環(huán)境中運(yùn)行這段 JS:

咦~報(bào)錯(cuò)了,提示我們找不到 window 對象。
沒有window 那我們就在 JS 頭部定義一個(gè) Window=this,定義完后再運(yùn)行,如果這時(shí)候啥事沒發(fā)生,那就證明 JS 基本扣下來能用了。
那這么調(diào)用呢??
當(dāng)然是他們怎么調(diào)我們就怎么調(diào)就行啦:

如果提示UDB不存在咋辦?
那就改為:
window.UDB.SDK.rsa.RSAUtils.encryptedString(password)
來測試一下吧:

運(yùn)行一波:

你看,加密的結(jié)果是不是就得到了呀?
ok,以上!
ps: 本文思路由?{小帥b的朋友:lin 哥哥} 提供,小帥b希望今天的分享能給你帶來一點(diǎn)幫助,那么我們下回見啦,peace!

掃一掃
學(xué)習(xí) Python 沒煩惱
你多點(diǎn)“在看”
我多點(diǎn)更新...
