Используя openssl шифрование для HTTP Apple Живая Потоковая передача

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

12
задан Kara 21 January 2014 в 20:24
поделиться

3 ответа

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

hexKey=$(cat key.txt | hexdump -e '16/1 "%02x"')
10
ответ дан 2 December 2019 в 07:20
поделиться

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

#EXT-X-KEY:METHOD=AES-128,URI="key.txt",IV=0x00000000000000000000000000000000
0
ответ дан 2 December 2019 в 07:20
поделиться

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

Реализация этого просто означает, что порядковый номер нужно закодировать в шестнадцатеричном формате и передать как параметр -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
7
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: