项目地址:aHR0cHM6Ly93d3cuZWNwYW4uY24vZHJpdmUvdXNlcmxvZ2luLmRv
观前提示:
本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除
定位加密点
- 随便输入参数点击登录抓包
- 可以看到这里出现了俩个包点进去分别分析
在 queryUserId 中发现了密文出现 参数名称 primarykey 小本本记起来
在 userlogin 中同样发现了密文出现 参数名称 password - 接下来我们就根据这俩个参数名称定位 可以发现该网站没有混淆 可以很方便的搜索得到关键点
- 接下来就是点进去看了 (那就有人要问了 那么多Js咋知道哪个是我要的呢 其实 做多了就知道 通过肉眼观察也可以分辨 还有呢 你不确定就统统打上断点 反正断点不要钱)
经过多个断点的尝试 俩个加密位置水落石出
primarykey
加密逻辑 md5 "wangpanIT"+时间戳
password
加密逻辑 密码md5后rsa
加密算法实现
既然加密逻辑都搞懂了 我们可以选择 扣取Js 也可以选择 引用加密库 目前常用的库是CryptoJS
primarykey
通过刚刚的分析首先实现的 primarykey 加密引用 CryptoJS 库 并根据代码加密逻辑改写代码实现加密
function queryUserId(telephone, realEmail){ var params = {}; params.authkey = {}; params.authkey.timestamp = new Date().getTime(); params.authkey.rand = 0; params.authkey.uid = 0; params.authkey.primarykey = hex_md5("wangpanIT" + params.authkey.timestamp); params.user = {}; params.user.telephone = telephone; params.user.realEmail = realEmail; params.channelType = "login"; var jsonStr = JSON.stringify(params); return jsonStr; }
password
同样的 password 也是通过引用加密库来实现 但是库也不是万能的 万一人家把库魔改了呢 那还是得动手 根据观察Js的加密逻辑 很直白了已经
var passwd = hex_md5(jQuery.trim(passwordShow)); var encrypt = new JSEncrypt(); var pubKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpIbMUaG8JJ3afkH1XAwLQGlV5J9nZQWLAUT+5aswA0dePEwmp43QZ2bRnG/0FDxSbN2ePZskNCnzAr2BRuJBv6GlMyZuxhhBsuddSL7Zc0KAgkYjUDVn5PZgH1ha49eeJBEetRioHTpujhxPwoA+NNV9/L8h67Zx/h4HfyWrYnQIDAQAB' encrypt.setPublicKey(pubKey); rsaKey = encrypt.encrypt(passwd);
首先把鼠标放到函数上进入加密函数
然后你会发现 整个Js页面2879行全是关于rsa加密的函数 都不用扣
那就拿出我们珍藏许久的ctrl+c和ctrl+v大法
放到node环境运行一下看看会报什么错
报了俩个错误
1.navigator is not defined
2.window is not defined
那简单 缺啥补啥就行了
window=this; navigator={};
补上之后运行 正常 再补上计算函数
如果有提示错误 JSEncrypt is not defined 的情况
将 new JSEncrypt(); 改为 new window.JSEncrypt(); 就可以解决了
加上扣取的Js全部的加密逻辑
function encrypt_password(password){ var passwd= hex_md5(password); var encrypt = new window.JSEncrypt(); var pubKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpIbMUaG8JJ3afkH1XAwLQGlV5J9nZQWLAUT+5aswA0dePEwmp43QZ2bRnG/0FDxSbN2ePZskNCnzAr2BRuJBv6GlMyZuxhhBsuddSL7Zc0KAgkYjUDVn5PZgH1ha49eeJBEetRioHTpujhxPwoA+NNV9/L8h67Zx/h4HfyWrYnQIDAQAB' encrypt.setPublicKey(pubKey); rsaKey = encrypt.encrypt(passwd); return rsaKey; }
运行结果
到此 这个网站的登录分析就到此结束啦 感谢各位的观看