js逆向-某证信Accept-Enckey参数加密解析

😀 逆向Accept-Enckey

网站:https://webapi.cninfo.com.cn/#/marketDataDate

📝 主旨内容

定位加密位置

Accpt-Enckey参数详解

我们抓包查看了好多包,只有这个包看起来比较符合要求。我们也看到这里的参数 accept-enckey。

在这里插入图片描述

在这里我们看得出来我们需要解决这个参数,才能正常请求这个网站。那么我们就需要好好分析这个参数在哪里、如何构建喝生成的。

我们搜索一下这个参数 accept-enckey 发现总共有118个地方有这个字符串,16个文件有包含这些参数。

在这里插入图片描述

在这里插入图片描述

这里注意到基本上每一个都有这个链接。那么我换个思路,可以搜索链接的一部分,来确定到底是哪个文件,那个位置的。

在这里插入图片描述

可以看到确实是可以的,搜索到了这个具体位置。

headers: {
"Accept-EncKey": indexcode.getResCode()
}

可以看到 indexcode.getResCode() 得到的参数。我们打个断点

在这里插入图片描述

看一下是可以生成得到结果的,我们跟上去看一下。

在这里插入图片描述

这里就是最后生成结果的位置,接下来我们要来分析他的生成逻辑。

分析算法

我们需要注意算法是如何生成的,如何传递参数,如何实现完整逻辑。

可以看到这要是一个OB混淆,但是是比较简单,可以看到window对象都是明写的。

'getResCode': function() {
  var _0x90ae75 = _0x446e1d
    , _0x1e077e = _0x1cee98[_0x90ae75(0x1b0)][_0x90ae75(0x4de)](_0x1cee98[_0x90ae75(0x5cc)][_0x90ae75(0x143)][_0x90ae75(0x53b)](Math[_0x90ae75(0x35d)](_0x28b1b3[_0x90ae75(0x40c)](new Date()[_0x90ae75(0x74c)](), 0x1a02 * -0x1 + 0x867 * 0x4 + -0x2b * 0x16))), _0x1cee98[_0x90ae75(0x5cc)][_0x90ae75(0x143)][_0x90ae75(0x53b)](localStorage[_0x90ae75(0x713)](_0x28b1b3[_0x90ae75(0x2d2)]) || _0x28b1b3[_0x90ae75(0x337)]), {
      'iv': _0x1cee98[_0x90ae75(0x5cc)][_0x90ae75(0x143)][_0x90ae75(0x53b)](_0x28b1b3[_0x90ae75(0x337)]),
      'mode': _0x1cee98[_0x90ae75(0x3c2)][_0x90ae75(0x49f)],
      'padding': _0x1cee98[_0x90ae75(0x1fd)][_0x90ae75(0x6b1)]
  });

我们可以看到这段代码其实一看就是AES算法的CBC模式的算法。

在这里插入图片描述

iv值

在这里插入图片描述

我们把整个文件复制到编辑器中,运行JS代码。

在这里插入图片描述

可以看到缺少Window对象。补上在继续运行。要看到缺少对象。

在这里插入图片描述

可以看到缺少这个对象的函数,我们把他补上。

在这里插入图片描述

补上了这些函数,就可以看到别的错误了。

在这里插入图片描述

我们看到要缺少了对象,这里其实也可以把这些代码删掉(如果没用的情况)这样就可以少补一些环境。

我把这块删除了,就可以了。

在这里插入图片描述

这里我们知道aes还需要补上对应的这个aes库。

在这里插入图片描述

导入这个库,然后就可以了。我在运行

在这里插入图片描述

然后我们在复制到python去请求,可以看到得到正常结果。

在这里插入图片描述

🤗 总结归纳

教你如何处理OB混淆,分析如何处理算法和补环境。
搜一搜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值