关于某征信数据平台的逆向分析

声明

本文中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文未经许可禁止转载,禁止任何形式的修改后进行二次传播,若有侵权,请联系作者删除!

网址:aHR0cHM6Ly93ZWJhcGkuY25pbmZvLmNvbS5jbi8jL21hcmtldERhdGFaaGlzaHU=

找到我们需要数据的包,观察内容,发现在Request Headers中有一个Accept_key值,这个值是变化,那么本期的目标就是找到这个Accept_key的加密方法

首先我们看数据包的调用栈

发现是一个ajax的请求包,我们点击第一个

仔细观察,发现在e中有我们想要的值,那么我们继续往下观察

发现这个时候的Accept_key在v值中,那么此时依然存在Accept_key值,我们继续往下观察

那么这个时候我们可以明显发现,Accept_key值已经没有了,但是在文件中出现了我们熟悉的字眼“"Accept-EncKey": indexcode.getResCode()”,我们在这里打上断点

这里就是key值生成的入口,我们悬浮在这个函数中点击进入函数当中,可以看到这里是一个AES的加密方法

那么打上断点观察return后的值

发现这里生成了Accept_key,那么接下来就是观察值是如何生成的,我们一段一段进行分析

观察_0xd6f958,这是一个函数,点击进入,发现返回的是一个字符串,但是这个字符串不是固定的接着往下走我们一样对这个_0x5c640c值进行悬浮,我们可以理解为这是一个函数加密包,同时后面的值也进行了混淆,那么我们扣代码的时候,需要对其进行还原

const CryptoJs = require('crypto-js')


function getResCode() {
    var _0xc86af7 = _0xd6f958
        ,
        _0x3d64a7 = CryptoJs['AES']['encrypt'](CryptoJs['enc']['Utf8']['parse'](Math['floor'](_0x154af1['phNWP'](new Date()['getTime'](), -0x29f * 0x1 + -0x1f16 + 0x259d * 0x1))), CryptoJs['enc']['Utf8']['parse']('1234567887654321' || _0x154af1['lBOld']), {
            'iv': CryptoJs['enc']['Utf8']['parse'](_0x154af1['lBOld']),
            'mode': CryptoJs['mode']['CBC'],
            'padding': CryptoJs['pad']['Pkcs7']
        });
    return CryptoJs['enc']['Base64']['stringify'](_0x3d64a7['ciphertext']);
}

这是还原之后的代码,可以看到就是AES的加密方法。那么我们还原之后,我们运行一下,发现_0xd6f958没有定义,我们需要找到它点击之后,发现在_0x32ca这个函数就是我们需要的,我们把它扣下来,重新进行定义

function _0xd6f958(_0x7555b, _0x45e7ad) {
    _0x7555b = _0x7555b - (0x1 * 0x1e44 + 0x1139 + 0x1 * -0x2db7);
    var _0xc97017 = _0x3460f4[_0x7555b];
    return _0xc97017;
}

继续往后走,我们运行代码发现还是缺少代码,找到_0x154af1值发现这个值不是一个函数,是js文件中定义的值,那么我们要找到这个值小伙伴们需要一直往上划,那么我们现在需要把这段代码扣下来,代码太长了,这里就不展示全部了

那么我们再次运行,发现有个localStorage没定义,找到它,仔细观察一下这个值

发现这里有很大一串的值,需要把它扣下来嘛?如果扣下来,那么我们就水灵灵的上了个大当

我们把这个对象的方法框住

这里其实是一个固定的值,我们把它扣下,代码在前面还原处已经有了,这里就不再次展示了,当我们完成这一步后,我们需要的Accept_key值就出来了

那么我们进行测试

发现测试成功,至此,我们就完成了逆向分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值