js逆向--mytokencap.com站点code参数的破解

本次分析的网站:aHR0cHM6Ly93d3cubXl0b2tlbmNhcC5jb20v

1. 抓包

        本次要抓取的数据如下: 

        点击翻页按钮,发现网址没变化,说明数据的渲染是通过ajax异步加载出来的,通过抓包,发现以下接口,数据都在这个接口里边:

        查看它的请求参数:

        发现参数中的code比较可疑,经过测试,code和timestamp参数都是必要参数,缺一不可。而timestamp明显就是一个13为的时间戳,接下来就主要分析code的生成逻辑就好了。

2. 定位code加密位置

        通过全局搜索关键字 `code`, `code:`, 'code=',发现匹配出来的结果都比较多

        这时候可以换一种思维,搜索一下 `timestamp`, `timestamp:`, `timestamp=`,而其中 `timestamp=` 这个关键字之匹配到了两处,,如下:

        点进去第一个js文件,定位到如下代码,在该处下断点, 并点击下一页,断点生效。说明已经定位到code参数生成的入口。并且通过在控制台输出 `o()(n + "9527" + n.substr(0, 6))`,可以看到生成了code参数。

        code的生成逻辑:往函数 o 中传递一个参数,该参数是由 `时间戳+9527+该时间戳的前六位` 构成。

2. 分析code生成逻辑

        既然code参数是由 o 函数生成的,那就在控制台输出 o() 并点击,可以定位到o函数:

        通过分析,这个函数中最后的 e.bytesToHex(r) 是我们需要的参数:

        所以,该函数就可以简写为如下代码,其中t为 `时间戳+9527+该时间戳的前六位`,n为undefined:

function o(t, n) {
    var r = wordsToBytes(a(t, n));
    return bytesToHex(r)
}

         这样看起来简单明了,接下来就是正常的扣js代码,缺啥补啥,直到生成code。

3. 扣js代码

3.1 wordsToBytes 和 bytesToHex

        通过控制台输出如下这两个函数并点击,可以定位到这两个函数:

3.2 a函数

        通过同样的方法,可以定位到a函数

         这个函数比较长,全部复制下来。并且该函数里边有几个函数,需要再去扣一下

i.stringToBytes
r.stringToBytes
e.bytesToWords
a._ff
a._gg
a._hh
a._ii
endian

       这里我就不一一去扣了,自己上手扣一下,总的来说还是比较简单的。

4. 运行截图

ps:源码已经提交至 GitHub 中!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值