【问题标题】:How do I decrypt the HLS stream to a .ts file when I have the key and IV?当我拥有密钥和 IV 时,如何将 HLS 流解密为 .ts 文件?
【发布时间】:2021-10-02 04:37:51
【问题描述】:

我可以访问所有 .ts 文件。 我的 .m3u8 开头是这样的:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:13
#EXT-X-KEY:METHOD=AES-128,URI="https://localserver/get_key?title_id=144", IV=0x4d1acfe1962002a4abedb8b68c65fa93
#EXTINF:12.066667,
1500_144_00000.ts
#EXTINF:9.000000,
1500_144_00001.ts
EXTINF:9.000000,
1500_144_00002.ts
...

... .m3u8 继续显示所有 .ts 文件。它给了我IV,我的访问密钥f0d3321327cbaa1aa9ddba07801607442bebaad65b17ca75a15affd5

不,我一直在寻找关于如何解密 .ts 文件(或连接文件)的答案,并且我已经看到了使用 openssl 的建议ffmpeg 但我似乎无法使用任何一种工具。

据我所知,我可以使用 IV 和 Access_key 使用 openssl 解密流。我使用了 IV=4d1acfe1962002a4abedb8b68c65fa93(删除了 0x)。

到目前为止,我已经尝试过使用连接文件:

openssl aes-128-cbc -d -in concatenatedfile.ts -out decrypted_concatenatedfile.ts -nosalt -iv 4d1acfe1962002a4abedb8b68c65fa93 -K f0d3321327cbaa1aa9ddba07801607442bebaad65b17ca75a15affd5 

但这只是给了我

bad decrypt
139793444538016:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:

我看到了使用 .key 文件并将其转换为可读格式的建议。但由于我没有 .key 文件,而是一个准备好的字符串,我认为这是我失败的地方。

我已经尝试按照this beautiful post by @aergistal 使用 ffmpeg。

ffmpeg -i my.m3u8 -c copy output.ts

但在这里,我的长字符串键似乎也失败了。

非常欢迎任何有关如何继续使用 openssl 或 ffmpeg 的建议。

【问题讨论】:

标签: encryption ffmpeg http-live-streaming


【解决方案1】:

AES-128 表示密钥为 128 位、16 字节或 32 个十六进制字符。您的字符串要长得多,这意味着它不能是正确的键。

【讨论】:

    【解决方案2】:

    我也很好奇如何实现这一点,最后将密钥放入它自己的文件中,例如 video.key 并修改 m3u8 文件以指向本地文件:

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

    那么你必须确保在转换过程中将-allowed_extensions ALL传递给ffmpeg。

    ffmpeg -allowed_extensions ALL -i video.m3u8 -c copy out.mp4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      相关资源
      最近更新 更多