首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【验证码逆向专栏】某验二代滑块验证码逆向分析

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

逆向目标

抓包情况

主页点击搜索就会跳出二代的验证码, 的请求,会返回 和 。

有个 的请求,返回了一个新的 ,这个请求之后的操作,都要用这个新的 ,不然是验证不成功的,其他的还有验证码背景图片、乱序图片地址、、 等值,之前写过三代的文章,都是类似的,这里就不一一分析了。

然后是 验证是否通过,通过之后返回一个 ,请求里同样是需要我们逆向的 参数:

然后同样还是 接口,带上 请求返回的 以及 返回的 ,请求拿到一个 的字段。

后续的搜索数据,带上这个 就行了:

逆向分析

搞过三、四代的都知道我们可以直接搜索 的 Unicode 值 即可定位,但是二代则不是 Unicode,而是16进制的编码,搜索 即可定位,当然按照正常流程,跟栈也能很容易找到加密的位置。

获取 H7z 值

从上图中可以知道 的值为 ,先看 。

跟进这个方法,来到一大串控制流,这里还是推荐用 AST 还原一下,后续可能有一些循环啥的,硬跟的话容易出错,当然直接全部扣一把梭也是可以的, 的核心其实就是 RSA 加密随机字符串,三代四代都有,这里就不细讲了。

获取 r7z 值

然后就是 ,主要由以下两句代码生成:

可以看到其中有个变量 参与了计算,先来看看他是怎么来的,直接搜索即可定位,可以发现同样是16进制的编码,由五个值组成:、、、、

获取 userresponse 值

挨个分析,首先是 ,将滑动距离和 的值传入一个方法,得到一个 9 位字符串:

上图中 就是滑动距离,搜索可以看到定义的地方,尺子量一下对比一下,和滑动的距离是一致的:

然后再来看看那个方法,跟进去之后也是一大串 控制流:

还原一下代码如下:

获取 passtime  值

 不用考虑是怎么通过函数获取的,含义就是滑动完成所花费的时间,直接取轨迹的最后一个值即可,这个也和三四代是一样的,获取语句为:,如下图所示,轨迹的最后一个值时间为 871, 的值同样也为 871。

获取 imgload 值

也没啥特别的,从字面意思猜测应该是图片加载耗时,实测直接写死即可,或者整个随机值就行。

获取 aa 值

的值就是 ,如下图所示:

搜索 ,定位到下图所示的地方,向一个方法中传入了一个时间戳:

跟进去同样是 控制流,需要注意的是下图中 的值其实就是轨迹。

这段控制流还原一下就变成这样了:

以上只是 第一次生成的地方,后面还有二次处理,如下图所示:

同样跟进去,三个传入的参数分别是第一次生成的 、 请求返回的 和 参数。

同样是一段控制流,还原后如下:

至此 参数分析完毕!

获取 ep 值

的值就是一个版本号,此处是 ,写死即可。

获取 rp 值

自此 的第一步生成就分析完毕了,注意接下来还有一步,向 里新增了一个 参数:

这个值的组成看起来很长,实际上是将 gt、challenge 前 32 位以及 passtime 相加经过 MD5 加密后得到的。

上图中 就是 MD5 方法,跟进去其实是可以看到很多 MD5 特征的,如下图所示:

自此 的值就搞定了,然后接着前面的看,也就是 的值,同样和三四代一样的, 是 AES 加密, 经过 处理为字符串作为待加密对象,后面是 16 为随机字符串作为 AES 的 Key,注意这里的随机字符串应该和获取 值时的随机字符串一致,不然是验证不成功的。

然后下一步就是获取 的值,将上一步得到的 经过一个方法进行处理,跟进方法,又是和三四代一样的,熟悉的 ,如下图所示:

直接扣代码,或者直接使用三代的代码即可:

获取 w 值

自此 的就已经出来了, 即为 的值。

结果验证

测试过掉验证码抓取数据成功:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230112A02M9Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券