JS逆向之PDD(HK)---captcha_collect参数

本文详细探讨了一种网站的验证机制,涉及RSA加密的password和riskSign,AES加密的captcha_collect参数以及gzip加密的轨迹信息处理。文章指出,验证重点在于缺口位置的换算,而非轨迹校验,且opencv的模板匹配方法不适用,需要特定的换算方法。此外,还介绍了verify_code的神秘性,它与轨迹位置的换算有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章仅供参考,禁止用于非法活动


前言

目标网站:aHR0cHM6Ly9tbXMucGluZHVvZHVvLmNvbS9sb2dpbi8=


一、触发HK

标题

 

二、参数分析

 

1.验证图形验证码接口

头部加密参数;Anti-Content,其实就是一个webpack,so easy.本文章主要讲解HK验证。

 

先看看请求载荷:password和riskSign都是RSA加密

 

 riskSign: 'username=账号&password=密码&ts=时间戳'

然后请求下这个接口,拿到了verifyAuthToken

 

2.获取验证码图片接口,新出现了captcha_collect参数。含鼠标移动轨迹,可以写空。

 captcha_collect参数加密位置,,是AES加密,y,w分别是KEY,IV

U方法中传入参数e,e是有api/phantom/vc_pre_ck_b 接口返回的 salt: "b201376fe"值

//kye iv生成位置
U = function(e) {
        var t = {
            aes_key: W,
            aes_iv: I
        };

 

返回图片的信息,然而返回的并不是图片的base64编码,是经过加密的

图片解密在这个位置,接出来后就是base64编码的信息

 #背景图片保存
        image_bytes = base64.b64decode(bg)
        bg_img = Image.open(io.BytesIO(image_bytes))
        bg_img.save("bg.png" )

 三、提交验证接口,captcha_collect是需要的轨迹加密信息

verify_code这个东西很神秘,是换算后的缺口位置

 

 captcha_collect加密位置l(d(JSON.stringify(t)), y, w), d函数是gzip加密算法可以使用python实现,入口参数t是这么些东西,包含轨迹信息,浏览器指纹等

 

verify_code :这个东西很神秘,是换算后的缺口位置

参数都搞定后,最后发送请求看看,基本上成功率还是挺高的

 总结

最后总结下,这个轨迹是不校验的,主要是缺口位置,直接opencv模板匹配出来的是不对的,需要经过一定换算,然后这个verify_code,跟轨迹里的最终位置也是不同的,也需要一点的换算。

Rust语言中,Axum是一个异步Web框架,它本身并不直接提供验证码生成的功能。不过你可以结合其他库来实现这一功能。通常,要在Axum应用中添加验证码,可以采取以下步骤: 1. **安装依赖**:首先,需要安装一些辅助库,比如`rand`用于随机数生成,`captcha`或`actix-web-captcha`等验证码库。 ```sh cargo add rand actix-web-captcha ``` 2. **生成随机字符串**:使用`rand`库生成随机字符,例如字母、数字和特殊字符。 ```rust extern crate rand; use rand::Rng; let captcha_text = (0..4).map(|_| chars::random_ascii()).collect::<String>(); ``` 3. **验证码展示**:可以创建一个视图函数,将验证码文本作为响应发送给前端,并可能包含图像。 ```rust async fn generate_captcha() -> Result<String, Error> { Ok(captcha_text) } // 使用Axum路由处理请求 route!("/captcha", method!(GET), generate_captcha) ``` 4. **验证用户输入**:当用户提交表单时,服务端再次生成验证码并检查用户的输入是否匹配。 ```rust async fn verify_captcha(mut request: HttpRequest<Body>, body: String) -> Result<bool, Error> { let stored_captcha = get_stored_captcha(); // 获取存储的验证码 if stored_captcha == body { // 验证通过 Ok(true) } else { // 验证失败 Err("Incorrect captcha".into()) } } ``` 5. **保存验证码**:通常会把验证码存储在会话中,以便后续验证。 注意,这只是一个基本示例,实际应用中可能还需要考虑验证码图片的生成、防止恶意刷新等问题。具体实现细节可能会因选用的库而有所不同。如果你想要详细了解Axum配合某个特定库(如`actix-web-captcha`)生成验证码的详细教程,可以在网上搜索相关的Axum+验证码库的文档或教程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值