某顶象滑块验证码

⚠️前言⚠️

本文仅用于学术交流。
学习探讨逆向知识,欢迎私信共享学习心得。
如有侵权,联系博主删除。
请勿商用,否则后果自负。

网址

  • aHR0cHM6Ly93d3cuZGluZ3hpYW5nLWluYy5jb20vYnVzaW5lc3MvY2FwdGNoYQ==

1. 参数分析

1_1. 验证码信息下发接口参数 - /api/a

在这里插入图片描述

1_2. 验证接口参数 - /api/v1

在这里插入图片描述

1_3. 验证成功返回信息 - /api/v1

在这里插入图片描述

2. c1 接口 - Param

  • 说明: 该接口返回参数 c,目前我是固定的,但是对于一些定制化的验证码,可能会校验,这里简单说一下
    在这里插入图片描述
2_1. Param 生成位置,ajax断点,调试堆栈
  • 1
    在这里插入图片描述
  • 2
    在这里插入图片描述
2_2. 参数appKey可固定,lid 其实存在于localStorage中

在这里插入图片描述

2_3. 直接hook调试 _dx_uzZo5y 生成的位置,注意参数在外部函数时需要将断点断在外部函数,重新调试
  • 1
    在这里插入图片描述
  • 2
    在这里插入图片描述
  • 3
    在这里插入图片描述
  • 4
    在这里插入图片描述
  • 5
    在这里插入图片描述
2_4. 两处生成位置和方法找到之后,直接全局导出,补环境即可

在这里插入图片描述

3. 底图还原

3_1. 先来看一下原生的底图,长这样

在这里插入图片描述

3_2. 老规矩,我们使用canvas事件监听断点来调试一下,刷新验证码
  • 断点会断在这个位置,这就很明了了,drawImage方法就是canvas用来绘制图片的方法
  • drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 参数说明
  • image: 要绘制的图像对象
  • sx: 源图像中需要截取的矩形区域的左上角x坐标。
  • sy: 源图像中需要截取的矩形区域的左上角y坐标。
  • sWidth: 源图像中需要截取的矩形区域的宽度。
  • sHeight: 源图像中需要截取的矩形区域的高度。
  • dx: 目标绘制图像的左上角x坐标。
  • dy: 目标绘制图像的左上角y坐标。
  • dWidth: 目标绘制图像的宽度。
  • dHeight: 目标绘制图像的高度。
    在这里插入图片描述
  • 这里应该就是底图的还原位置了,而参数 t 就是图片的还原顺序
  • 多次刷新验证码,发现 t 一直在变化,所以我们需要看一下这个序列 t 是怎么生成的
    在这里插入图片描述
3_3 底图还原序列 t 的生成
  • 形参 t 是由实参 E 传递过来的,上翻一下就能找到 E 的生成位置
    在这里插入图片描述
  • 此处的 n 对象中的 ranges 属性就是我们需要的序列值
    在这里插入图片描述
  • 调试堆栈,最终会找到这个位置
    在这里插入图片描述
  • Pn就是最终生成的方法,而参数就是底图链接的 id 值
    在这里插入图片描述
  • 这里的js代码还是很简单的,是扣js还是算法还原大家随意,下面说一下需要注意的地方
1. 底图大小是 400x200
2. 上述底图还原序列的长度是 32,而且js在还原底图时,这32份是等分的,大小是 12x200
3. 最后一块需要单独处理,大小是 16x200

在这里插入图片描述

  • 最终还原结果
    在这里插入图片描述

4. ac 生成

4_1. ac生成位置
  • ac 生成的全部流程存在于 js 文件 greenseer.js 中,该文件每天的上午10点和下午7点更新, 因此需要动态获取
    在这里插入图片描述
    在这里插入图片描述
4_2. ac 初始化位置
  • greenseer.js - webpack 代码加载器,并且执行了3号模块,跟一下就会发现其初始化的位置
    在这里插入图片描述
    在这里插入图片描述
  • 不难发现其初始化的方法其实就存在于 window._dx.UA 中, 而参数n其实就是接口信息中返回的 sid 值
    在这里插入图片描述
    在这里插入图片描述
4_3. ac生成 - 轨迹,日志断点, 最终的 dx 值就是滑块的滑动距离

在这里插入图片描述
在这里插入图片描述

4_4. ac 生成 - sendTemp
  • 下一个需要注意的就是这个位置了
  • xn 是缺口距离底图边框的距离,不是滑块滑动的距离【也就是说滑块初始状态距离边框是 20】
  • kn 就是验证码信息接口返回的 y 值
    在这里插入图片描述
4_5. ac生成 - 基本流程总结,补环境出值
  • window._dx.UA.init 初始化
  • 滑动调用recordSA, 对轨迹进行加密
  • sendSA, sendTemp 生成 ua
    在这里插入图片描述

结果展示

在这里插入图片描述

在这里插入图片描述

欢迎私信交流学习。。。下班下班。。。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,美团滑块验证的js逆向过程如下所示: 1. 首先,需要获取主页接口的参数,包括csrf、uuid、token_id和continues等。这些参数可以在第一个链接返回的源码中找到。 2. 接下来,使用这些参数进行登入接口的请求,其中包括两个加密参数password和h5Fingerprint。 3. 然后,通过验证码获取的接口来获取验证码相关的参数,如verifyMethodVersion、slider、yodaVersion、timestamp、sign、ses和requestCode等。 4. 在获取到这些参数后,可以进行验证接口的请求。该请求需要使用到加密参数behavior和_token,以及动态参数v_c和3eac9809,同时还需要在请求头中添加Authencation。 总结起来,美团滑块验证的逆向过程可分为以下步骤: 1. 获取主页参数 2. 逆向pwd和h5Fingerprint 3. 请求page_data链接 4. 逆向Authencation、behavior和_token 5. 发起最终的验证请求 需要注意的是,以上仅是根据提供的引用内容进行的分析,具体的逆向过程可能还需要进一步的研究和分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【2023-03-10】JS逆向之美团滑块](https://blog.csdn.net/qq_26079939/article/details/129442967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [美团滑块(1-18,js逆向)](https://blog.csdn.net/weixin_44772112/article/details/128721509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傲娇的小苹果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值