記銳捷網關登錄用戶名/密碼 解密的思路


今年1月初,使用銳捷做網關的用戶很多出現時不是斷網或網關web頁面異常無法操作的情況,經與客服溝通需升級他們的固件來修正。修正后,原來用來登錄路由的python腳本卻連不上了,下面記錄下處理的過程及思路。

1、使用chrome F12觀察填用戶名/密碼的提交情況,發現post時被加密了,跟原始的不同,數次輸入相同信息,又發現post的信息是變化的,肯定是經js加密了。

2、考慮到一般處理post多用jq攔截,然后用自己的函處理再異步提交這樣子,先觀察首頁的源代碼,<script>處代碼看不出與加密相關

3、下一步要找到對應的js文件,ctrl+f5強制刷新,然后使用chrome的網絡標簽觀察所有的js文件內容,發現一處有"username":GibberishAES.enc(usernameValue, 'RjYkhwzx\$2018!').replace(/\s+/g, ''),這樣的內容,應該是相關的了,直接當前頁面控制台試GibberishAES.enc(usernameValue, 'RjYkhwzx\$2018!').replace(/\s+/g, '') 是可以執行的,在當前JS找不到這函數定義的地方,判斷另有JS引入

4、在每一js查此函數,找到一處(function(e,r)開頭的js文件,代碼行只有一行,奇怪為什么是以(來包含函數,百度后原來是匿名函數命名並立刻執行的意思

5、拷貝到node,下,執行,再調用GibberishAES.enc是可以的,之后就需調整js里面的內容以便python調用

6、定義一個函數,function enc(a){return GibberishAES.enc(a, 'RjYkhwzx\$2018!').replace(/\s+/g, '');};,然后試在execjs處以字符串直接執行,報錯,保存為js再編譯然后用call來調用又提示GibberishAES沒定義

7、為什么沒定義呢?是不是這函數的出現是有某種先決條件?於是在js頭部添加相應瀏覽器/文檔等環境,又是一樣的提示,再次仔細看(function(e,r)里的GibberishAES,發現整行是這樣的"object"==typeof exports?module.exports=r():"function"==typeof define&&define.amd?define(r):e.GibberishAES=r(),於時直接把e.GibberishAES=r()前面的全刪了(因為看不懂),然后再試,這回終於可得出加密后的字符串了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM