python爬虫AES魔改案例:某音乐素材下载网

news2025/1/13 17:50:03

声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关

一、找出需要加密的参数
  1. js运行 atob(‘aHR0cHM6Ly93d3cuYWlnZWkuY29tL3NvdW5kL2NsYXNzLw==’) 拿到网址,F12打开调试工具,点击任意导航发送请求,找到 gei-common/jsonComp/f/awd/log.json 请求
  2. 分析请求头、参数、响应结果会发现响应结果 b 加密
    在这里插入图片描述
  3. 鼠标右击请求找到Copy>Copy as cUrl(bash),打开网站:https://spidertools.cn/#/curl2Request,把拷贝好的curl转成python代码,新建 aigei.py,把代码复制到该文件,
    在这里插入图片描述
  4. 把header、cookie注释,运行文件 aigei.py,会发现可以请求成功,说明heaer、cookie中不包含加密参数
    在这里插入图片描述
  5. 新建 aigei.js 文件,用于放扣下的代码
二、定位参数加密位置
  1. 切换到sources,添加XHR拦截common/jsonComp/f/awd/log.json
    在这里插入图片描述
  2. 点击任意导航发送请求,一直点击跳到下一个函数,看见 ajax 函数中的 success 打上断点
    在这里插入图片描述
  3. 结束此次调试,点击任意导航发送请求,一直点击跳过断点,当看到 success 断点,并且有 b 加密数据过来,说明解密是在此处解密,分析代码会发现是经过 ajaxSuccJson 方法处理的,而 ajaxSuccJson 方法 就在下方,在 ajaxSuccJson 方法内部打上断点,点击跳过断点,进入ajaxSuccJson方法内部,会发现是经过 c(b) 解密的,鼠标悬浮到 c 方法上,点击蓝色部分找到该方法,并在方法内部的 if 、else都打上断点,点击跳过断点,会发现断点进入 esle 内部,点击跳过函数调用,会发现 u 是解密成功的明文数据,把 else 内部的代码复制到 aigei.js
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
三、分析解密代码,扣代码
  1. 看代码会发现 r、n、new AudioWaveParam、u = (new llii1i1iill).ilil111lii(u)、u = ili11liii(u, “il1looOo”) 是需要分析的,把 r 打印在控制台上可以看出r响应结果,分析代码得知 n 对应的是请求参数中的 w,把请求参数复制到 aigei.js,把 r 复制后,从请求中复制 b 的返回结果修改 r 中 b 的值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 鼠标悬浮到 new AudioWaveParam,点击蓝色部分找到该代码位置,把该代码复制到 aigei.js
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 鼠标悬浮到 (new llii1i1iill).ilil111lii,点击蓝色部分找到该代码位置,会看到 this.ilil111lii ,this.ilil111lii 是在 llii1i1iill 方法内部,把 llii1i1iill 方法复制到 aigei.js
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 鼠标悬浮到 ili11liii,点击蓝色部分找到该代码位置,会看到 ili11liii 方法,会发现代码内部有个 GeiJS,在代码内部打上断点,并把 ili11liii 方法复制到 aigei.js,
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
  5. Ctrl+F,在文件内搜索 GeiJS 会找到赋值的地方,找到 GeiJS 第一次出现的地方,新建 GeiJS.js 把代码全部拷贝到 GeiJS.js,GeiJS 就属于魔改后的算法
    在这里插入图片描述
  6. 导入GeiJS.js,运行 js 后,数据解密成功,main 后面两行代码注释,是因为这两行代码是用来创建播放器对象的
    在这里插入图片描述
    在这里插入图片描述
四、验证结果
  1. 点击任意导航发送请求,点击跳过断点,直到看到 G=24 循环完毕,打印出 u 的值
    在这里插入图片描述
  2. 修改 aigei.py,运行成功后,数据 b 解码成功,复制刚才请求中的参数,对比 b 的值是相同的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

类 —— 多态、抽象类

多态 通常说的多态,是指发生在类之间的多态。即相同的代码,实现不同的功能。 函数重载 —— 静态多态/编译时多态。 类之间的多态 —— 动态多态/运行时多态。 前提 继承、虚函数、函数重写。 函数重写(override) 在子类中重…

正则表达式从放弃到入门(2):grep命令详解

正则表达式从放弃到入门(2):grep命令详解 总结 本博文转载自 这是一篇”正则表达式”扫盲贴,如果你还不理解什么是正则表达式,看这篇文章就对了。 如果你是一个新手,请从头阅读这篇文章,如果你…

设计一门编程语言:你认为最重要的一定要有的特性会是哪些?

当我们站在软件工程师的角度来考虑设计一门编程语言时,我们需要关注那些能够提升代码质量、开发效率和程序可维护性的特性。 以下是我认为最重要的几个特性: 1、简洁而明确的语法:语法是程序员与编程语言交互的基础。简洁明了的语法可以降低…

Pandas实战:电商平台用户分析

数据分析 1.行为概况 首先,我们要对用户的行为类型有一定的理解,了解每个行为所代表的含义。 浏览:作为用户与商品接触的第一个行为,它的数量级与其他行为类型相比而言是非常庞大的,因为: 用户购买之前需…

JavaSE基础50题:7. 写一个方法返回参数二进制中1的个数(3种方法!)

文章目录 概述方法1方法2方法3 概述 返回参数中二进制中1的个数。 如: 15(十进制) —— 0000 1111(二进制) —— 4个1 ①我们把二进制的数字的每一位都&1,其中:1&11 、0&10 ②用无符号右移(>>>)来…

第一百八十八回 分享三个使用TextField的细节

文章目录 1. 概念介绍2. 使用方法2.1 修改组件的填充颜色2.2 修改组件的高度2.3 给组件添加圆角3. 示例代码4. 内容总结我们在上一章回中介绍了"DropdownButton组件"相关的内容,本章回中将介绍**TextField组件的细节.**闲话休提,让我们一起Talk Flutter吧。 1. 概念…

栈的链式存储(详解)

栈的链式存储 栈的链式存储是通过链表来实现的,每个节点包含一个元素和一个指向下一个节点的指针。链式存储的栈不需要提前分配内存空间,可以动态地增加或减少元素。 在链式存储中,栈顶元素通常是链表的头节点,栈底元素是链表的…

Flume 安装部署

文章目录 Flume 概述Flume 安装部署官方网址下载安装配置文件启动 Flume 进程启动报错输出文件乱码问题 Flume 概述 Flume(Apache Flume)是一个开源的分布式日志收集、聚合和传输系统,属于 Apache 软件基金会的项目之一。其主要目标是简化大…

使用OpenMVS重建模型

1、数据格式转换 首先将生成的稠密点云以及图片信息转换成openmvs支持的.mvs文件。在openmvs_sample中的bin文件内打开终端 作者:舞曲的小水瓶 https://www.bilibili.com/read/cv25019877/ 出处:bilibili interfaceCOLMAP.exe -i D:\desktop\test\toy\…

Proteus8.16仿真软件安装图文教程(Proteus 8 Professional)

Proteus8.16 🔧软件安装包下载链接:🔧视频教程🔧1 安装软件解压🔧2 安装🔧3 破解🔧4 汉化 🔧软件安装包下载链接: Proteus8.16软件下载链接 1、本文关于Proteus8.16 SP…

网工学习5 交换机端口相关配置

交换机的接口属性默认支待一般网络环境,一般情况下是不需要对其接口进行设置的。在某些情况下需 要对其端口属性进行配置时,配置的对象主要有接口隔离、速率、双工等信息。 5.1 接口隔离设置 > 配置接口 GE0/0/1 和 GE0/0/2 的接口隔离功能&#xf…

dart语言多线程遇到的问题:Isolate.spawnUri(),在真机调试中无法生成隔离

报错原因 [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: IsolateSpawnException: Unable to spawn isolate: Unsupported isolate URI: 未处理的异常:IsolateSpawnException:无法生成隔离:不支持隔离 URI&…

如何捕捉股票短线机会

一、个股相关新闻 1、盈利变化 当公司的盈利能力提升时,投资者就会积极地买入该股,股价短期内会上升。尤其是财报即将发布的阶段,那些能够盈利预增的股票往往会受到投资者青睐,使股价在短时间内大幅上涨。 比如,2022年…

leetcode - 矩阵区域和

1314. 矩阵区域和 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c …

java源码-Java方法的定义和使用详解

1、 方法定义 如果我们想定义一个方法&#xff0c;基本语法如下&#xff1a; 修饰符&#xff1a;方法的修饰符是可选的&#xff0c;用于定义该方法的访问类型&#xff0c;可用的修饰符包括public/private/protected/默认的。 返回值&#xff1a;方法可以有返回值&#xff0c;…

RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取属性

🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过OF函数获取属性。 一、获取获取属性 ① of_find_property 函数 of_find_property 函数用于在设备树中查找节点 下具有指定名称的属性。 如果找到了该属性, 可以通过返回的属性结构体…

机械专业个人简历17篇

以下简历内容以机械专业相关岗位招聘需求为背景&#xff0c;我们整理了17篇且具有参考价值的简历案例&#xff0c;大家可以灵活借鉴&#xff0c;助理大家在众多候选人中脱颖而出。 机械专业简历模板下载&#xff08;可在线编辑制作&#xff09;&#xff1a;来幻主简历&#xf…

共识问题:区块链如何确认记账权?

区块链可以说是最近几年最热的技术领域之一&#xff0c;区块链起源于中本聪的比特币&#xff0c;作为比特币的底层技术&#xff0c;本质上是一个去中心化的数据库&#xff0c;其特点是去中心化、公开透明&#xff0c;作为分布式账本技术&#xff0c;每个节点都可以参与数据库的…

SpringBoot之自定义Starter

目录 一、自己的理解 1. 理解一 2. 理解二 二、自定义starter&#xff08;重点&#xff09; 三、以mybatis-spring-boot-starter为例进行分析 1. 写好自己的自动配置类逻辑 2. 创建自己的starter项目并引入自动配置类项目的依赖 3. 在其它项目中使用自定义的starter 一…

Spring MVC学习随笔-文件下载和上传(配置文件上传解析器multipartResolver)

学习视频&#xff1a;孙哥说SpringMVC&#xff1a;结合Thymeleaf&#xff0c;重塑你的MVC世界&#xff01;&#xff5c;前所未有的Web开发探索之旅 学习视频&#xff1a;【编程不良人】继spring之后快速入门springmvc,面对SpringMVC不用慌 六、SpringMVC 文件上传下载 6.1 文件…