使用OpenSSL解密TS文件(m3u8 / EXT-X-KEY / EXT-X-MEDIA-SEQUENCE)

时间:2017-06-04 18:51:01

标签: encryption stream openssl aes hls

(事先抱歉 - 我的英语非常糟糕)

我过去加密了几个* .ts文件。通常,有一个带有必要信息的* .m3u8,一个密钥文件和* .ts块。

示例:

文件来源:

https://support.jwplayer.com/customer/portal/articles/1430261-aes-content-protection

M3U8:

#EXTM3U
#EXT-X-VERSION:1
## Created with Unified Streaming Platform(version=1.6.7)
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:11
#EXT-X-KEY:METHOD=AES-128,URI="oceans.key"
#EXTINF:11, no desc
oceans_aes-audio=65000-video=236000-1.ts

...

我接下来要做的是,下载密钥文件" oceans.key"在#EXT-X-KEY中指定并创建内容的hexdump:

cat oceans.key | hexdump -e '16/1 "%02x" "\n"'

f571bfecfd1ab9adb05ce6fa030efd81

将序列号转换为HEX并使用左填充0填充' 16个八位字节',我得到初始向量并执行此语句来解​​密* .ts文件:

openssl aes-128-cbc -d -in oceans_aes-audio\=65000-video\=236000-1.ts -out decrypted.ts -K f571bfecfd1ab9adb05ce6fa030efd81 -iv 00000000000000000000000000000001

它就像一个魅力。总而言之,我在解密这些文件方面遇到了一些麻烦:

https://www.sendspace.com/filegroup/ajezM9HbgI3OI%2BY9%2BvUdJNnxYyXqGXX6K6jsNcrzYNc

名为' security'的文件是关键文件。当我十六进制转储其内容时,它是17个八位字节而不是16个。运行openssl命令我得到以下输出:

hex string is too long
invalid hex key value

我将该文件的内容与该主机中的其他文件进行了比较,并确认最后一个字符始终相同(0x5e / ^)。所以,我删除它并再次尝试 - 我的猜测是它是某种转义序列/行结束。到目前为止没有运气。结果是:

解密不好 140050579783384:错误:06065064:数字信封例程:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:529:

这里有完整的命令:

openssl aes-128-cbc -d -in media_1496546273.ts -out media_1496546273.decrypt.ts -K aaf36c79be1fad3977a4e8b19e48f038 -iv 00000000000000000000000000008E97

我想过填充,nopadding,不同的密码,......到目前为止没有结果。 Chrome确实在流媒体播放文件时没有任何问题。

我将不胜感激任何帮助和暗示继续这一点。

BR

0 个答案:

没有答案