【问题标题】:Using openssl encryption for Apple's HTTP Live Streaming为 Apple 的 HTTP Live Streaming 使用 openssl 加密
【发布时间】:2011-03-01 22:31:02
【问题描述】:

有没有人通过 openssl 获得加密流以与 Apple 的 HTTP Live Streaming 一起使用?似乎我快到了,但我的视频无法播放,但我在 Safari 中也没有收到任何错误(例如“视频无法播放”或“您无权播放此视频”当我获得密钥时错了)。

#bash script:
keyFile="key.txt"
openssl rand 16 > $keyFile
hexKey=$(cat key.txt | hexdump -e '"%x"')
hexIV='0'
openssl aes-128-cbc -e -in $fileName -out $encryptedFileName -p -nosalt -iv ${hexIV}  -K ${hexKey}


#my playlist file:
#EXTM3U
#EXT-X-TARGETDURATION:000020
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="key.txt"
#EXTINF:20, no desc
test.ts.enc
#EXT-X-ENDLIST

我使用这些文档作为指南:

https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming

【问题讨论】:

标签: http http-live-streaming


【解决方案1】:

结合上述三个信息(OP、hexdump 的修复和 IV 信息)为us 生成了一个可行的解决方案。即:

openssl rand 16 > static.key

key_as_hex=$(cat static.key | hexdump -e '16/1 "%02x"')

for i in {0..9}; do
    init_vector=`printf '%032x' $i`
    openssl aes-128-cbc -e -in video_low_$(($i+1)).ts -out video_low_enc_$(($i+1)).ts -p -nosalt -iv $init_vector -K $key_as_hex
done

【讨论】:

    【解决方案2】:

    如果您有超过 1 个 TS“块”,并且您正在寻找 Apple 加密管道的位精确替代品,请注意以下几点。根据 Pantos 规范,默认情况下,Apple 加密工具会更新每个块的 IV(初始化向量)参数,这会“增加密码的强度”。

    实现这只是意味着序列号需要用十六进制编码并作为-iv参数传递给openssl:

    #!/bin/bash
    keyFile="key.txt"
    openssl rand 16 > $keyFile
    hexKey=$(cat key.txt | hexdump -e '"%x"')
    # hexIV='0'
    for i in {0..number_of_TS_chunks}
    do
        hexIV=`printf '%032x' $i`
        openssl aes-128-cbc -e -in $fileName -out $encryptedFileName -p -nosalt -iv ${hexIV} -K ${hexKey}
    done
    

    【讨论】:

      【解决方案3】:

      好的,我想通了...我的 hexdump 命令错误。应该是:

      hexKey=$(cat key.txt | hexdump -e '16/1 "%02x"')
      

      【讨论】:

        【解决方案4】:

        很遗憾,我没有工具可以对此进行试验。看起来你仔细地遵循了规范。我要做的一件事是嗅探网络,确保key.txt 文件正在下载到Safari。我也会尝试使用 EXT-X-KEY 标签的 IV 属性显式选择 IV,例如

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

        【讨论】:

        • 是的,我尝试明确设置 IV,但得到了相同的结果。我可以确认正在获取 key.txt,并且通过更改 key.txt 中的一些字节(“您无权打开此文件”),我还从视频元素中得到了真正的错误。
        猜你喜欢
        • 1970-01-01
        • 2013-12-25
        • 1970-01-01
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多