某财富网滑块逆向

查看 20|回复 2
作者:HaveAnOrange   
声明
[color=]本帖仅供学习交流,严禁用于非法用途
,如有侵权,请联系本人删除
主题
某财富网滑块逆向
YUhSMGNITTZMeTlwTG1WaGMzUnRiMjVsZVM1amIyMHZkMlZpYzJsMFpXTmhjSFJqYUdFdmMyeHBaR1Z5ZG1Gc2FXUT0=
验证码请求流程
先大致浏览请求流程
相关参数:
  • browserid
  • ctxid: 接口返回
  • request

    browserid
  • 搜索 browserid, 发现是从cookie中取值 qgqp_b_id 而得
  • 搜索 qgqp_b_id, 有十几处,逐个查看,找到关键位置

    for (var e = Math.floor(9 * Math.random() + 1).toString(), t = 0; t
  • 可知browserid 一个 20 位的数字字符串,其中: 第一位是 1~9 的随机数字(不会为 0)。 后 19 位是 0~8 的随机数字(可能为 0,但不会为 9)

    request
  • 搜索 request 关键词, 找到相关加密位置

    data: {
        ctxid: n.ctxid,
        request: a.base64Encode(a.encrypt(o))
    }
  • 打断点,查看加密逻辑
  • u为待加密字符串
  • 尝试使用a.base64Encode(a.encrypt()) 函数加密字符串a,加密结果为 '0waYj+x1s7s=', 与常用加密方法对比,均不一致
  • 进入encrypt方法, 将encrypt函数丢给Deepseek, 确定是XXTEA算法
  • js扣出来可直接执行, 与浏览器加密结果对比,数据一致
  • 复现请求流程,获取到验证码图片

    图片还原
    验证码图片为乱序图片


    t3.jpg (117.62 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:43 上传

  • 尝试给canvas打断点,没断住,三脸疑问.jpg
  • 搜索img,发现有DecodeImg字样,断点查看



    微信图片_20250702092248.png (13.68 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:30 上传


  • 进入k函数,疑似为图片还原逻辑, 发现用于还原图片的数组


    微信图片_20250702093349.png (24.13 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:34 上传

  • 将还原逻辑丢给Deepseek, 尝试AI生成还原逻辑,还原图片



    ai-restore.jpg (18.36 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:42 上传


  • 三脸疑问.jpg & 人类早起驯服AI失败.jpg

  • F12检查元素,发现验证码是有 26*2个图片条堆叠而成,通过div的 background-position 属性控制


    微信图片_20250702093644.png (156.1 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:36 上传

  • k函数中u为对应的图片偏移量



    微信图片_20250702093756.png (25.63 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:38 上传

  • 根据u值裁剪图片并堆叠
  • 得到还原图片


    restore_image-v3.jpg (14.21 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:42 上传


    滑块距离识别
    借助开源库 captcha-recognizer 识别滑块移动距离
    # img_restored 为还原后的滑块背景图
    from captcha_recognizer.recognizer import Recognizer
    recognizer = Recognizer()
    box, confidence = recognizer.identify_gap(source=img_restored, is_single=True)
    box_x = box[0]
    distance = int(box_x - 8)
    print('距离', distance)


    微信图片_20250702095702.png (93.11 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:57 上传

    移动轨迹加密
    request: a.base64Encode(a.encrypt(o)) 处打断点,发现o包含鼠标移动轨迹
    appid=202503141611|ctxid=e7d20d53987048ffec6d033bbb94bc31|type=slide|u=51|d=0,0,0:1,0,20:4,0,36:7,0,52:12,-2,68:18,-2,82:25,-3,98:27,-3,115:30,-3,130:32,-3,146:33,-3,156:35,-3,171:38,-4,186:41,-5,202:44,-5,226:47,-5,242:49,-5,267:51,-5,288:51,-5,535|a=quoteapi|p=|t=535|r=0.967621342436788
    模拟鼠标移动轨迹
    基于三次(三阶)贝塞尔曲线生成移动轨迹
    def cal_trace(distance):
        def cubic_bezier_curve(x1, y1, x2, y2, x_cp1=1, y_cp1=2, x_cp2=2, y_cp2=-1, num_points=20):
            """
            生成三次贝塞尔曲线上的点。
            参数:
            x1, y1 -- 起始点坐标
            x2, y2 -- 终点坐标
            x_cp1, y_cp1 -- 第一个控制点坐标
            x_cp2, y_cp2 -- 第二个控制点坐标
            num_points -- 曲线上的点数
            返回:
            points -- 曲线上的点列表,每个点是一个(x, y)元组
            """
            # 生成一个从0到1的数列,用于计算贝塞尔曲线上的点
            t = np.linspace(0, 1, num_points)
            points = []
            # 遍历参数t的每个值,计算曲线上对应点的坐标
            for t_val in t:
                # 三次贝塞尔曲线的公式
                x = np.power((1 - t_val), 3) * x1 + 3 * np.power((1 - t_val), 2) * t_val * x_cp1 + \
                    3 * (1 - t_val) * np.power(t_val, 2) * x_cp2 + np.power(t_val, 3) * x2
                y = np.power((1 - t_val), 3) * y1 + 3 * np.power((1 - t_val), 2) * t_val * y_cp1 + \
                    3 * (1 - t_val) * np.power(t_val, 2) * y_cp2 + np.power(t_val, 3) * y2
                # 将计算得到的点添加到列表中
                points.append((x, y))
            # 返回曲线上所有计算得到的点
            return points
        x1, y1 = 0, 0
        # 目标点
        x2, y2 = distance, -1
        traces = cubic_bezier_curve(x1, y1, x2, y2, x_cp1=40, y_cp1=20, x_cp2=240, y_cp2=160)
        return traces
    滑块验证
    相同的算法构建request: a.base64Encode(a.encrypt(o))
    验证通过


    微信图片_20250702092840.png (33.82 KB, 下载次数: 0)
    下载附件
    2025-7-2 09:58 上传

    下载次数, 图片

  • 漁滒   

    什么操作下会出现这个滑块?我暂时还没遇到出现滑块
    HaveAnOrange
    OP
      


    漁滒 发表于 2025-7-2 11:01
    什么操作下会出现这个滑块?我暂时还没遇到出现滑块

    短信登录时会出
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部