某某观鸟记录(rsa加密、MD5加密)返回数据AES解密逆向分析
声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!
逆向目标
目标:某某观鸟记录(rsa加密、MD5加密)返回数据解密逆向分析
网址:
打开控制台,通过抓包可以发现数据接口是front/record/search/page
发现请求有加密,响应的数据是加密的
搜索关键字
这里我搜的时间戳,可以看到有两个这个,点进去观察
进来后发现很明显是这里,打断点
调试执行,可以发现,网站是使用ajaxSetup
设置了ajax请求的全局配置,请求头和加密参数都是在此处进行赋值的
将定位到的加密位置的代码扣出,可以发现网站的数据加密是使用的JSEncrypt模块进行的RAS加密,所以我们可以直接使用标准模块进行加密,但是网站使用的encrypt.encryptUnicodeLong方法,node.js中是没有的,所以我们还需要将这个方法扣出来。下方请求头加密使用的md5,我们同样可以使用标准模块进行加密。
响应数据
这里我们使用hook
因为响应加密数据一般都是json数据加密,所以解密后会使用JSON.parse
进行解密,所以我们可以对JSON.parse
进行hook
hook代码段:
var my_parse = JSON.parse;
JSON.parse = function (params) {debuggerconsole.log("json_parse params:",params);return my_parse(params);
};
运行hook代码,再次获取数据,发现可以断住明文
调试执行,就可以找到解密位置
调试进去
解密位置的代码扣出,可以发现发现是混淆了的,复制这段给ai工具还原,网站是使用的AES解密的,所以我们可以使用标准的AES模块进行解密。
var key = '';
var iv = ''
run = function(a) {var b = CryptoJS.enc.Utf8.parse(key);var c = CryptoJS.enc.Utf8.parse(iv);var d = CryptoJS.AES.decrypt(a, b, {iv: c,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return d.toString(CryptoJS.enc.Utf8)}
结束了