Python 脚本:将 .m3u8 文件解密,支持任意 .key 文件格式

本脚本使用 Python 3 语言编写,可以读取目录下的 .m3u8 文件,并使用同目录下的任意 .key 文件进行解密。脚本支持错误处理和日志记录,方便用户调试和排查问题。

修改后的代码如下:

import os, shutil, base64, traceback

for dirs, _, files in os.walk('.'):
    for file in files:
        if file.endswith('.m3u8'):
            try:
                key_file = next((f for f in files if f.endswith('.key')), None)
                if key_file:
                    with open(os.path.join(dirs, key_file), 'rb') as f:
                        key = f.read()
                else:
                    key = None
            except:
                print(traceback.format_exc())
                with open('error.txt', 'a+') as f:
                    f.write(dirs + '\n')
            
            if key:
                if file.split('.')[0]:
                    filename = os.path.join(dirs, file.split('.')[0] + '.m3u8')
                else:
                    filename = os.path.join(dirs, file)
                jroot = os.path.join(dirs, file)
                with open(jroot, 'r+', encoding='ansi') as f1:
                    a = f1.read().splitlines()
                    a[4] = '#EXT-X-KEY:METHOD=AES-128,URI='base64:{0}'.format(base64.b64encode(key).decode())
                    f1.seek(0)
                    for line in a:
                        f1.write(line + '\n')
                    f1.close()
                try:
                    os.rename(jroot, filename)
                except:
                    print(traceback.format_exc())
                    with open('error.txt', 'a+') as f:
                        f.write(dirs + '\n')
            else:
                print(f'No .key file found for {os.path.join(dirs, file)}')

代码解析:

  1. 脚本使用 os.walk('.') 遍历当前目录及其子目录,查找所有 .m3u8 文件。
  2. 对于每个 .m3u8 文件,脚本会查找同目录下的 .key 文件。
  3. 如果找到 .key 文件,脚本会读取 .key 文件的内容作为解密密钥。
  4. 脚本使用 base64 库对解密密钥进行编码,并将其插入 .m3u8 文件的第 5 行,用于解密视频流。
  5. 脚本会将解密后的 .m3u8 文件重命名,并保存在当前目录下。
  6. 脚本包含错误处理机制,会将错误信息写入 error.txt 文件,方便用户排查问题。

使用方法:

  1. 将代码保存为 .py 文件,例如 decrypt.py
  2. 将需要解密的 .m3u8 文件和对应的 .key 文件放在同一个目录下。
  3. 在终端运行 python decrypt.py 命令,即可执行脚本。

注意事项:

  • 脚本只能解密使用 AES-128 加密的 .m3u8 文件。
  • 脚本要求 .key 文件与 .m3u8 文件位于同一目录下。
  • 脚本会将解密后的 .m3u8 文件重命名并保存在当前目录下,请确保当前目录有足够的存储空间。

联系方式:

如果您在使用脚本的过程中遇到任何问题,请随时联系我。

Python 脚本:将 .m3u8 文件解密,支持任意 .key 文件格式

原文地址: https://www.cveoy.top/t/topic/ngOH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录