Использование шифрования OpenSSL для HTTP Apple Live Trequing

StackOverflow https://stackoverflow.com/questions/3010638

  •  26-09-2019
  •  | 
  •  

Вопрос

У кого-нибудь было повезло зашифровано потоковую трансляцию, чтобы работать с HTTP Apple Live Treationing с помощью OpenSSL? Похоже, что я почти там, но мое видео не играет, но я не получаю никаких ошибок в 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

Я использовал эти документы в качестве руководства:

http://tools.ietf.org/html/draft-pantos-http-live-streaming.

Это было полезно?

Решение

Хорошо, я понял это ... Моя команда Hexdump была неверной. Так должно быть:

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

Другие советы

Также имейте в виду следующее, если у вас есть более 1 TS «Chunk», и вы ищете немного точную замену для конвейера шифрования Apple. По умолчанию инструмент Encryption Apple обновляет параметр IV (инициализации) IV (INALIGALIGALIGANCE) для каждого из кусков, которые «увеличивает прочность шифра» в соответствии с спецификацией Pantos.

Реализация этого просто означает, что номер последовательности должен быть закодирован в Hex и передан в качестве -в-параметра для 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

Сочетание информации от трех из вышеперечисленного (ОП, Исправление для Hexdump и IV информации) дали рабочее решение для нас. Отказ А именно:

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

К сожалению, у меня нет инструментов для эксперимента с этим. Похоже, вы осторожно следовали за спецификацией. Одна вещь, которую я бы сделал, это нюхает Сеть, убедившись key.txt Файл загружается в Safari. Я бы также попробовал явно выбрать IV с помощью атрибута IV тега Ext-X-Key, например,

#EXT-X-KEY:METHOD=AES-128,URI="key.txt",IV=0x00000000000000000000000000000000
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top