在Python中获取Aes 128 cbc的解密密钥,而无需密码获取m3u8视频流

问题描述

我有一个video.ts文件,该文件是通过将m3u8格式的视频流加在一起而编译的。我正在尝试使用以下语句解密视频。

   subprocess.run(['openssl','aes-128-cbc','-K','[KEY]','-iv','[IV]','-nosalt','-in','video.ts','- 
   out','video_name.mp4'])

尽管,我有[IV]的值,但没有[KEY]。我确实有以下格式的“ uri”链接,但是使用浏览器打开该链接时会出错。

 'key': {'method': 'AES-128','uri': 'https://...','iv': '.....'}

是否有某种方法可以使用此信息来提取要解密的密钥。

解决方法

您似乎在HLS流上使用AES-128加密。

您可以通过查看M3U8文件本身来进行检查-您应该看到一些信息,包括以下设置:

EXT-X-KEY:

  • 方法:AES-128
  • URI:密钥服务器的URL
  • KEYFORMAT:身份(或未指定KEYFORMAT)

下面的示例(来自https://docs.unified-streaming.com/documentation/drm/hls.html-您也可以从其他包装商那里看到示例):

#EXTM3U
#EXT-X-VERSION:1
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="https://license-server/video.key"
#EXTINF:4,no desc
video-audio=65000-video=236000-0.ts

从上面显示的内容看来,您只需要简单地从示例中的“ uri”:“ https:// ...” URI中获取密钥,然后在解密中使用它。 / p>