逆向案例三十二——简单混淆和token参数加密

网址:Scrape | Movie

找到数据接口,有一个token的加密值,跟栈分析,发现所有的栈都经过了混淆,搜索肯定是没用的,只能慢慢跟栈分析

 

首先进入第三个栈,打上断点,进行分析,看加密参数有没有生成,发现加密参数已经生成。那么往下跟栈到异步。

 

在异步打上断点,看看加密参数有没有生成。

发现已经生成,那就不是 在异步函数处生成的加密参数,往下跟栈。

发现onPageChange栈处加密参数消失

onFetchData处加密参数还有,因此是在这里加密的,打上断点

打印参数

下面的代码_0x2fa7bd['a']就是加密函数 

_0x263439 = Object(_0x2fa7bd['a'])(this['$store']['state']['url']['index'])

进入加密函数,打上断点

 

复制下来,再具体看看里面的变量名分别代表什么意思。

 

去看看 _0x189cbb代表什么,原来是个标准加密库,i应该是sha1加密我们直接导入库

 

改好后,发现 _0x189cbb 未定义,其实就是加密库,跟上面一样,一并改好即可。

 接着分析

我们看看 _0x358b1f做了什么事情

 

其实就是经过了一个base64的加密

 

 那么我们来改写代码把,可以发现出结果了

完整代码:

const CryptoJS = require("crypto-js");
const Buffer = require('buffer').Buffer;
function get_base64(message) {
    buffer = Buffer.from(message)
    return buffer.toString('base64')
}
function _0x456254() {
    for (var _0x5da681 = Math['round'](new Date()['getTime']() / 0x3e8)['toString'](), _0x2a83dd = arguments['length'], _0x31a891 = new Array(_0x2a83dd), _0x596a02 = 0x0; _0x596a02 < _0x2a83dd; _0x596a02++)
        _0x31a891[_0x596a02] = arguments[_0x596a02];
    _0x31a891['push'](_0x5da681);
    var _0xf7c3c7 = CryptoJS.SHA1(_0x31a891['join'](','))['toString'](CryptoJS['enc']['Hex'])
        , _0x3c8435 = [_0xf7c3c7, _0x5da681]['join'](',')
        , _0x104b5b = get_base64(_0x3c8435);
    return _0x104b5b;
};
console.log(_0x456254())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习各种软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值