极X助手
aHR0cHM6Ly93d3cuamlkYWlob21lLmNvbS9vZmZpY2VyLyMvbG9naW4=
先抓包看看这次要分析的参数。【图1-1】
![图1-1 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/bdc4efa6c06dc3ff5916c4935d59e9f0.png)
看到【图1-1】里是没有加密参数名的。所以为了快速定位到加密的位置,我们试试 XHR 断点。
切换到 控制台 - Source 选项卡 ,如【图1-2】位置填入下面的内容。
![图1-2 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/839229bf34c572136564f52882680e28.png)
接着我们再发起一次请求,可以看到断点打上了。【图1-3】
![图1-3 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/5dda89f244dc169c83639c0d19a2adb5.png)
我们点击左下角的{}
格式化 JS 看看断点断上的位置有没有我们需要的内容。【图1-4】
![图1-4 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/97c378296172b3faea44d35e28ac88f6.png)
我们可以看到这里函数 y
传入一个参数t
,t
中包含我们需要的提交数据【图1-5】。但是在这个断点位置并不能找到参数加密的地方,所以我们需要点击右侧的堆栈往上看看。
![图1-5 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/81103b823958b6d905c764af66e515ad.png)
我们通过查看堆栈信息,找到了这里【图1-6】。发现在这里出现了 params
相关的的操作,所以这里的可能包含的就是我们需要的加密位置,我们根据提示进去看看这里的加密逻辑是什么样的。
![图1-6 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/303c21be74e0dc1c33ce4db6865ebf1d.png)
可以看到这里把经过处理的密码和用户名传入后,再次做了另一次加密处理后得到了变量i
。
var r = t.randomKey(16), i = t.aesEncrypt(JSON.stringify(e), r);
![图1-7 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/24fd489509bc0448f420a1c73ee95a78.png)
我们分别把变量i
需要的参数分别跟进去看看生成规则。【图1-8】是变量r
的生成规则是一串随机的字符串。
![图1-8 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/068431b77e9759f66b03f1cf57791ad0.png)
接下来是加密变量i
的加密方法【图1-9】。
![图1-9 640?wx_fmt=png](https://img-blog.csdnimg.cn/img_convert/527da6d41b4f0a2ce48596f8beeb37a9.png)
接下来只需要把这些参数的方法复制到编辑器中进一步的补全就可以了。
Tip: 这里的参数e
是我们传入的用户名和密码,在【图1-6】的 54-55 行中传入,且密码经过了一层MD5的加密。
这里很多朋友纠结于类似 i.enc.Utf8.parse
这里的i
如何补全,其实这里的i
就是我们常用的CryptoJS
,只要引入后,直接替换就可以了,不用扣取整个JS。
![640?wx_fmt=jpeg](https://img-blog.csdnimg.cn/img_convert/676d982dd59342e587e22ed24d53c7cf.png)