باستخدام تشفير OpenSSL لتدفق Apple HTTP LIVE
-
26-09-2019 - |
سؤال
هل كان لدى أي شخص أي حظ في الحصول على تدفق مشفر للعمل مع البث المباشر 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
كنت أستخدم هذه المستندات كدليل:
المحلول
حسنًا ، لقد اكتشفت ذلك ... كان أمر hexdump الخاص بي خطأ. يجب أن يكون:
hexKey=$(cat key.txt | hexdump -e '16/1 "%02x"')
نصائح أخرى
ضع في اعتبارك أيضًا ما يلي ، إذا كان لديك أكثر من "قطعة" واحدة ، وكنت تبحث عن بديل لخط أنابيب تشفير Apple. بشكل افتراضي ، تقوم أداة تشفير Apple بتحديث المعلمة IV (متجه التهيئة) لكل قطعة من القطع ، والتي "تزيد من قوة التشفير" ، وفقًا لمواصفات Pantos.
إن تنفيذ هذا يعني فقط أن رقم التسلسل يحتاج إلى ترميز في HEX وتم تمريره كمعلمة -IV لفتح:
#!/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
إن الجمع بين المعلومات من ثلاثة مما سبق (OP ، إصلاح 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