type
status
date
slug
summary
tags
category
icon
password
这里写文章的前言:
一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。

AI辅助分析
概述
这段代码看起来是一个浏览器指纹识别和加密处理系统的一部分,可能用于网站认证、反爬虫或者用户跟踪。它收集浏览器信息,然后通过一系列加密和混淆步骤生成一个唯一标识符或令牌。
详细分析
1. FGq 对象
文件开始定义了一个大型的
FGq
对象,包含大量浏览器和系统信息:这个对象包含几个主要部分:
- 基本识别信息(版本、指纹等)
din
数组:包含浏览器详细信息,如用户代理、屏幕尺寸、语言等
mst
数组:包含各种度量和状态信息
- 其他配置和状态信息
这里的数据很可能是浏览器指纹的组成部分,用于创建一个唯一的识别标记。
2. 时间戳函数
这个简单的函数返回当前的时间戳(从1970年1月1日至今的毫秒数)。注意到它使用了
Date['now']()
而不是更常见的 Date.now()
,这可能是为了规避某些代码分析工具。3. 对象序列化
这一步将
FGq
对象转换为JSON字符串,并记录当前时间戳。同样,它使用 JSON["stringify"]
而不是 JSON.stringify
,可能是出于混淆目的。4. dH 函数
这个函数执行以下操作:
- 定义一个包含各种数字的
DG
数组,可能用作加密常量
- 定义几个工具函数:
c5
:右移位操作lh
:按位与操作WX
:取模操作
- 从输入参数
ZDn
中提取值(第一个是字符串,第二个是数字)
- 将字符串按冒号分割
- 使用一个基于位操作的算法在数组元素之间进行复杂的交换操作
- 最后将数组重新用冒号连接成字符串并返回
这个函数本质上是一个基于种子值(第二个参数)的洗牌算法,将输入字符串的各部分重新排序,产生混淆效果。
5. 字符映射函数
这个函数将输入字符串中的特定字符替换为对应的数字。映射关系存储在
X1
对象中,使用十六进制转义序列(如 \x32
表示字符 '2')作为键。6. EPq 函数
这是最复杂的函数,执行以下步骤:
- 定义多个辅助函数,如比较、位操作等
- 创建一个大型常量数组
DG
(与dH
函数中的相同)
- 创建一个包含127个元素的数组
lFq
- 填充一个字符串
hUq
,其中包含ASCII值32至126的可打印字符
- 对输入字符串
gbq
的每个字符进行基于MNq
种子的变换: - 使用位操作更新
MNq
值 - 检查字符的Unicode码点
- 基于计算出的索引替换字符
- 返回变换后的字符串
这个函数实现了一种简单的替换密码,但种子值和替换规则较为复杂。
7. 主要执行流程
这部分代码:
- 使用
dH
函数处理序列化的FGq
对象,种子值为1056437
- 输出中间结果
fnn
- 将结果传递给
EPq
函数,种子值为8888888
- 输出进一步处理后的结果
p
8. 结果组装
最后这部分代码:
- 记录处理结束时的时间戳
- 创建一个包含时间差和其他固定值的字符串
sDq
- 定义几个额外的变量和常量
- 将这些值组合成一个数组
TOq
,并用分号连接成字符串xcq
- 将
xcq
、sDq
和前面生成的p
用分号连接,形成最终结果result
- 输出最终结果
总体功能
这段代码的整体功能是:
- 收集浏览器和系统信息
- 将这些信息序列化为字符串
- 通过一系列加密和混淆步骤处理这个字符串
- 生成一个最终令牌,可能用于:
- 浏览器指纹识别
- 反爬虫措施
- 会话验证
- 用户跟踪
代码使用了多种混淆技术,包括:
- 使用方括号表示法访问属性而非点表示法
- 使用不透明的变量名(如
FGq
、dH
、lh
等)
- 大量使用位操作
- 复杂的字符串处理和变换
代码流程分析
分析代码的运行逻辑
环境参数解释如下:
首先他收集了很多环境。环境如下:
然后通过JSON格式化代码
第一次通过;分割然后进行位移运算
然后对时间戳进行分析看看耗时多久。
- 作者:猿榜编程
- 链接:https://www.yuanbang.lol//article/203202ba-3e23-8038-a84e-ccb2a6ceb945
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。