YJJ RS5代 环境

2024-03-22 16:50
文章标签 环境 yjj rs5

本文主要是介绍YJJ RS5代 环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注意: 本文章只说下 检测的环境点(其他相关rs5的东西网上能搜到很多了)

在这里插入图片描述

首先拿到第一次请求412状态码的源码 保存在本地 方便调试

这里面会引入外链 xxxx.js文件 里面就是关于$_ts相关的东西

然后第一段自执行js代码 在这里插入图片描述
通过call 可以 拿到 第二段eval执行的js代码 在这步的时候 $_ts的值已经被还原出来了

这时候保存下$_ts的值 和eval函数执行的第二段js代码

因为这段代码执行完之后 会把$_ts的值 置空

注意! 执行第一段js代码的时候要补一点环境 比较重要的就是document[‘scripts’]

document = {scripts: [{src: "/datasearch/1eeUmXQiFksL/fjtvkgf7LVI2.a670748.js",r: "m"},{r: "m"}],...}

接下来就是第二段 js代码

挂上代理之后 会发现很多undefined

哪些需要补的 需要到对应网站上 去看 它本身有没有这个东西 有些本来就是undefined就不要补了

贴上一部分环境

get  window chrome object
get  window.document documentElement object
get  window.document.documentElement style object
set  window _$Wi function
get  window UCWebExt undefined
get  window ucweb undefined
set  window _$Wi function
get  window qb_bridge undefined
get  window qbbookshelf undefined
set  window _$Wi function
get  window dolphin undefined
get  window dolphininfo undefined
get  window dolphinmeta undefined
get  window safari undefined
get  window orientation undefined
set  window _$Wi function
get  window ActiveXObject undefined
get  window navigator object
get  window.navigator mimeTypes object
set  window _$Wi function
get  window callPhantom undefined
...
...

补上之后

toString检测

代码运行中 会检测一些toString方法

比如eval setTimeout setInterVal Window 等等

函数的toString 就这样就行了

var func_str = Function.prototype.toString;Function.prototype.toString = function (){let temp = func_str.apply(this, arguments)if (this === Window){return 'function Window() { [native code] }'}else if(this === Document){return 'function Document() { [native code] }'}else if(this === Navigator){return 'function Navigator() { [native code] }'}else if (this === Location){return 'function Location() { [native code] }'}else if(this === window.setTimeout){return 'function setTimeout() { [native code] }'}else if(this === window.setInterval){return 'function setInterval() { [native code] }'}else if(this === navigator.getBattery){return 'function getBattery() { [native code] }'}else if(this === window.fetch){return 'function fetch() { [native code] }'}else if(this === window.HTMLElement){return 'function HTMLElement() { [native code] }'}else if (this === window.External){return 'function External() { [native code] }'}return temp
}

对象的toString

var obj_str = Object.prototype.toString;
Object.prototype.toString = function (){let temp = obj_str.apply(this, arguments)if (this === window){return '[object Window]'}else if (this === navigator){return '[object Navigator]'}else if(this === document){return '[object HTMLDocument]'}else if(this === location) {return '[object Location]'}else if (this === external){return '[object External]'}return temp
};

二、getBattery 方法检测 (获取电池信息)

这个方法在navigator下面

在这里插入图片描述
是个异步方法 这是个坑 异步方法会在同步函数执行完之后运行

    getBattery: () => { debugger;return new Promise(function(resolve, reject) {resolve({level: 1,charging:true,chargingTime:0,dischargingTime: Infinity,}); }).then();},

如果采用这种方式的话 加密参数长度不会加上去

所以补的时候要去hook它的then方法 变成同步执行, 不然cookie ,和接口的两个加密参数的长度不

会加上去

这样把他变成同步函数 立即执行就行了

    getBattery: () => {return {then: function (func){func({level: 1,charging:true,chargingTime:0,dischargingTime: Infinity,})}}},

三、源码最下面两个函数
在这里插入图片描述
在源码下面 还有两个函数

这两个函数 其实是在第二段js代码中 挂载到了window上
_$1T._$N9 = _$TU;
_$1T._$rS = _$eK;

这里的_$1T就是window
在这里插入图片描述
所以我们拿到这两个函数也需要执行下

这两个函数主要作用是在document.body下面创建了一个id__onload__隐藏的input标签 然后设置了 name value 属性的值

在这里插入图片描述

然后执行一些删除标签 节点操作 保存 这两个值

具体流程可以打断点进去看 步骤不多

四、open方法

XMLHttpRequest.prototype.open

这里面 检测了 document.createElement('a')

里面取了一些location的值 赋值到这个a标签上面

在这里插入图片描述
大概就这样吧

五、load事件

在第二段js代码运行过程中 会绑定7个load事件

    第一个load 事件  取document.getElementById("__anchor__")标签  null  绑定dbclick事件  不用管第二个load 事件  一些自动化工具检测第三个load 事件 触发了定时器 setInterval 绑定两个函数监测navigator userAgent standalone webkitPersistentStorage  window.indexedDB document.exitFullscreen window.chrome  等等后续load事件 通过setTimeout函数  检测div canvas webgl等各种节点属性 计算指纹值 放入localStorage

当你的localStorage没有指纹信息时 load事件里面会触发 setTimeout函数 然后再触发
document.createElemnt('div')
document.createElemnt('canvas')等相关操作
里面使用了各种dom的节点操作 以及canvas webgl的相关函数 toDataURL()等等 补的话相当麻烦

我的建议是 直接把指纹信息copy过来 就不用补了

六、鼠标事件

在第二段js代码运行过程中 会绑定一些mousemove mouseout等事件

 function _$CI(_$tT, _$bv, _$u5) {this[_$Dh[4]] = _$tT;this.x = _$bv[_$Dh[466]];this.y = _$bv[_$Dh[708]];this[_$Dh[241]] = _$u5;this[_$Dh[63]] = _$bv[_$Dh[63]];this[_$Dh[342]] = _$bv[_$Dh[342]];this[_$Dh[74]] = _$bv[_$Dh[74]];}

在这里插入图片描述
取了事件对象的这些属性 这些也要补上 不然加密出来的长度不够

    let mousemoveEvent = {"type": "mousemove","target": window,"timeStamp": 346565.7999999523,"screenX": 2287,"screenY": 512,"keyCode": undefined,"data": undefined,"button": 0,"offsetX": 343,"offsetY": 3,"x": 367,"y": 409};

好了, 大概就这些东西 里面其他坑很多 需要自己研究

附上成功请求图

在这里插入图片描述

在这里插入图片描述

如有违规:请联系我删除!!!!!!!!!!!!!
如有违规:请联系我删除!!!!!!!!!!!!!
如有违规:请联系我删除!!!!!!!!!!!!!

这篇关于YJJ RS5代 环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源