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

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

一、找出需要加密的参数
  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.mzph.cn/news/194799.shtml

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

相关文章

html动漫网页设计分享 紫罗兰永恒花园网页作业成品带视频,注册登录,表格,表单

html5静态网页设计要是用HTML DIVCSS JS等来完成页面的排版设计,一般的网页作业需要融入以下知识点:div布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,学生网页作业源码可以…

数据挖掘实战-基于word2vec的短文本情感分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

鸿蒙基础入门与高频知识点梳理

介绍鸿蒙高频知识点,持续更新中 一、鸿蒙代码结构 ├──entry/src/main/ets // 代码区 │ ├──common │ │ └──Constant.ets // 常量类 │ ├──entryability │ │ └──EntryAbility.ts // 程序入口类 │ ├──p…

solidity案例详解(五)能源电力竞拍合约

使用智能合约对电力公司和用户拍拍进行一个管理与上链,确保安全性,合约完整代码私信或加裙851453227 a)现有系统架构和功能,服务提供方是谁,用户是谁; 系统架构: 电力拍卖系统,由能源公司部署。…

【算法】单调队列 滑动窗口最大值

文章目录 例题——239. 滑动窗口最大值相关练习1438. 绝对差不超过限制的最长连续子数组解法1——两个单调队列分别维护最大值和最小值解法2——有序集合TreeMap 2398. 预算内的最多机器人数目解法1——二分答案 单调队列解法2——双指针 单调队列 (不固定大小的滑…

并发编程1:线程的基本概念

一、进程、线程、用户线程&原生线程、优先级、守护线程 什么是进程 是程序一次执行的过程,是系统运行程序的基本单位。系统运行一次程序,就是一个进程从创建到关闭的过程。Java 项目从 main 方法启动,就是启动了一个 JVM 进程&#xff…

JS中闭包

相信JS的开发者,对闭包这个知识都比较熟悉,在熟悉的同时可能会有些模糊的不真切感,下面咱们从三个方面来具体加深一下对闭包的理解。 什么是闭包 咱们先看两个比较抽象的理解,闭包是一个函数和其关联环境组成的结构体&#xff1b…

C++面试宝典第1题:爬楼梯

题目 小乐爬楼梯,一次只能上1级或者2级台阶。楼梯一共有n级台阶,请问总共有多少种方法可以爬上楼? 解析 这道题虽然是一道编程题,但实际上更是一道数学题,着重考察应聘者的逻辑思维能力和分析解决问题的能力。 当楼梯只…

理解Zookeper

一、什么是Zookeper Zookeper是一个可以作为注册中心、配置中心、分布式锁的分布式解决方案 二、数据一致性 一致性分为强一致性、弱一致性、最终一致性 Zookeper可以保持数据的强一致性(CP) 主要是解决写、集群节点的同步、读之间的关系 强一致性&a…

nodejs微信小程序+python+PHP问卷调查系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

This详细用法

this的指向 this有5种指向,在普通函数中,this指向window;在构造函数中,this指向创建的对象;在方法声明中,this指向调用者;在定时器中, this指向window;在事件中&#xff…

超大规模集成电路设计----MOS器件原理(二)

本文仅供学习,不作任何商业用途,严禁转载。绝大部分资料来自----数字集成电路——电路、系统与设计(第二版)及中国科学院段成华教授PPT 超大规模集成电路设计----MOS器件原理(二) 半导体物理知识补充介绍1. 半导体材料2. 固体类型…

如何做性能优化?

性能优化是一个复杂的过程,它涉及到对软件或网站的结构、代码、数据库和硬件的深入理解和改进。以下是一些通用的性能优化建议: 代码优化: 减少数据库查询:尽量避免N1查询问题,使用索引优化,或者考虑使用内…

如何查看JDK动态代理自动生成的类

JDK提供了一种强大且灵活的机制,可以在运行时生成代理类。这种动态生成的代理类可以在不修改原始类的情况下,对其方法进行拦截和增强。然而,对于初学者来说,了解生成的代理类的内部结构和工作原理可能会很有帮助。 本文将介绍如何查看JDK动态代理生成的代理类。我们将探索一…

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

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

Shell循环:expect(二)

expect实战:公钥推送 一、准备工作:安装expect,装备公钥 二、通过shell循环判断主机在线 #!/bin/bash #脚本编写 #创建一个IP地址文件 >ip.txt #使用for循环ping测试主机是否在线 for i in {3..254} do{ip192.168.151.$iping -c1 -W…

【重点】【滑动窗口】438. 找到字符串中所有字母异位词

题目 1.自己想的垃圾方法 class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> res new ArrayList<>();char[] sArray s.toCharArray();char[] pArray p.toCharArray();Arrays.sort(pArray);String pSorted String…

29 kafka动态配置

为什么需要动态配置 线上运行的kafka broker修改配置需要重启的话&#xff0c;影响比较大。需要一个不需要重启就能使参数生效的功能 使用的场景 配置优先级&#xff1a; per-broker参数 > cluster-wide参数 > static参数 > 默认参数 1.动态调整network线程数和工…

tomcat PUT任意方法写文件

漏洞介绍 该漏洞是Apache Tomcat服务器中的PUT方法任意写文件漏洞,可以让攻击者上传Webshell并获取服务器权限。 该漏洞在2017年9月19日被Apache官方发布并修复CVE-2017-12615。在conf/web.xml文件中,readonly默认为true,当设置为false时,可以通过PUT / DELETE进行文件操作…

【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)

目录 一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1 访问限定符4.2 封装 五、类的作用域六、类的实例化七、类的对象大小的计算7.1 类对象的存储方式猜测7.2 如何计算类对象的大小 八、类成员函数的this指针8.1 this指针的引出8.2 this指…