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等显示设备 编码…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
