记锐捷网关登录用户名/密码 解密的思路


今年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