【JavaScript 逆向】dy滑块纯算,底图还原,captchaBody,轨迹算法,abogus

声明

本案例中所有内容仅供个人学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

一、抓包分析

在这里插入图片描述

触发验证码 将返回detail用于下个请求获取图片

通过detail获取图片, id , tip_y(这个后面轨迹需要用到,最开始一直没找到这个值)

通过轨迹生成的captchaBody 进行校验

流程比较简单,最头疼的是jsvmp,还有轨迹

二、mobile加密

直接进js抠出来就完事了,这里直接用Python改写

def mobile_encode(t):
    """
    异或运算(XOR)
    """
    t = '+86 ' + t

    def encode_char(c):
        code = ord(c)
        if 0 <= code <= 127:
            return [code]
        elif 128 <= code <= 2047:
            return [192 | 31 & code >> 6, 128 | 63 & code]
        else:
            return [224 | 15 & code >> 12, 128 | 63 & code >> 6, 128 | 63 & code]

    encoded = [encode_char(char) for char in str(t)]

    result = []
    for byte_list in encoded:
        for byte in byte_list:
            result.append(hex(5 ^ byte)[2:])

    return "".join(result)

三、底图还原

打开开发者工具可以算出 返回乱序图片和还原后的图片的缩放比

image-20240401201715419

image-20240401201617804

图片还原可以通过canvas断点找到js还原图片的方法

这里仅竖着切割,我们可以不用去扣js 顺序固定的 [4, 0, 3, 5, 2, 1]

直接改写Python实现还原

def parse_bg_captcha(img, save_path=None):
    """
    滑块乱序背景图还原
    还原前 h: 344, w: 552
    还原后 h: 212, w: 340
    :param img: 图片路径str/图片路径Path对象/图片二进制
        eg: 'assets/bg.webp'
            Path('assets/bg.webp')
    :param save_path: 保存路径, <type 'str'>/<type 'Path'>; default: None
    :return: 还原后背景图 RGB图片格式
    """
    if isinstance(img, (str, Path)):
        _img = Image.open(img)
    elif isinstance(img, bytes):
        _img = Image.open(io.BytesIO(img))
    else:
        raise ValueError(f'输入图片类型错误, 必须是<type str>/<type Path>/<type bytes>: {type(img)}')

    # 定义切割的参数
    cut_width = 92
    cut_height = 344
    k = [4, 0, 3, 5, 2, 1]

    # 创建新图像
    new_img = Image.new('RGB', (_img.width, _img.height))

    # 按照指定顺序进行切割和拼接
    for idx in range(len(k)):
        x = cut_width * k[idx]
        y = 0
        img_cut = _img.crop((x, y, x + cut_width, y + cut_height))  # 垂直切割
        new_x = idx * cut_width
        new_y = 0
        new_img.paste(img_cut, (new_x, new_y))

    # 调整图像大小
    # new_img = new_img.resize((340, 212))
    if save_path is not None:
        save_path = Path(save_path).resolve().__str__()
        new_img.save(save_path)

    img_byte_array = io.BytesIO()
    new_img.save(img_byte_array, format='PNG')
    img_byte_array = img_byte_array.getvalue()

    return img_byte_array

四、captchaBody

jsvmp 代码结构

image-20240401202454987

jsvmp一般采取补环境(是个webpack)和插桩本文主要讲解插桩日志分析他的算法

插桩分析

有很多个vmp 需要每个for循环处进行插桩,还有关键的运算位置需要单独打印出来

还有fromCharCode charAt charCodeAt都需要打印,有完整的日志才能更快更准的分析出。

console.log('待加密———>',m,'\n加密————>',b)

image-20240401204001440

日志中你会看到aes 和 sha512算法

image-20240401204123933

下面这段js你可能会需要用到

function hexStringToArrayBuffer(hexString) {
    // remove the leading 0x
    hexString = hexString.replace(/^0x/, '');
    
    // ensure even number of characters
    if (hexString.length % 2 != 0) {
        console.log('WARNING: expecting an even number of characters in the hexString');
    }
    
    // check for some non-hex characters
    var bad = hexString.match(/[G-Z\s]/i);
    if (bad) {
        console.log('WARNING: found non-hex characters', bad);    
    }
    
    // split the string into pairs of octets
    var pairs = hexString.match(/[\dA-F]{2}/gi);
    
    // convert the octets to integers
    var integers = pairs.map(function(s) {
        return parseInt(s, 16);
    });
    
    var array = new Uint8Array(integers);
    console.log(array);
    
    return array.buffer;
}

image-20240401205312029

轨迹

code:500,msg:"VerifyErr" //滑块缺口距离错误
code:500,msg:"VerifyModelErr" //滑块位置正确轨迹有问题

五、结果展示

这里就不讲太多了,有问题可以私信我。

abogus这里没有校验,下篇文章再讲。

image-20240401210846753

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 最新的TX滑块TDC纯算法开源代码是一种用于构建滑块验证码算法代码。滑块验证码是一种人机验证技术,它要求用户通过点击和滑动以解锁或进行其他操作,以确认用户是真实的,并防止机器人或恶意程序的攻击。这一算法代码的开源意味着人们可以自由地使用、修改和分享这个代码,使得更多的网站和应用程序能够受益于这种人机验证技术。 这个开源代码的特点是纯算法,即只包含实现滑块验证码功能的核心代码,没有与具体平台或具体编程语言相关的代码。这使得开发人员可以根据自己的需要和喜好,将这个算法代码集成到他们正在开发的项目中,不受任何平台或语言的限制。 这个算法代码使用了一些常见的技术手段来实现滑块验证码,比如使用HTML5的canvas元素进行绘制,使用javascript来控制用户操作和验证结果的判定。代码中还包含了一些优化技巧,以提高验证码的安全性和用户体验,比如使用随机生成的滑块位置,使用缩放和旋转等变换来增加滑块的难度,以及使用时间戳和session管理来防止重放攻击。 总之,最新的TX滑块TDC纯算法开源代码是一种可自由使用、修改和分享的滑块验证码算法实现,可以帮助开发人员增强网站和应用程序的安全性,并提高用户体验。 ### 回答2: 最新的TX滑块TDC(Time to Digital Converter)纯算法开源代码具有许多先进的特性和优势。该算法通过将时间信号转换为数字数据,实现高精度的时间测量。它在许多领域中都可以应用,例如雷达测距、光纤通信系统等。 这个开源代码的最大亮点在于其算法的高效性和准确性。它采用了一种创新的时间插值方法,能够更精确地计算信号的到达时间。通过与传统算法相比,它能够提供更高的分辨率和更低的测量误差。这对于需要高精度时间测量的应用非常有价值。 此外,这个开源代码还提供了一些优化功能,可以根据具体应用的需求进行灵活调整。可以通过调整参数来改变时间分辨率和测量范围,以适应各种场景。这使得它具有更广泛的适用性,可应用于各种不同领域的项目中。 该开源代码的另一个亮点在于其开放性和易用性。它以开源的形式提供给用户,使得用户可以自由地使用、修改和定制代码,以满足特定需求。此外,开发团队提供了完善的文档和示例代码,方便用户快速上手和使用。 总而言之,最新的TX滑块TDC纯算法开源代码具有高效性、准确性、灵活性和易用性等多个优点。它将为各种应用场景中需要精确时间测量的项目带来更高的性能和更多的选择。无论是学术研究还是工程应用,该开源代码都是一个值得关注和探索的重要资源。 ### 回答3: 最新tx滑块tdc纯算法开源代码是指针对滑块时间数字化电路(Time-to-digital Converter, TDC)算法进行优化和改进的开源代码资源。这个开源代码的目的是为了提供一种高效、准确、稳定的滑块tdc算法实现方案。 滑块tdc是一种用于将时间信号转换为数字信号的电路,在很多应用中都有重要的作用,比如测量高精度的时间间隔、相位差等。最新tx滑块tdc纯算法开源代码经过专业团队的研究和开发,力求提供一种更加准确可靠的算法实现方案。 该开源代码的特点包括: 1. 高精度:通过使用先进的算法和优化技术,代码实现了更高的测量精度,可以满足各种高精度的测量需求。 2. 高效率:代码优化了计算过程,提供了更高的计算效率,可以在较短的时间内完成复杂的计算任务。 3. 稳定性:通过对算法进行优化和改进,代码提供了更好的抗干扰能力和稳定性,减少了误差和偏差的影响。 4. 易用性:该开源代码提供了详细的文档和示例,使得用户可以快速上手并应用于自己的项目中。 通过最新tx滑块tdc纯算法开源代码,用户可以在各种应用中实现高精度的时间测量和数字化转换,满足各种高要求的时间信号处理需求。该开源代码的提供对于推动时间信号处理技术的发展具有重要意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值