基于Python的AST极验解密

一、首先我们要准备一行代码。

将下面链接里的参数复制到js格式的文本中,通过jsTool插件美化一下代码,这里我编写为demo.js。

https://static.geetest.com/static/js/fullpage.8.9.5.js

经过美化后的代码大致是这个样子:

 随便看看也知道啥也看不懂,这个时候我们就需要分析一下这些代码的作用了。

观察代码发现里有很多地方调用了AJgjJ.DAi,搜索出515个匹配结果,如下图:

在匹配结果中有两类调用,如上图红框标示的

第一个:带括号的AJgjJ.DAi(79); 暂时不知道是在干啥;第二个,不带括号的AJgjJ.DAi,可以理解为

mZtVWz = ['qhicV'].concat(AJgjJ.DAi)

在这里concat()是合并数组的作用,而之后的几行代码调用的方式也都表示这里跟数组有关,通过索引就能取出值来,返回值都是字符串类型。

那么问题来了:如何将代码里的AJgjJ.DAi()还原成对应的字符串?

很快就能想到,在JS代码里将字符串"AJgjJ.DAi()“逐个匹配出来,拿到括号里的索引数字,然后将数字值传入函数AJgjJ.DAi()计算得到字符串结果,然后将结果替换代码里的字符串"AJgjJ.DAi()”,就实现了还原的目的了。

其实AST操作的话也差不多是这个思路,我们把代码复制到在线AST解析网站,看看在AST里是什么样子的。如下是ast的解析网站:https://astexplorer.net/

这里我们先借助浏览器观察一些代码中的内容,通过打断点的方式——

首先,编写demo.html将demo.js引入到浏览器中,编码如下:

<script src="./demo.js"></script>
<scr
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值