虎ya登录滑块(3-6,js逆向)

2024-02-18 17:10
文章标签 登录 js 逆向 滑块 ya

本文主要是介绍虎ya登录滑块(3-6,js逆向),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网站地址:aHR0cHM6Ly93d3cuaHV5YS5jb20v

一、整体流程分析

1、访问df/token链接拿到encryptWebDeviceFeature加密相关的encryptSeed、token
2、访问df/collect链接拿到sdid
3、访问v2/smsCode链接拿到滑块链接(slide_url,另一个窗口)
4、访问3中返回的slide_url
5、访问safe_auth/pt_auth链接
6、访问metric.huya.com链接
7、访问client/config3链接,拿到滑块的相关数据(gurl、vurl...)
8、访问gurl链接拿到滑块底图以及huyapk、segment
9、访问vurl链接,验证滑块是否通过

二、根据流程逐个链接分析
1、df/token链接,无加密参数,正常请求即可

2、df/collec链接,加密参数为encryptWebDeviceFeature,加密方式为AES(ECB模式,key为上一步返回的encryptSeed),加密位置如下:
在这里插入图片描述

3、v2/smsCode链接,这里的context和behavior是我不确定的一个点,目前我也不知道他是否检测了,反正我写死滑块也能过,所以就不纠结了。携带的sdid是上一步返回的,requestId的生成方式如下,其他的固定就好

function guid() {var e = 1;var t = new Date;return e && 1 == e ? Date.UTC(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds()) - Date.UTC(t.getFullYear(), t.getMonth(), t.getDate(), 0, 0, 0, 0) : e && 2 == e ? Date.UTC(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds()) : "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g, function(e) {var t = 16 * Math.random() | 0, o = "x" == e ? t : 3 & t | 8;return o.toString(16)})
}

4、slide_url链接,返回的slide_url地址中有个param参数,需要用正则匹配下来,后面会用到

5、safe_auth/pt_auth链接,无加密,正常请求即可

6、metric.huya.com链接,有个data加密,加密位置如下:
在这里插入图片描述
这里校验了一些环境值,很多写死即可,改下sguid和its就可以了,这里涉及到两个加密的函数(toXCodeArray和xEncode),都很好扣,跟进去就行

7、client/config3链接,这里要把page改为上面所返回的slide_url,param改为步骤4中的param,然后其他参数我都固定了。这个链接返回了
请求滑块网址(gurl)、请求验证网址(vurl)、一段后面加密会用到的js,反正一大堆 稍微注意一下就行
在这里插入图片描述

8、访问gurl链接,拿到背景图(base64)、code、huyapk、segment,背景图是乱序的,还原的数组为segment,这里是先通过一些算法由segment生成一个15位的数组,代码如下:

//这里放之前返回的js
var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
atob1 = function(a) {var n = String(a).replace(/[=]+$/, "");if (n.length % 4 == 1)throw new t("'atob' failed: The string to be decoded is not correctly encoded.");for (var r, i, o = 0, s = 0, c = ""; i = n.charAt(s++); ~i && (r = o % 4 ? 64 * r + i : i,o++ % 4) && (c += String.fromCharCode(255 & r >> (-2 * o & 6))))i = e.indexOf(i);return c
}console.log(JSON.parse(atob1(window.UdbCipher.decrypt(segment, huyapk))).ord)

拿到真正的还原数组后,接下里就很好办了
在这里插入图片描述
9、vurl链接,这里唯一需要变的是act参数,其他的我都写死了,我总感觉写死不太好,但由于没业务需求,就没深究了,能过就行哈哈。act参数就是encodeURI一下,然后 btoa,最后经过一下之前返回的js里面的一个函数加密就出来了,比较简单 就不跟进去分析了。(不校验轨迹,固定即可

三、请求验证
在这里插入图片描述
总结:这个滑块总体而言较为简单,就是流程特别多,所以耐心点就好哈哈
溜了溜了,拜拜!

这篇关于虎ya登录滑块(3-6,js逆向)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/721852

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp