利用Fiddler調試微信網頁js
內容來自52破解,原文地址
前言
最近在調試一個前后端分離的網站,接口被加密了,原先都是未加密的。就是這個結果json中的message。一堆亂碼。肯定是需要解密js的。
瀏覽器打開需要微信授權登錄的網頁
第一步就是卡住了。這個網頁是需要在微信里面才能打開。怎么才能在chrome瀏覽器中打開呢。收集了一些資料。發帖的時候忘了資料來源了,這里說說我自己做的詳細的步驟吧,很簡單的。
這里測試一下某個鏈接,隨便百度的:
http://www.weijuju.com/mobile/game/miraclepan/pan.jsp?panId=2881&wuid=243430
直接用PC瀏覽器打開會被攔截識別
點擊同意,然后查看fiddler,如圖所示操作。(把第一個open.weixin開頭的網頁直接在PC瀏覽器打開貌似也可以。)這種方法可能導致某些功能無法使用或者瀏覽器控制臺報錯。
接下來在PC默認的瀏覽器就可以看到了授權提示,點擊授權過后就可以自由的在瀏覽器調試微信網頁了。
簡單的js調試
首先我沒有看過系統的教程,只看過一些簡單的文章之類的。只用了一點chrome控制臺調試打斷點的功能,不是很復雜。
最開頭的圖片那個接口是訪問一個頁面渲染數據的接口。json數據中的message的鍵值肯定是需要解密的東西,這就要查看js代碼哪里動了那個message。進入目標頁面就會加載一個單獨的js.名為126.js
接下來。找下這個js文件里面哪里動了這個message,接下來看圖操作
這時候斷點打好了,瀏覽器里面返回再進入這個頁面,這個js就會在這里中斷。鼠標懸浮在斷點的地方會有提示。點擊提示,進入斷點調用的相關的代碼。
這時候如下圖所示點擊懸浮出來的地方,wybzd這個地方。看調用了哪里的代碼怎么處理這個message。
處理message的js代碼到這里就差不多出來了。采用AES加解密,一種對稱加解密,加解密都用一個密碼。
t就是密碼了,this.BVDCVojLpQEGLytM 就是調用這個函數傳進來的參數。找到這個變量的值就是最開始找到處理message的地方,應該只用到了第一個密鑰。其他密鑰我就不知道哪里用了
密鑰就是:"8NONwyJtHesysWpM"
接下來我們來驗證一下這個密鑰是否正確。
隨便百度一個AES在線加解密的網站。把密鑰,密文,解密方式填進去計算
ECB模式,pkcs7padding填充,結果字符集utf-8。最后結果如圖,解密完成。教程到此結束。
總結
微信網頁OAuth 2.0授權登錄可以看看官方文檔和阮一峰網絡日志。
http://www.weijuju.com/mobile/game/miraclepan/pan.jsp?panId=2881&wuid=243430 訪問這個網頁的時候后端有一個處理會檢查請求來源是否在微信瀏覽器里面。如果不是就是提示請在微信客戶端打開鏈接。如果在微信客戶瀏覽器就會顯示讓用戶主動授權。我們用fiddler直接跳過了判斷客戶環境是否在微信客戶端瀏覽器,直接提示用戶授權。授權之后,后端也就被我們欺騙了。就真的以為在客戶端瀏覽器環境了,接下來就可以暢通無阻了,但是實際環境并不是微信客戶端環境,通過jssdk調用的功能都可能會收到限制,我并沒有經過測試。
js混淆加密這次真的很簡單,處理message只有一個地方。還單獨加載了一個文件,只有一層的調用關系,加密方式也不是很復雜,但這些東西只有接觸長了會有一些敏感的直覺,哈哈,我現在才剛剛開始,挺有意思的,就總結一下。