Domanda

Qualcuno ha avuto fortuna ottenere criptato lo streaming di lavorare con Apple HTTP Live Streaming utilizzando OpenSSL? Sembra Ci sono quasi, ma il mio video non viene riprodotto, ma non ottengo errori in Safari o (come "Il video è ingiocabile" o "Tu non hanno il permesso di riprodurre questo video" quando ho ottenuto la chiave sbagliato).

#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

Stavo usando questi documenti come guida:

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

È stato utile?

Soluzione

Va bene, ho capito ... Mio comando hexdump era sbagliato. Dovrebbe essere:

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

Altri suggerimenti

Anche tenere a mente quanto segue, se si dispone di più di 1 TS "chunk", e siete alla ricerca di un sostituto di bit esatto per la cifratura gasdotto Apple. Per impostazione predefinita, lo strumento di crittografia Apple aggiorna il parametro IV (vettore di inizializzazione) per ognuno dei pezzi, che "aumenta la resistenza del cifrario", secondo le specifiche Pantos.

Attuare ciò significa semplicemente che le esigenze numero di sequenza per essere codificati in esadecimale e passati come parametro -IV a 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

La combinazione di informazioni da tre di cui sopra (OP, la correzione per hexdump e le informazioni IV) dava una soluzione di lavoro per . Vale a dire:

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

Purtroppo non ho gli strumenti per sperimentare questo. Sembra che tu seguito con attenzione le specifiche. Una cosa che vorrei fare è annusare la rete do assicurarsi che il file key.txt è sempre scaricato Safari. Vorrei anche provare esplicitamente scegliere il IV utilizzando l'attributo IV del tag EXT-X-KEY, per esempio

#EXT-X-KEY:METHOD=AES-128,URI="key.txt",IV=0x00000000000000000000000000000000
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top