逆向案例二十五——m3u8中有AES加密怎么处理

2024-04-14 11:52

本文主要是介绍逆向案例二十五——m3u8中有AES加密怎么处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网址链接:aHR0cHM6Ly93d3cuY2Jwb3J0YWwub3JnL2N1cGZveHBsYXkvODUyNzctMS0xLw==

打开一个视频,打开开发者工具,刷新,搜索m3u8,找到这个含有所有ts连接的包

预览一下:

 

这与平常的m3u8有所不同,如果有下面的代码,说明ts返回的数据有加密

#EXT-X-KEY:METHOD=AES-128,URI="enc.key",IV=0x00000000000000000000000000000000 

这是一个 HLS(HTTP Live Streaming)中的媒体加密标签,用于指定媒体流的加密方法和密钥信息。

在这个标签中:

  • METHOD=AES-128:指定加密方法为 AES-128,表示使用 AES 算法进行加密。
  • URI="enc.key":指定密钥文件的 URI,即密钥文件的路径或链接地址。在这个例子中,密钥文件的路径为 "enc.key"。
  • IV=0x00000000000000000000000000000000:指定初始化向量(Initialization Vector,IV)。IV 是在加密过程中用于增加安全性的参数。在这个例子中,IV 的值为全 0。

总体上,这个标签指定了使用 AES-128 加密方法,密钥文件的路径为 "enc.key",初始化向量为全 0。

而且加密是AES,告诉了密钥的链接,和向量。

对于这种的处理方法

1.访问密钥的链接,获取二进制密钥,可以直接搜索找到密钥链接

 

 

import requests
# 密钥链接
key_url = 'https://hd.ijycnd.com/play/zbqqp2Rb/enc.key'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
key = requests.get(url=key_url,headers=headers).content

 

2.制作解码器,传入密钥,加密方式,和IV

key = requests.get(url=key_url,headers=headers).content
from Crypto.Cipher import AES
# 将 IV 和密钥转换为字节串
IV = bytes.fromhex('00000000000000000000000000000000')  # IV 字节串
ci = AES.new(key,AES.MODE_CBC,IV=IV)

 

一般填充方式都为CBC 

3.访问m3u8链接,提取出所有ts的链接。

import requests
import re
m3u8_url = 'https://hd.ijycnd.com/play/zbqqp2Rb/index.m3u8'
response = requests.get(url=m3u8_url,headers=headers).text
ts_list = re.sub('#E.*','',response).split()
for ts in ts_list:print(ts)

4.开始保存

number = 0
for ts in ts_list:number += 1print(f'正在保存第{number}个ts文件')ts_content = requests.get(url=ts,headers=headers).contentcontent = ci.decrypt(ts_content)with open('视频.mp4',mode='ab') as f:f.write(content)

 

5.完整代码

import requests
from Crypto.Cipher import AES
import re
# 密钥链接
key_url = 'https://hd.ijycnd.com/play/zbqqp2Rb/enc.key'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}key = requests.get(url=key_url,headers=headers).content# 将 IV 和密钥转换为字节串
IV = bytes.fromhex('00000000000000000000000000000000')  # IV 字节串
ci = AES.new(key,AES.MODE_CBC,IV=IV)
m3u8_url = 'https://hd.ijycnd.com/play/zbqqp2Rb/index.m3u8'
response = requests.get(url=m3u8_url,headers=headers).text
ts_list = re.sub('#E.*','',response).split()
number = 0
for ts in ts_list:number += 1print(f'正在保存第{number}个ts文件')ts_content = requests.get(url=ts,headers=headers).contentcontent = ci.decrypt(ts_content)with open('视频.mp4',mode='ab') as f:f.write(content)

结果展现:

 

 

 

 

 

这篇关于逆向案例二十五——m3u8中有AES加密怎么处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902933

相关文章

PyTorch核心方法之state_dict()、parameters()参数打印与应用案例

《PyTorch核心方法之state_dict()、parameters()参数打印与应用案例》PyTorch是一个流行的开源深度学习框架,提供了灵活且高效的方式来训练和部署神经网络,这篇文章主要介绍... 目录前言模型案例A. state_dict()方法验证B. parameters()C. 模型结构冻

Python字符串处理方法超全攻略

《Python字符串处理方法超全攻略》字符串可以看作多个字符的按照先后顺序组合,相当于就是序列结构,意味着可以对它进行遍历、切片,:本文主要介绍Python字符串处理方法的相关资料,文中通过代码介... 目录一、基础知识:字符串的“不可变”特性与创建方式二、常用操作:80%场景的“万能工具箱”三、格式化方法

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

VSCode开发中有哪些好用的插件和快捷键

《VSCode开发中有哪些好用的插件和快捷键》作为全球最受欢迎的编程工具,VSCode的快捷键体系是提升开发效率的核心密码,:本文主要介绍VSCode开发中有哪些好用的插件和快捷键的相关资料,文中... 目录前言1、vscode插件1.1 Live-server1.2 Auto Rename Tag1.3

mybatis-plus分表实现案例(附示例代码)

《mybatis-plus分表实现案例(附示例代码)》MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生,:本文主要介绍my... 目录文档说明数据库水平分表思路1. 为什么要水平分表2. 核心设计要点3.基于数据库水平分表注意事项示例

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

Springboot3 ResponseEntity 完全使用案例

《Springboot3ResponseEntity完全使用案例》ResponseEntity是SpringBoot中控制HTTP响应的核心工具——它能让你精准定义响应状态码、响应头、响应体,相比... 目录Spring Boot 3 ResponseEntity 完全使用教程前置准备1. 项目基础依赖(M