JS逆向之顶像滑块
本教程仅限于学术探讨,也没有专门针对某个网站而编写,禁止用于非法用途、商业活动、恶意滥用技术等,否则后果自负。观看则同意此约定。如有侵权,请告知删除,谢谢!
目录
一、接口请求流程
二、C1包
三、ac
四:测试结果
总结
前言
本期逆向一下顶像滑块,官网介绍:采用设备环境、行为特征、访问频率等多个风险判断要素,以及业内最丰富的验证方式帮助客户进行人机风险防控。并通过顶象防御云进行感知迭代, 能够有效拦截批量撞库扫号、批量注册等机器风险行为。
看起来很牛逼的勒,越牛逼越想肝他,简单的反而不想肝它,因为顶像滑块它的JS是动态的,参数、函数都是变化的,所以只能补环境,没法做到算法还原,怎么实现的函数动态?这也就不清楚了,函数一直没变只是加密顺序与参数变了,比如本来的加密流程是:A>B>C,它呢在一定时间能可能变成了:B>A>C的加密顺序.更多的介绍百度了,很多大佬对这方面详细解答了.
但是找到一个网站JS参数、函数是不变的,这大大减低了难度(了解一下流程补环境了相对也就简单),也就是说可以还原成python算法了😄
本期滑块练手网址:aHR0cHM6Ly93d3cudml2by5jb20uY24vc2VydmljZS9tb2JpbGVQaG9uZUF1dGhlbnRpY2l0eUNoZWNrL2luZGV4
提示:以下是本篇文章正文内容,下面案例可供参考
一、接口请求流程
1.先看看获取滑块图片的接口参数,大致看看也没什么重要参数,jsv的加密的JS版本(也就是之前介绍的动态参数函数所对应的版本,不过这个网址是定制的,不会变的,所以固定就好了),ak是产品id,aid呢是时间戳加随机数,w、h、s等这些参数就不介绍了用处不是很大,固定就好了,
2.在看响应内容有什么玩意,p1、p2就是滑块了不过呢是撕裂的,需要通过o值去还原撕裂的图像,老版本的顶像不是通过o值,可以看下我之前的图像还原,算法还是一样的算法,只不过从url提值变成了o,减少了url提值的步骤摆了。还有一个y、sid值后面加密要用,其它的没啥鸟用了.

3.验证接口/api/v1,这个就是最好一步了,验证滑块了,恶心人的ac它来了不过问题不大,sid就是滑块的安全验证id咯,c值是通过c1两个包请求得来的,aid呢嘿嘿发现了吧有什么不同自己领悟,xy就不用说了

4.c1两次请求包,请求头的Param咯,又是长长的一串欸,问题大吗?应该问题不大吧.
好了,吉时已到,是时候上邢法了

二、C1包
图像还原呢就不说了,看我之前的文章
1.看下c1这两次请求有什么吧,第一次请求的包,老办法anonymous一顿乱点

2.下个断点加密了什么一目了然,简单还原下python算法,其它网站的就不要想着还原了,都是动态的,我只是想借此让你们了解一下顶像的流程
import time
import json
import math
import randomdef get_lid():a = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"return "".join(a[math.floor(random.random() * len(a))] for _ in range(32))def getParam(data, lid=None):if lid is None or not data.get("lid", False):lid = str(int(time.time() * 1000)) + get_lid()data["lid"] = lidu = "=x1LItAH4sf8gp6ewnXQTiKuF_5EkC2m7WjdrM"f = "UlGhvYo3aRzcq-VPyJBb9NZOD0S"o = (u + f)[::-1]if not isinstance(data, str):data = json.dumps(data, separators=(",", ":"), ensure_ascii=False)g = ""len_data = len(data)for p in range(0, len_data, 3):i = ord(data[p])a = ord(data[p + 1]) if p + 1 < len(data) else 0u = ord(data[p + 2]) if p + 2 < len(data) else 0f = i >> 2c = ((3 & i) << 4) | (a >> 4)s = ((15 & a) << 2) | (u >> 6)ll = 63 & uif not a:s = ll = 64elif not u:ll = 64g += o[f] + o[c] + o[s] + o[ll]return g

3.第二次请求,还是一顿乱点进去看看在哪加密的

4.加密的代码还是刚刚的加密,只不过内容变了而已简简单单搞定C1

5.验证一下结果,成功拿到响应的data数值![]()
三、ac
1.除了ac其它都搞定了,很好接下来看看它怎么搞的,乱披风锤法,瞎几把乱点

2.进来大致看下吧,我总共下了两个断点两个插桩日志
第一个断点:这个是对滑块轨迹进来加密,与xy轴加密
第二个断点:刚开始拿到滑块呢,进来reload重载ua(ac)加密
第一个插桩:我主要用来打印轨迹,因为我在其它地方进行了轨迹push
第二个插桩:对加密完成的ac打印出来

3.进来看看reload(重载)干了啥事情咯,看懂了吗?朋友们?ok这里检测浏览器的环境就自己慢慢扣了,也不多
function () {var i = r[133], a = this;this["ge" + E + en](),// 1.检测时间this[t[134]](),// 2.检测浏览器this[kt(e[139])](),// 3.检测防盗链this[Zt(r[134])](),// 4.检测代码this[e[140]](),// 5.检测浏览器高度,画图用this[n[137]](),// 6.检测自动化this[Kt(on + M)](),// 7.检测js版本this["getTK"](),// 8.检测sid(token)Rt[Kt(an + i)][Qt(r[135])](function () {a[t[135]](),// 9.检测screena[Nt(o[133])]()// 10.监听轨迹})
}

4.简单介绍一下第10个检测吧,绑定的监听轨迹吧,欸哟喂,还是挺多了监听了一大堆,自己慢慢调式吧,相信你能找到对轨迹数组加密的地方,这下知道为什么我第一个插桩push明文的轨迹了吧,用于加密对比.

5.看下sendSA,这个是对被加密的轨迹数组进行app加密到ua(ac)中,sendTemp就是x轴与滑块接口的y轴了,OK整体流程就这样搞定,扣下来吧不难的

6.小提示:大部分加密都是围绕app这个函数加密的,实在找不到轨迹的加密,可以尝试着断点app,根据栈去找到轨迹的加密

四:测试结果
基本都成功了,二次验证滑块多了才会触发,也是正常通过的,二次验证的坑自己慢慢领悟了,上面也有介绍了,看你有没有注意到了

总结
以上就是顶像的所有埋坑,能搞定这个的话,其它网站的滑块相信你也能将环境补出来,再见咯~

相关文章:
JS逆向之顶像滑块
本教程仅限于学术探讨,也没有专门针对某个网站而编写,禁止用于非法用途、商业活动、恶意滥用技术等,否则后果自负。观看则同意此约定。如有侵权,请告知删除,谢谢! 目录 一、接口请求流程 二、C1包 三、ac 四…...
【css】textarea-通过resize:none 禁止拖动设置大小
使用 resize 属性可防止调整 textareas 的大小(禁用右下角的“抓取器”): 没有设置resize:none 代码: <!DOCTYPE html> <html> <head> <style> textarea {width: 100%;height: 150px;padding: 12px 20p…...
Linux内核学习小结
网上学习总结的一些资料,加上个人的一些总结。 Linux内核可以分成基础层和应用层。 基础层包括数据结构,内核同步机制,内存管理,任务调度。 应用层包括文件系统,设备和驱动,网络,虚拟化等。文件…...
八、ESP32控制8x8点阵屏
引脚的说明如下 上图中 C表示column 列的意思,所有的C接高电压,即控制esp32中输出1L表示line 行的意思,所有的L接低电压,即控制esp32中输出为01. 运行效果 2. 点阵屏引脚...
使用gitee创建远程maven仓库
1. 创建一个项目作为远程仓库 2. 打包项目发布到远程仓库 id随意,url是打包到哪个文件夹里面 在需要打包的项目的pom中添加 <distributionManagement><repository><id>handsomehuang-maven</id><url>file:D:/workspace/java/2023/re…...
基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章
今次介绍一个应用程序单例唯一运行方案的代码。 我们知道,有些应用程序在操作系统中需要单例唯一运行,因为程序多开的话会对程序运行效果有影响,最基本的例子就是打印机,只能运行一个实例。这里将笔者单例运行的代码共享出来&…...
2023-08-07力扣今日二题
链接: 剑指 Offer 29. 顺时针打印矩阵 题意: 如题 解: 麻烦的简单题,具体操作类似走地图,使用一个长度四的数组表示移动方向 我这边的思路是如果按正常的方向没有路走了,那转向下一个方向一定有路&am…...
Spring接口ApplicationRunner的作用和使用介绍
在Spring框架中,ApplicationRunner接口是org.springframework.boot.ApplicationRunner接口的一部分。它是Spring Boot中用于在Spring应用程序启动完成后执行特定任务的接口。ApplicationRunner的作用是在Spring应用程序完全启动后,执行一些初始化任务或处…...
奶牛排队 java 思维题
👨🏫 5133. 奶牛排队 题目描述 约翰的农场有 n n n 头奶牛,每一头奶牛都有一个正整数编号。 不同奶牛的编号不同。 现在,这 n n n 头牛按某种顺序排成一队,每头牛都拿出一张纸条写下了其前方相邻牛的编号以及其…...
uniapp 微信小程序 判断数据返回的是jpg还是pdf,以及pdf预览
<template> <view class"approval-notice"><block v-for"(imgItem, idx) in drivingLicense" :key"idx">//如果是非图片,那就走pdf预览<view class"pdf-item" v-if"Object.keys(thumbnail).incl…...
SpringBoot 的事务及使用
一、事务的常识 1、事务四特性(ACID) A 原子性:事务是最小单元,不可再分隔的一个整体。C 一致性:事务中的方法要么同时成功,要么都不成功,要不都失败。I 隔离性:多个事务操作数据库中同一个记录或多个记录时,对事务进…...
Android中的ABI
Android中的ABI ABI是Application Binary Interface的缩写。 ABI常表示两个程序模块之间的接口,且其中一个模块常为机器码级别的library或操作系统。 ABI定义了函数库的调用、应用的二进制文件(尤其是.so)如何运行在相应的系统平台上等细节…...
Python爬虫在用户行为模型构建中的应用与挑战
嗨,大家好!作为一名专业的爬虫代理,我今天要和大家分享一些关于爬虫与人类行为分析的知识。在数字化时代,我们每天都在互联网上留下大量的数据痕迹,通过分析这些数据,我们可以理解用户行为、性偏好和需求&a…...
LangChain与大模型的学习
这里写目录标题 问题记录1、库的版本问题 实例记录1、公司名生成2 提示模板的使用3LLM Chain 参考资料 问题记录 1、库的版本问题 openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(hostapi.openai.com, port443): Max retries excee…...
C语言标准定义的32个关键字
欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。 …...
PE半透明屏是怎么制造的?工艺、材料、应用
PE半透明屏是一种新型的屏幕材料,具有半透明的特点。 它由聚乙烯(PE)材料制成,具有良好的透明度和柔韧性。PE半透明屏广泛应用于建筑、广告、展览等领域,具有很高的市场潜力。 PE半透明屏的特点之一是其半透明性。 它…...
linux文本三剑客---grep,sed,awk
目录 grep 什么是grep? grep实例演示 命令参数: 案例演示: sed 概念: 常用选项: 案例演示: awk 概念: awk常用命令选项: awk变量: 内置变量 自定义变量 a…...
leaflet-uniapp 缩放地图的同时 显示当前缩放层级
记录实现过程: 需求为移动端用户在使用地图时,缩放地图的同时,可以获知地图此时缩放的级别。 效果图如下:此时缩放地图级别为13 map.on() 有对应的诸多行为 查看官网即可,这里根据需要为--zoomstart zoom zoomend 代…...
[Securinets CTF Quals 2023] Admin Service,ret2libc,One is enough
只作了3个pwn,第4个附件没下下来,第5个不会 Admin Service 这是个最简单的题,最后来弄出来。原来只是看过关于maps文件的,一直没什么印象。 题目一开始设置seccomp禁用execv等,看来是用ORW,然后建了个mm…...
计算机组成原理-笔记-第二章
二、第二章——数据的表示和运算 1、进位制度(二进制、十进制) 2、BCD码(余三码、2421码) 编码方式 功能 好处 弊处 BCD码 将每个十进制数码转换为4位二进制码 精度高,适合直接用于数码管或LED等显示设备 编码…...
Phi-4-mini-reasoning vLLM部署避坑指南:日志排查、加载失败诊断与修复步骤
Phi-4-mini-reasoning vLLM部署避坑指南:日志排查、加载失败诊断与修复步骤 1. 模型简介与环境准备 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据,并进一步微调以提高更高级的数学推理能力。…...
AI手势识别与追踪:Android端5分钟快速集成教程(附彩虹骨骼效果)
AI手势识别与追踪:Android端5分钟快速集成教程(附彩虹骨骼效果) 1. 引言 1.1 手势识别的价值 想象一下,不用触碰屏幕就能控制手机——这不是科幻电影,而是AI手势识别技术带来的真实体验。从智能家居控制到AR游戏交互…...
PhotoScan软件在无人机航测数据处理中的高效应用流程
1. 无人机航测数据处理入门指南 第一次接触无人机航测数据处理的同学可能会觉得这是个高大上的技术活,其实只要掌握了PhotoScan这个神器,处理起来比想象中简单得多。我刚开始接触时也走了不少弯路,现在把最实用的经验分享给大家。 PhotoScan是…...
仅限首批内测开发者获取:CPython无GIL预编译二进制+无锁标准库API速查表(含ABI兼容性矩阵与降级熔断方案)
第一章:Python无锁GIL环境下的并发模型概览Python 的全局解释器锁(GIL)长期被视为多线程 CPU 密集型任务的瓶颈。然而,随着 CPython 3.13 的正式引入“实验性无锁 GIL”(--without-pymalloc 配合 --with-gildisabled 构…...
FPGA开发流程全解析:从Verilog代码到硬件实现的7个关键步骤
FPGA开发实战指南:从代码到硬件的全流程精要 在电子设计自动化领域,FPGA开发因其灵活性和高性能优势,正成为越来越多工程师的首选方案。不同于传统ASIC开发的漫长周期和高昂成本,FPGA允许设计者在硬件层面进行快速迭代和验证&…...
上市公司数字化转型指数(2007-2024)Word2Vec扩充+TF-IDF
上市公司数字化转型指数(2007-2024)Word2Vec扩充TF-IDF数据名称:A股上市公司数字化转型指数 时间跨度:2007年-2024年 数据格式:Excel表格(dta可直接导入) 包含指标:股票代码、年份、…...
Video-subtitle-remover:让视频创作者实现硬字幕无痕去除的AI解决方案
Video-subtitle-remover:让视频创作者实现硬字幕无痕去除的AI解决方案 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。A…...
拯救受损二维码:用QRazyBox实现高效恢复的4个实战策略
拯救受损二维码:用QRazyBox实现高效恢复的4个实战策略 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox QRazyBox是一款专业的二维码分析与恢复工具包(QR Code Analysis …...
OrCAD Capture CIS DRC矩阵设置实战:如何自定义ERC检查规则
OrCAD Capture CIS DRC矩阵深度定制指南:从基础配置到高阶规则设计 1. 理解DRC矩阵的核心价值与应用场景 在复杂电路设计领域,标准化的设计规则检查(DRC)往往无法满足特殊元件的连接验证需求。OrCAD Capture CIS的ERC矩阵功能正是为解决这一痛点而生——…...
