Wie zum entschlüsseln von AES-128 verschlüsselte m3u8 video Dateien?
Ich versucht zu entschlüsseln (AES-128 verschlüsselte m3u8 video Dateien wie dieses :
die m3u8-Datei :
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:NO
#EXT-X-VERSION:2
#EXT-X-FAXS-CM:MII6lAYJKoZIhvcNAQcCoII6hTCCOoECAQExCzAJBgUrDgMCGgUAM... very long key...
#EXT-X-KEY:METHOD=AES-128,URI="faxs://faxs.adobe.com",IV=0X99b74007b6254e4bd1c6e03631cad15b
#EXT-X-TARGETDURATION:8
#EXTINF:8,
video.mp4Frag1Num0.ts
#EXTINF:8,
video.mp4Frag1Num1.ts
...
Ich habe versucht mit openssl :
openssl aes-128-cbc -d -kfile key.txt -iv 99b74007b6254e4bd1c6e03631cad15b -nosalt -in video_enc.ts -out video_dec.ts
key.txt enthält den sehr langen Schlüssel
-->
bad decrypt
1074529488:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:
Was mache ich falsch??
InformationsquelleAutor dabiboo | 2013-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Damit entschlüsseln von verschlüsselten video-stream, die Sie benötigen Schlüssel.
Dieser Schlüssel ist nicht Teil des Datenstroms. Es sollte separat bezogen werden.
EXT-X-FAXS-CM-header enthält DRM meta-Daten und den key nicht.
Dies ist excert von Adobe Media Server developer guide:
Das Adobe Access-Server-geschützten Variante playlist auch muss das #EXT-X-FAXS-CM-tag. Der Wert von #EXT-X-FAXS-CM-tag in Variante playlist der relativen URI-verweisen auf die DRM-Metadaten aus einer der einzelnen Ströme.Auf dem client, der die #EXT-X-FAXS-CM-tag in Variante playlist wird verwendet, um das DRM-Sitzung. Das gleiche DRM-Sitzung verwendet werden, für alle verschlüsselte M3U8-Dateien in der Variante playlist.
Ausführliche Anleitung finden Sie hier:
http://help.adobe.com/en_US/adobemediaserver/devguide/WS5262178513756206-4b6aabd1378392bb59-7fe8.html
Es ist auch zu erwähnen, dass faxs://faxs.adobe.com-URI ist für die lokalen Schlüssel dienen.
Also Schlüssel erhalten lokal von einem Gerät.
InformationsquelleAutor Nikolai
Könnte dies ein bisschen ein hack, aber da eine URL zu einer .m3u8-Datei, wird der download und die Dateien entschlüsseln, die machen den stream:
Dieses Skript generiert ein zweites Skript, dass Extrakte Schlüssel und Initialisierungs-Vektoren und benutzt Sie, um zu entschlüsseln, während das herunterladen. Es muss curl, awk, hexdump, sed und openssl ausgeführt werden. Sie werden wahrscheinlich Würgen auf einem unverschlüsselten stream, oder auf einen stream, der verwendet etwas anderes als AES-128 (andere Verschlüsselung unterstützt?).
Erhalten Sie eine Reihe von Dateien: seg00000.ts, seg00001.ts, etc. Verwenden tsMuxeR (https://www.videohelp.com/software/tsMuxeR) Zusammenführen, diese in einer einzigen Datei (einfache Verkettung für mich nicht funktioniert...es ist das was ich zuerst versucht):
(Track-IDs und die framerate möglicherweise angepasst werden...Holen Sie sich die Werte durch die übergabe eine der heruntergeladenen Dateien zu tsMuxeR.)
Dann verwenden Sie ffmpeg zu remux zu etwas, das mehr allgemein verstanden wird:
curl "$1" -s | awk 'BEGIN {c=0} $0 ~ "EXT-X-KEY" {urlpos=index($0,"URI=")+5; ivpos=index($0,"IV="); keyurl=substr($0, urlpos, ivpos-urlpos-2); iv=substr($0, ivpos+5); print "key=`curl -s '\''"keyurl"'\'' | hexdump -C | head -1 | sed \"s/00000000//;s/|.*//;s/ //g\"`"; print "iv="iv} $0 !~ "-KEY" && $0 ~ "http" {printf("curl -s '\''%s'\'' | openssl aes-128-cbc -K $key -iv $iv -d >seg%05i.ts\n", $0, c++)}' | bash
Diese Seite: support.jwplayer.com/customer/portal/articles/1430261 hat eine verschlüsselte m3u8-url: playertest.longtailvideo.com/adaptive/oceans_aes/... ich, kopiert das Skript in eine Textdatei und benannte es script.sh im terminal habe ich dann ausgeführt bash script.sh 'playertest.longtailvideo.com/adaptive/oceans_aes/...', aber es passiert nichts, mache ich etwas falsch?
die Unterschiede mit dieser m3u8 file-Deskriptor sind: 1. Verschlüsselung nicht verwenden, eine Initialisierungs-Vektor, so dass dieses Skript schlägt fehl, während die Suche nach "IV=" " string. 2. Die URLs in der m3u8-Datei sind relativ, machen wieder das script fehlschlägt. Für diesen speziellen Fall, muss das Skript ändert.
Versuchen Sie dies:
BASE=https://playertest.longtailvideo.com/adaptive/oceans_aes/; M3U8=oceans_aes-audio=65000-video=2042000.m3u8; curl "${BASE}${M3U8}" -s | awk "BEGIN {c=0} \$0 ~ \"EXT-X-KEY\" {urlpos=index(\$0,\"URI=\")+5; keyurl=substr(\$0, urlpos, length(\$0)-urlpos); print \"key=`curl \\\"${BASE}\"keyurl\"\\\" -s | hexdump -C | head -1 | sed \\\"s/00000000//;s/|.*//;s/ //g\\\"`\"} \$0 !~ \"^#\" {printf(\"curl \\\"${BASE}%s\\\" -s | openssl aes-128-cbc -K \$key -iv 00000000000000000000000000000000 -d >seg%05i.ts\\n\", \$0, c++)}" | bash
Danke für die Antwort, ich war in der Lage, laden Sie das video der letzten Woche mit hlsdl, github.com/selsta/hlsdl
InformationsquelleAutor salfter
Sogar durch diese Datei mit AES verschlüsselten Daten, die
openssl
weiß nicht, diem3u8
- format. Allerdings FFmpeg könnte in der Lage sein, es zu handhaben.Um drucken zu können, es richtig auf nicht-Windows-Maschine, einfach konvertieren Sie es in CER (cf. diese Antwort stackoverflow.com/a/22259331/3514658)
InformationsquelleAutor Ebbe M. Pedersen
Während einige von der bash-Skripte in die bereits vorhandene Antworten bekommen Sie einen Teil (oder sogar alle) der Art und Weise, je nachdem, welche Website, die Sie versuchen, herunterladen, Sie könnten auf andere Hindernisse gibt (die unterschiedlichen auth-Methode, custom license server mounten, etc.)
Habe ich gefunden streamlink die robuste Lösung für diese, die auch streamen Sie direkt (nicht als download), wenn es das ist, was Sie nach, und es hat die site-spezifische Arbeit bereits für Sie erledigt für eine lange Liste von Websites (siehe plugins Abschnitt, aber halten Sie im Verstand es ist unter aktiver Entwicklung und der Letzte release war im Juni, so dass für einige der neueren diejenigen, die Sie haben, um
git clone
und aus dem Quellcode installieren).InformationsquelleAutor Max