各位肯定被akamai鼠标轨迹、点击事件、键盘事件,网页交互困扰
那么我们就研究一下鼠标轨迹、点击事件

AST解混淆, 拿到解混淆后的代码,
如下,sensor_data就是我们要搞的参数
如何解混淆这里就不赘述了,需要的可以看我上一篇文章!

在这里插入图片描述

开始之前,先讲一下分析思路
第一:首先有了全局的obj,那完全可以把obj作为一个日志功能,通过obj看函数的执行流程,就是要逆向的主流程
第二:akm有大量的数值计算,只扣部分数值,会影响其他数值的计算不成功,所以我计划扣整个流程,一比一还原执行流程

那么正片开始
1、前期步骤:相关代码,全部拿下来,缺什么补什么

找到目标参数: sensor_data, 把整个函数拿下来
如下:可以看到:Yun就是我要的参数, 而Yun又来自tEn

// 生成值 函数
var Qvn = function () {var w7n = false;var b7n = pV(lm(z8n["ajTypeBitmask"], E7n), 0) || pV(lm(z8n["ajTypeBitmask"], K7n), 0);var AFn = pV(lm(z8n["ajTypeBitmask"], cJn), 0);if (sQ(z8n["aprApInFlight"], false) && AFn) {z8n["aprApInFlight"] = true;w7n = true;}z8n["ajTypeBitmask"] = 0;// var xJn = fD();// xJn["open"]("POST", VFn, true);// xJn["onloadend"] = function () {//     qvn && qvn(xJn, w7n, b7n);// };var YUn = Fx["JSON"]["stringify"](tEn);var EZ = "{\"sensor_data\":"["concat"](YUn, "}");// console.log(EZ)sensor_data.push(EZ);Qxn = 0;
};

往前找堆栈,tEn是在下方这个函数生成的,
可以看到该函数有很多值,直接全扣下来(重点)

// tEn生成函数
var pln = function (Xvn, Dln, input_list) {// tEn生成函数var vcn = 0;var B7n = {};var QJn = false;vcn = q3();var qgn = c1(q3(), Fx["window"].bmak["startTs"]);var hZ = "do_en";var VNn = "dm_en";var JEn = "t_en";var gNn = ""["concat"](hZ, ",")["concat"](VNn, ",")["concat"](JEn);// ffs 生成函数var Gbn = '0,-1,0,0,-1,-1,0;' + phn(input_list) + '0,-1,0,0,2108,2108,0;';var EEn = Fx["document"]["URL"]["replace"](new Fx["RegExp"]("\\\\|\"", "g"), "");// ajt 生成地方,bcn 在轨迹处会进行赋值, Cxn是定时任务, 1000ms 会自增 1var Tvn = ""["concat"](bcn, ",")["concat"](Cxn);if (QM(bxn["fpValCalculated"]) && (sQ(dnn, false) || EG(Cxn, 0))) {bxn = Fx["Object"]["assign"](bxn, PB(), {"fpValCalculated": true});}var Bbn = Rz(),F7n = Sbn(Bbn, 4),Cbn = F7n[0],tJn = F7n[1],MUn = F7n[2],VEn = F7n[3];var wNn = md(),JZ = Sbn(wNn, 4),PNn = JZ[0],Egn = JZ[1],chn = JZ[2],bUn = JZ[3];var LCn = RY(),CCn = Sbn(LCn, 6),bZ = CCn[0],wln = CCn[1],RJn = CCn[2],Znn = CCn[3],Kbn = CCn[4],G8n = CCn[5];var qZ = Fk(Fk(Fk(Fk(Fk(Cbn, tJn), nEn), fCn), MUn), VEn);。。。

扣这个函数的时候,会有很多值,在之前也能找到声明,拿下来就行

在这里插入图片描述

剩下的流程就是,一点一点扣环境数组的生成逻辑
当出现完整的数组环境,那就前期就ok了

在这里插入图片描述

下边就需要注意 tEn函数的执行流程 他如何被触发?
get请求一次,获取js文件
post两次,两次位置分别在哪里

在这里插入图片描述
在这里插入图片描述

重点:默认只有两次发包,操作鼠标点击才会发第三次post包,设置cookie为~0~

在这里插入图片描述

我们把断点放在tEn函数调用的地方
操作鼠标,滑动 — > 然后点击
就能断到事件类型的发包,可以看到Cgn函数

在这里插入图片描述

可以看到,传入了两个参数 : Axn, Cvn
Axn: 存放我们的轨迹信息,有x y轴坐标信息
Cvn:事件类型: 1:是正常收集轨迹, 3:点击事件

var Cgn = function (Axn, Cvn, input_list) {var dNn = Mz(Axn, Cvn, Fx["window"].bmak["startTs"]);nhn += dNn["ts"];if (dnn && dNn["eventLimitBiometricAutopost"]) {bcn = 4;// Fcn(QM(1), dNn[Vj()[gk(bm)](TO, QM({}), Ek, f8)]);} else if (dnn && sQ(Cvn, 3)) {bcn = 1;d8n = true;set_w8n()Fcn(false, input_list);}if (dnn && QM(d8n) && sQ(dNn["mmeCnt"], 20)) {bcn = 11;// set w8nset_w8n()Fcn(false, input_list);}
};

函数内部: Mz函数
拼接轨迹次数、标识、轨迹时间间隔、x坐标、y坐标
需要注意:参与计算了环境数组很多值!

var Mz = function (vL, Us, rD) {var qd = 0;var h9 = false;if (sQ(1, 1) && C2(1, 100) || CR(Us, 1) && C2(0, 75)) {var QK = vL;var mY = -1;var sI = -1;if (QK && QK["pageX"] && QK["pageY"]) {mY = Fx["Math"]["floor"](QK["pageX"]);sI = Fx["Math"]["floor"](QK["pageY"]);}var Ep = QK["toElement"];// if (Td(Ep, null)) Ep = QK["target"];var XW = Hq(Ep);qd = c1(q3(), rD);var R3 = ""["concat"](ZD, ",")["concat"](Us, ",")["concat"](qd, ",")["concat"](mY, ",")["concat"](sI);// if (UK(typeof QK["isTrusted"], "undefined") && sQ(QK["isTrusted"], QM({})))//     R3 = ""[Sk()[mQ(UP)].call(null, IX, sC, zs)](R3, GQ()[O6(St)](IY, ZF));R3 = ""["concat"](R3, ";");Ap = Fk(Fk(Fk(Fk(Fk(Ap, ZD), Us), qd), mY), sI);g3 = Fk(g3, R3);}if (sQ(Us, 1)) WY++; else mL++;ZD++;var K4;return K4 = {"ts": qd, "eventLimitBiometricAutopost": h9, "mmeCnt": WY}, K4;
};

收集轨迹
这个时候可以用全局的obj
记录收集轨迹信息

在这里插入图片描述

喂给AI
让AI帮我们生成轨迹函数

function generateMouseList() {var mousList = [];var x = D2_21([700, 800]);var y = D2_21([300, 500]);var numPoints = D2_21([100, 200]);// 随机生成鼠标轨迹for (var i = 0; i < numPoints; i++) {// 随机坐标变化,假设变化范围为-5到5var dx = Math.floor(Math.random() * 11) - 5;  // x坐标变化范围 [-5, 5]var dy = Math.floor(Math.random() * 11) - 5;  // y坐标变化范围 [-5, 5]// 更新坐标x += dx;y += dy;// 防止坐标超出范围 (例如屏幕尺寸或界面限制)x = Math.max(0, Math.min(1920, x));  // 假设屏幕宽度为1920y = Math.max(0, Math.min(1080, y));  // 假设屏幕高度为1080// 随机生成时间戳,保证时间流逝var timestamp = Math.floor(Math.random() * 1000) + 10000;// 假设每个点的类型 1 表示常规点,最后一个点为 3 表示结束var type = (i === numPoints - 1) ? 3 : 1;// 保存轨迹// mousList.push([x, y, timestamp, type]);mousList.push([x, y]);}return mousList;
}

最后拼接完整的流程 :
1、get请求 页面
2、post —>第一次 发包
3、post —>第二次 发包
4、计算轨迹信息
5、post —>第三次 发包

在这里插入图片描述

网站测试

在这里插入图片描述

某adidas

在这里插入图片描述
ok,完成~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95454.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95454.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/95454.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞算JavaAI开发全流程解析:从自然语言到可运行工程的智能进化

引言 在数字经济时代&#xff0c;企业级应用开发面临着需求多变、交付周期紧、质量要求高的三重挑战。传统Java开发模式依赖人工进行需求确认、架构设计、代码编写和测试验证&#xff0c;导致开发效率低下、沟通成本高企。据统计&#xff0c;一个中等规模的项目需要平均8周完成…

垃圾回收标记算法:三色标记

文章目录1 三色标记流程1.1 初始标记1.2 并发标记1.3 重新标记1.4 清除阶段&#xff08;Sweep&#xff09;1.5 为什么初始标记和重新标记需要STW&#xff0c;而并发标记不需要?2 并发标记的写屏障3 多标问题4.漏标问题4.1 漏标的两个必要条件4.2 解决方案一&#xff1a;增量更…

反射的详解

目录一、反射1.JDK,JRE,JVM的关系2.什么是反射3. 三种获取Class对象(类的字节码)的方式4.Class常用方法5. 获取类的构造器6.反射获取成员变量&使用7.反射获取成员方法8.综合例子一、反射 1.JDK,JRE,JVM的关系 三者是Java运行环境的核心组成部分&#xff0c;从包含关系上看…

Grafana Tempo日志跟踪平台

以下是Grafana Tempo文档的总结&#xff08;基于最新版文档内容&#xff09;&#xff1a; 核心概念 分布式追踪系统&#xff1a;Tempo是开源的分布式追踪后端&#xff0c;专注于高吞吐量、低成本存储和与现有监控生态的深度集成 架构组成&#xff1a; Distributor&#xff1a…

Qt基本控件

Qt 的基本控件是构建用户界面的基础&#xff0c;涵盖了按钮、输入框、容器、显示组件等&#xff0c;适用于传统 Widget 开发&#xff08;基于 QWidget&#xff09;。以下是常用基本控件的分类总结&#xff1a;一、按钮类控件用于触发交互操作&#xff0c;如提交、取消、选择等。…

用Voe3做AI流量视频,条条10W+(附提示词+白嫖方法)

最近 AI 视频的风从大洋彼岸吹过来&#xff0c;Voe3 的技术升级&#xff0c;诞生了很多很有意思的玩法。 比如&#xff1a;AI ASMR 切水果解压视频&#xff0c;卡皮巴拉旅行博主、雪怪 AI Vlog&#xff0c;动物奥运会、第一人称视角穿越古战场直播。 这些视频的流量很好&…

嵌入式学习的第四十八天-中断+OCP原则

一、GIC通用中断控制器 1.GIC通用中断控制器 GIC 是 ARM 公司给 Cortex-A/R 内核提供的一个中断控制器&#xff0c;GIC接收众多外部中断&#xff0c;然后对其进行处理&#xff0c;最终通过VFIQ、VIRQ、FIQ 和 IRQ给内核&#xff1b;这四个 信号的含义如下&#xff1a; VFIQ:虚拟…

一周学会Matplotlib3 Python 数据可视化-绘制条形图(Bar)

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib&#xff0c;学习Matplotlib图形参数基本设置&…

阿里研发效能提升【60篇】

阿里研发效能提升【60篇】 1、建立研发效能提升的系统框架 01、《从DevOps到BizDevOps&#xff0c;研发效能提升的系统方法》 视频版&#xff1a;2021云栖大会云效BizDevOps论坛 文字版&#xff1a;深度 | 从DevOps到BizDevOps, 研发效能提升的系统方法-阿里云开发者社区 …

面试实战 问题二十六 JDK 1.8 核心新特性详解

JDK 1.8 核心新特性详解 1. Lambda表达式 最核心的特性&#xff0c;简化函数式编程&#xff0c;语法&#xff1a;(参数) -> 表达式 // 传统方式 Runnable r1 new Runnable() {Overridepublic void run() {System.out.println("传统方式");} };// Lambda方式 Runn…

STM32H743开发周记问题汇总(串口通讯集中)

溢出错误出现的串口接收过程中&#xff0c;中断接收在溢出后无法进入&#xff0c;需要重点考虑溢出问题&#xff0c;以下是溢出恢复代码波特率115200 优先级0-1 高于定时器 初步诊断是数据流导致的接收溢出问题/*** brief 检查并清除UART溢出错误&#xff08;带状态…

Linux中FTP配置与vsftpd服务部署指南

Linux中FTP配置与vsftpd服务部署指南 一、FTP 核心概念 1、基本定义 文件传输协议&#xff08;FTP&#xff09;&#xff0c;基于 C/S模式 工作。控制端口&#xff1a;21&#xff08;身份验证与指令传输&#xff09; 数据端口&#xff1a;20&#xff08;主动模式数据传输&#x…

Web UI自动化测试的早期介入?

在传统研发流程中&#xff0c;Web UI自动化测试常被视为“后期活动”——必须等待前端界面完全稳定才能启动。这种滞后导致自动化测试难以覆盖早期迭代&#xff0c;形成“开发等测试、测试等稳定”的恶性循环。本文将系统破解这一困局&#xff0c;提供一套从需求阶段介入、持续…

基于学科竞赛的高职计算机网络教学解决方案

一、引言《关于深化产教融合的若干意见》明确提出 “推行面向企业真实生产环境的任务培养模式”&#xff0c;为我国职业教育发展指明了产教深度融合的方向。在数字经济时代&#xff0c;计算机网络技术正以前所未有的速度迭代更新&#xff0c;产业界对具备前沿技术应用能力和实践…

猿大师中间件:Chrome网页内嵌PhotoShop微信桌面应用程序

随着桌面应用程序集成到网页的需求不断增长&#xff0c;尤其在Chrome浏览器缺乏原生调用EXE功能的情况下&#xff0c;传统网页内嵌解决方案面临失效挑战&#xff0c;猿大师中间件因此发展成为当前主流方案。 2025年猿大师发布了EXE、OCX、COM三个通用组件&#xff0c;自此猿大…

EF (Entity Framework) vs LINQ to SQL vs SqlSugar 全方位对比分析

文章目录1. 概述与背景介绍1.1 Entity Framework (EF)1.2 LINQ to SQL1.3 SqlSugar2. 架构设计对比2.1 EF架构设计2.2 LINQ to SQL架构2.3 SqlSugar架构3. 性能对比3.1 基准测试数据3.2 性能分析3.3 内存使用4. 功能特性对比4.1 数据库支持4.2 主要功能对比4.3 高级特性5. 开发…

MySQL 多表联查与内外连接详解

多表联查是关系型数据库的核心操作&#xff0c;用于从多个表中关联数据。MySQL 支持多种连接方式&#xff0c;最常用的是内连接和外连接&#xff08;左/右/全外连接&#xff09;。一、多表联查基础语法 SELECT 列列表 FROM 表1 [连接类型] JOIN 表2 ON 连接条件 [连接类型] JOI…

《网络爬虫》

网络爬虫&#xff0c;是一种自动化程序&#xff0c;用于抓取互联网上的数据。它们通过模拟浏览器行为&#xff0c;抓取网页内容并提取有用信息。爬虫广泛应用于数据采集、搜索引擎索引、竞争对手分析等领域。爬虫的工作流程&#xff1a;请求目标网页&#xff1a;爬虫首先发送 H…

openpnp - 顶部相机环形灯光DIY

文章目录openpnp - 顶部相机环形灯光DIY概述笔记ENDopenpnp - 顶部相机环形灯光DIY 概述 底部相机灯光用环形灯(用钣金折弯成一个10mm高的矩形盒子)是可以的。因为吸嘴落到Z方向和PCB平齐时&#xff0c;用COB灯带装在一个矩形盒子中正好能照射到吸嘴尖端高度附近。 顶部相机…

[AI React Web] E2B沙箱 | WebGPU | 组件树 | 智能重构 | 架构异味检测

第三章&#xff1a;E2B沙箱交互 在前两章中&#xff0c;我们掌握了对话状态管理和AI代码生成管道的运作原理。 但生成代码如何真正运行&#xff1f;这正是E2B沙箱交互的核心价值。 架构定位 E2B沙箱是专为open-lovable打造的虚拟计算环境&#xff0c;具备以下核心能力&…