加速乐 js解混淆 __jsl_clearance_s生成

news2024/11/25 5:55:29

提示!本文章仅供学习交流,严禁用于任何商业和非法用途,未经许可禁止转载,禁止任何修改后二次传播,如有侵权,可联系本文作者删除!

目标网站

aHR0cHM6Ly9jcmVkaXQuaGVmZWkuZ292LmNuL2NyZWRpdC13ZWJzaXRlL3B1YmxpY2l0eS94eWNuL3h5Y24tbGlzdC5kbz9uYXZJZD1DRTlGRkY1MTFENkUyQzRGRTA1Mzg4QkQwNDBBREVEMyZjb2x1bW5JZD1CNkE5NzlEQ0I2QTg0OTg0RTA1MzEyMDAxRTBBQzI3NiZyZWxlYXNlSWQ9QjZBOTc5RENCNkE4NDk4NEUwNTMxMjAwMUUwQUMyNzY=

抓包分析

在这里插入图片描述
破解的流程 请求分成三个请求:

1、不携带任何cookie的请求521, 拿到详情JS代码

2、携带第一个请求的set-cookie 和js 自执行的cookie 请求521

3、根据第二个请求的js 设置的cookie 发请求 拿到正常页面

第一个请求返回的内容 可以直接执行 拿到结果, 只需要分析第二个请求的js 内容

解混淆


const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const t = require("@babel/types");
const generator = require("@babel/generator").default;
const fs = require("fs");

// js混淆代码
process.argv.length > 2 ? encode_file = process.argv[2] : encode_file = "./input/jsl.js";
process.argv.length > 3 ? decode_file = process.argv[3] : decode_file = "./output/jsl_decode.js";


// #######################################
// AST解析函数
// #######################################

// 获取全局函数
function getGlobalFunc(){
    let program_body= ast.program.body;
    for (var i=0; i<3; i++){
        globalCode += generator(program_body[i]).code + "\n";
    }
    return globalCode
}

// AST还原流程
// #######################################

// 读取需要解码的js文件, 注意文件编码为utf-8格式
let jscode = fs.readFileSync(encode_file, {encoding: "utf-8"});

// 将js代码修转成AST语法树
let ast = parser.parse(jscode);

console.time("处理完毕,耗时");

var globalCode = '';

// 获取自执行方法
globalCode = getGlobalFunc();
eval(globalCode);

const deal_CallExpression = {
    CallExpression(path){
        let {callee, arguments} = path.node;
        if (callee === undefined || callee.name === undefined)
            return;
        if (callee.name != '_0xfecf' || arguments.length !=2 )
            return;

        let value = _0xfecf(arguments[0].value, arguments[1].value);

        // 创建节点并替换结果
        let string_node = t.stringLiteral(value);
        path.replaceWith(string_node)
    }
};

// 遍历语法树节点,调用修改函数
traverse(ast, deal_CallExpression);


// 合并字符串
const BinaryExpressionFix = {
    BinaryExpression: {
        exit: function (path) {
            try {
                eval(path.toString()).toString();
                path.replaceWith(t.stringLiteral(eval(path.toString()).toString()));
            } catch (e) {
            }
        }
    }
};
traverse(ast, BinaryExpressionFix);

// 删除无用方法
nodesToRemove = [];
const remove_path = {
  enter(path) {
    // 只在顶层语句中收集前三个节点
    if (path.parentPath && path.parentPath.isProgram() && nodesToRemove.length < 3) {
      nodesToRemove.push(path);
    }
  }
};
traverse(ast, remove_path);
nodesToRemove.forEach(path => path.remove());


console.timeEnd("处理完毕,耗时");

// 将ast转成js代码,{jsescOption: {"minimal": true}} unicode -> 中文
let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});
// 将js代码保存到文件
fs.writeFile(decode_file, code, (err) => {
});

console.log("end");

解混淆后的代码直接执行 调试,把缺少的环境补上
在这里插入图片描述
在这里插入图片描述
如下:

window = global;
window.navigator = {};
navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36";
document = {};

直接执行得到 结果, 和浏览器对比发现是一致的

通过分析多个JS 会发现 整体js 根据参数 执行 MD5, sha1,sha256 加密运算,结果和ct 值作比对
在这里插入图片描述

结语

可以通过补环境,提取参数的方式通过执行js拿到cookie 结果, 也可以通过Python改写的方法去完成

ps: 觉得不错点个赞 。。。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx 启动,查看,停止

nginx 启动&#xff0c;查看&#xff0c;停止 启动 start nginx 查看是否启动成功 tasklist | findstr nginx 停止 nginx -s stop 测试配置文件的语法是否有误 nginx -t 重启nginx nginx-s reload

分享天某云对象存储开发的体验

最近体验了天某云对象存储的功能&#xff0c;作为一名资深开发者&#xff0c;开发体验差强人意&#xff0c;与阿里云存在一定的差距。 首先在开发文档上居然没有基于nodejs的代码示例&#xff0c;只有java,c#,go等的代码示例&#xff0c;虽然有javascript的&#xff0c;但那也只…

面试经验分享 | 蓝队面试经验

关于蓝队面试经验 1.自我介绍能力 重要性 为什么将自我介绍能力放在第一位&#xff0c;实际上自我介绍才是面试中最重要的一点&#xff0c;因为护网面试并没有确定的题目&#xff0c;让面试官去提问 更多是的和面试官的一种 “交谈” &#xff0c;面试的难易程度也自然就取决…

Kubernetes 教程:在 Containerd 容器中使用 GPU

原文链接:Kubernetes 教程:在 Containerd 容器中使用 GPU 云原生实验室本文介绍了如何在使用 Containerd 作为运行时的 Kubernetes 集群中使用 GPU 资源。https://fuckcloudnative.io/posts/add-nvidia-gpu-support-to-k8s-with-containerd/ 前两天闹得沸沸扬扬的事件不知道…

C++ | Leetcode C++题解之第71题简化路径

题目&#xff1a; 题解&#xff1a; class Solution { public:string simplifyPath(string path) {auto split [](const string& s, char delim) -> vector<string> {vector<string> ans;string cur;for (char ch: s) {if (ch delim) {ans.push_back(mov…

深度学习之基于YOLOv5目标检测可视化系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着深度学习技术的快速发展&#xff0c;目标检测在多个领域中的应用日益广泛&#xff0c;包括…

CMakeLists.txt语法规则:foreach 循环基本用法

一. 简介 cmake 中除了 if 条件判断之外&#xff0c;还支持循环语句&#xff0c;包括 foreach()循环、while()循环。 本文学习 CMakeLists.txt语法中的循环语句。 CMakeLists.txt语法中 有两种 循环实现方式&#xff1a;foreach循环与 while循环。 二. CMakeLists.txt语法规则…

【vue3-pbstar-big-screen】一款基于vue3、vite、ts的大屏可视化项目

vue3-pbstar-big-screen是一款基于vue3、vite、ts的大屏可视化项目&#xff0c;项目已内置axios、sass&#xff0c;如element、echarts等需要自行安装。 屏幕适配方案 本项目主要通过transform: scale()缩放核心区域实现屏幕适配效果 //html <div class"container-wr…

编程算法赛

1偶数累加 2、统计字符的数量 3、计算表达式的值 4、哥德巴赫猜想 5、进制的转换

【一刷《剑指Offer》】面试题 16:反转链表

力扣对应题目链接&#xff1a;206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 牛客对应题目链接&#xff1a;反转链表_牛客题霸_牛客网 (nowcoder.com) 核心考点 &#xff1a;链表操作&#xff0c;思维缜密程度。 一、《剑指 Offer》内容 二、分析题目 解题思路&#…

CoPilot 产品体验:提升 OpenNJet 的控制管理和服务提供能力

文章目录 前言系统架构介绍CoPilot 配置CoPilot 插件规范 体验 CoPilot 实例CoPilot: Broker 实例CoPilot: Ctrl 实例 开发其他语言编写的 CoPilot目标主要思路具体实现执行 go 程序代码 功能扩展总结 前言 CoPilot 是 OpenNJet 的一个重要组成部分&#xff0c;它在 Master-Wo…

【QA】Java常见运算符

前言 本文主要讲述Java常见的运算符 运算符的概念 两个基本概念&#xff1a; 运算符&#xff1a;对字面量或者变量进行操作的符号 表达式&#xff1a;用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式 示例&#xff1a; int a 10; int b 20; int …

【一看就懂】UART、IIC、SPI、CAN四种通讯协议对比介绍

UART、IIC、SPI、CAN四种通信协议对比 通信方式传输线通讯方式标准传输速度使用场景UARTTX(发送数据线)、RX(接收数据线)串行、异步、全双工115.2 kbit/s(常用)计算机和外部设备通信&#xff08;打印机&#xff09;IICSCL(时钟线)、SDA(数据线)串行、同步、半双工100 kbit/s(标…

HNU-人工智能-实验4-基于Resnet的分类器

前言 本实验是自选实验&#xff0c;可以在给定范围内选择。 我刚刚提交了实验报告&#xff0c;暂时不准备放出我自己的实验报告&#xff0c;大概在截止提交之后我再放。 之所以这么着急写blog&#xff0c;是想便利还没做实验的同学。 如果选择的也是这个“毒蘑菇识别”的分类器…

安卓手机录屏在哪里?教给你3种方法

随着智能手机的普及&#xff0c;录屏功能在日常生活和工作中的需求日益增加。那么安卓手机录屏功能在哪里&#xff1f; 本文将详细介绍3个安卓手机的录屏方法&#xff0c;并分享一些实用技巧&#xff0c;帮助您更好地利用这一功能。 方法一&#xff1a;使用安卓手机自带的录屏…

武汉星起航:自运营团队—亚马逊平台运营典范,优势凸显业绩斐然

武汉星起航电子商务有限公司&#xff0c;作为跨境电商领域的佼佼者&#xff0c;凭借自运营团队多年的深耕经验与对亚马逊市场规则的深刻理解&#xff0c;成功在亚马逊平台开设多家自营店铺&#xff0c;并取得显著成绩。公司月流水达到几百万的辉煌业绩&#xff0c;不仅彰显了其…

基于 OpenHarmony compress 三方件使用指南~

关于 提供了一个轻量级的图像压缩库。将允许您将大照片压缩成小 尺寸的照片&#xff0c;图像质量损失或可以忽略不计 compress 的依赖添加 为你的应用添加 compress-debug.har。将 compress-debug.har 复制到 entry\libs 目录下即可&#xff08;由于 build.gradle 中已经依赖…

笔记---DFS,深度优先搜索

深度优先搜索乃是注重深度&#xff0c;会把一条路径优先全部搜完然后再去回溯&#xff0c;再去搜其他路径 连通性模型 与BFS中的Flood Fill相似 AcWing.1112.迷宫 一天Extense在森林里探险的时候不小心走入了一个迷宫&#xff0c;迷宫可以看成是由 n∗n 的格点组成&#xff…

Java:内存模型

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、Java内存模型出现的背景 二、什么是Java内存模型 三、Java内存模型的底层实现 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一…

基于C语言的贪吃蛇小游戏(简易版)

这篇博客会是对学习C语言成果的检测&#xff0c;为了实现贪吃蛇小游戏&#xff0c;我们用到的“工具”有&#xff1a;C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。 目录 1.简易版游戏效果 1.1欢迎界面 1.2游戏规则提示页面 1.3游戏进行页面 …