解密极验滑块验证码的w参数

2024-04-07 21:36

本文主要是介绍解密极验滑块验证码的w参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、极验请求分析
滑块测试网站入口

我们首先访问极验滑块验证码测试主页,以便获取后续请求中的url。

滑块验证过程抓包

通过抓包工具分析滑块验证过程,发现与第三代滑块验证码相比,第四代简化了验证过程,加密参数w的生成也变得简单了。

请求详解

adaptive-captcha-demo

请求介绍:极验第四代验证码测试主页,主要获取下个请求中的url。

请求参数:无。

请求响应:通过正则匹配下个请求的url。

adaptive-captcha-demo.js

请求介绍:获取w参数加密所需的参数captchaId。

请求参数:无。

请求响应:通过正则匹配captchaId参数的值。

load

请求介绍:获取验证码信息,包括验证码类型、背景图、滑块图等。

请求参数:captcha_id、challenge等。

请求响应:获取滑块轨迹等信息。

verify

请求介绍:极验验证请求,收集滑动轨迹,加密生成w参数。

请求参数:captcha_id、challenge、lot_number等。

请求响应:验证成功后获取seccode。

二、js破解前准备工作
gcaptcha4.js反混淆

通过AST语法树将混淆的gcaptcha4.js文件还原,以便后续分析。

找到w参数

在进一步分析w参数生成之前,我们需要找到w参数所在的位置,并准备好所需的函数和算法。

三、具体代码实现

from Crypto.Cipher import AES
import base64
import random
import hashlib

# AES解密函数
def decrypt_aes(w, key):
    cipher = AES.new(key, AES.MODE_ECB)
    decrypted = cipher.decrypt(base64.b64decode(w))
    return decrypted.decode('utf-8')

# 外部函数调用解密函数
def get_h(e, t):
    # 外部函数内部实现,需要根据实际情况填写
    pass

# 构造UUID函数
def uuid():
    # UUID生成函数实现,例如通过随机数生成
    return str(uuid.uuid1())

# 加密函数
def encrypt(e, t):
    # 加密函数内部实现,需要根据实际情况填写
    pass

# 获取lot_number
def get_lot_number():
    # 从上个请求响应中获取lot_number值
    return "4b4ef3e583444e0fb..."

# 获取w参数
def get_w(track, captcha_width):
    e = construct_e(track, captcha_width)
    lot_number = e["lot_number"]
    key = hashlib.md5(lot_number.encode()).digest()
    h = get_h(e, key)
    return encrypt(e, h)

# 其他辅助函数和对象构造函数等...

# 使用示例
if __name__ == "__main__":
    # 待解密的参数
    w = "c742e66584e3b20ad523c2ddff..."
    # AES解密所需的密钥,长度必须是16、24或32字节
    key = b"my_secret_key_1234"  # 示例密钥,需根据实际情况更改
    # 调用解密函数
    decrypted_w = decrypt_aes(w, key)
    # 打印解密后的参数
    print("Decrypted w parameter:", decrypted_w)

更多内容访问网站

这篇关于解密极验滑块验证码的w参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883733

相关文章

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取