实战14-极验3风控

此风控是两次点击后随机出现无感/滑块/点选,未记录点选过程
极验3与极验4区别

image

一.第一次点击

image

1.请求接口

请求接口:https://api.geetest.com/get.php?.......

image

gt:在 https://www.anjuke.com/general/captcha/register?.....的接口响应中获取
challenge:在 https://www.anjuke.com/general/captcha/register?.....的接口响应中获取
w:aes+rsa加密结果

下面重点看w生成过程

2.w生成过程

进对应接口堆栈一个个看,找到加密出值位置

image

w = i+r
image

2.1加密值r-rsa

r= t[$_CEEJe(1170)](),进入t[$_CEEJe(1170)]()的函数中,看最终返回的值是t,在得到t值的地方都打上断点,看下图有setPublic是rsa的一个特性,其中还出现了e: 65537这是 RSA 的公共指数(转换成十六进制就是0x010001)

image

确认是rsa后就去找他的公钥,进入函数便能获取到公钥

image

image

接下来便可以组件rsa加密过程,rsa加密还需要一个参数是一个16位的随机值(此处简称e4)后面也需要这个值,并且要保持统一

2.2.加密值i-aes

o = $_BFr()[$_CEEIG(1131)](de[$_CEEIG(457)](t[$_CEEJe(387)]), t[$_CEEIG(1144)]()) ,i = p[$_CEEJe(1196)](o) 这是i生成方式,挨个分析t[$_CEEIG(1144)]():o中的第二个参数,这个就是上面e4,要保持一致,de[$_CEEIG(457)](t[$_CEEJe(387)]):o中的第一个参数如下图需要替换gt与challenge值

image

下面看函数如何对参数一和二进行加密生成o值;进入函数中将这段代码手动解混淆就会很明显,如图:iv 是 AES 等对称加密(尤其是 CBC 模式)的标志性参数,所以r = m['encrypt'](c, e, t, n)是cbc模式,iv为'0000000000000000'的aes加密

image

得到加密值后还需要,提取密文的 “数值数组” 和 “有效字节长度”才能得到与网页上相对应的s(等同于o值)值形式

image

得到o值,还需要加工一下p[$_CEEJe(1196)](o)才能得到i,进入函数查看生成情况,进入函数中把函数直接拿下来调用(可以给ai试试)将o值传参给这个函数就可以得到我都需要的i值了

image

后面w放入请求中就可以拿到响应的,响应中有c,s值,此处这个值无用处,但后面又出现一次c,s会用到,两次有区别请注意

所以第一次点击是 i :两个参数一个长string,一个e4,aes加密后提取密文的 “数值数组” 和 “有效字节长度”,将提取的数组再用自定义的算法,得到正确的i值
r:需要一个参数e4,然后通过rsa加密,最后w= i+r

二.第二次点击

1.请求接口

![image](https://img2024.cnblogs.com/blog/2861542/202512/2861542-20251226150253692-781107682.png)

与第一次点击相同,变化gt和challenge值,对w值进行解密

image

2.w生成过程

根据堆栈找到出值处

image

依旧挨个分析,先看参数,参数一是一个长string,里面只需要把rp改成动态其他不变即可,参数二是十六位随机数e4,rp是f"{self.gt}{self.challenge[0:32]}{6632}"的md5加密

image

c[$_CFFIf(92)]对两个参数进行加密,进入函数中查看,有点眼熟,是上面那个aes(能得到o值的函数)直接拿过来复用

再看,p[$_CFFIf(1196)],进入函数还是眼熟是上面那个被直接拿下来的函数,那也直接拿过来调用吧

第二次点击加密过程等同于第一次加密中i的生成过程,只是参数不同

3.响应

此处result会显示接下来出现的验证,success是无感,slide是滑块,click是点选,如果是无感的话还会有个validate值

image

image

三.验证无感/滑块

此处跳过点选,ddddocr在极验3点选中识别率太低,可以直接调用打码平台

1.无感

无感可以直接携带validate参数进行校验,校验响应结果携带history值则成功,可直接请求history链接

image

2.滑块

请求此接口获取滑块图片,极验3需要底图还原,计算滑块距离,记录滑块轨迹,并获取下c,s后面用,此处challenge会发生变化暂且记录为challenge2

image

2.1.w值

根据堆栈找加密,和第一次点击有点像,看一下加密是一模一样的只是参数不同,参数一:一个长string,参数二:16位随机数e4,下面主要分析参数一

image

2.2.w中加密参数

image
rp:同上md5加密值是:f"{self.gt}{self.challenge}{guiji[-1][-1]}"
passtime:轨迹结束的时间
aa:是轨迹,c,s,值的加密
userresponse:是滑块距离,challenge2的加密
"h9s9": "1816378497"这个字符组有些网站会校验,此网站中固定即可

yt[$_CAIAL(291)](o)是全部参数一,网上找o如何生成

image

打印key发现 userresponse=H(t, i[$_CAHJk(168)]),t是滑块距离,i[$_CAHJk(168)]是challenge2,加密的话直接进入H函数中把这个函数拿下来直接调用

aa = e,e是传参进来,去堆栈看找传参位置

image

这里一个个打印查看值,这里参数一轨迹内还有一层加密,参数二c,参数三s,
跟栈进去直接把函数拿下来,缺什么补什么

image

上面有奖此处w加密过程与第一次点击相同,所以将对应参数带入,进行求值便可

响应结果,也会得到一个validate值,同无感一致携带validate参数进行校验,校验响应结果携带history值则成功,可直接请求history链接

image

如有错误请各位大佬指出,感谢🙇‍

posted @ 2025-12-26 17:54  导弹*  阅读(22)  评论(0)    收藏  举报