/ / Ako dešifrovať AES-128 šifrované m3u8 video súborov? - šifrovanie, openssl, aes, m3u8

Ako dešifrovať AES-128 šifrované video súbory m3u8? - šifrovanie, openssl, aes, m3u8

Snažím sa dešifrovať AES-128 šifrované video súbory m3u8, ako je tento:

súbor m3u8:

#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
...

Skúšal som s openssl:

openssl aes-128-cbc -d -kfile key.txt -iv 99b74007b6254e4bd1c6e03631cad15b -nosalt -in video_enc.ts -out video_dec.ts

key.txt obsahuje veľmi dlhý kľúč ->

bad decrypt
1074529488:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:

Čo robím zle ?

odpovede:

4 pre odpoveď č. 1

Aby bolo možné dešifrovať šifrovaný video tok, potrebujete šifrovací kľúč. Tento kľúč je nie časť toku. Malo by sa získať samostatne.

Hlavička EXT-X-FAXS-CM obsahuje metaúdaje DRM a nie kľúč.

To je dôvodom pre vývojárov Adobe Media Servervodítko: Zoznam skladieb chránený variantom Adobe Access Server tiež musí obsahovať značku # EXT-X-FAXS-CM. Hodnota tagu # EXT-X-FAXS-CM v variantnom zozname skladieb je relatívny URI vzťahujúci sa na metaúdaje DRM jedného z jednotlivých tokov. na vytvorenie relácie DRM. Rovnaká relácia DRM bude použitá pre všetky šifrované súbory M3U8 vo variante playlistu.

Úplný sprievodca nájdete tu: http://help.adobe.com/en_US/adobemediaserver/devguide/WS5262178513756206-4b6aabd1378392bb59-7fe8.html

Uvádzame aj to, že faxy: //faxs.adobe.com URI je určené na poskytovanie miestnych kľúčov. Takže kľúč získaný lokálne zo zariadenia.


1 pre odpoveď č. 2

To môže byť trochu hack, ale vzhľadom k URL na .m3u8 súbor, bude stiahnuť a dešifrovať súbory, ktoré tvoria prúd: \ t

#!/usr/bin/env bash
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 """"$0"""" | openssl aes-128-cbc -K $key -iv $iv -d >seg%05i.tsn", c++)}" | bash

Tento skript generuje druhý skript, ktorýextrahuje kľúče a inicializačné vektory a používa ich na dešifrovanie počas sťahovania. To potrebuje curl, awk, hexdump, sed a openssl na spustenie. "Pravdepodobne bude udusiť nešifrovaný prúd alebo prúd, ktorý používa niečo iné ako AES-128 (je podporované akékoľvek iné šifrovanie?").

Dostanete veľa súborov: seg00000.ts, seg00001.ts atď.https://www.videohelp.com/software/tsMuxeR) zlúčiť tieto súbory do jediného súboru (jednoduché spojenie pre mňa nefungovalo ... je to to, čo som skúšal ako prvý):

(echo "MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr  --vbv-len=500"; (echo -n "V_MPEG4/ISO/AVC, "; for i in seg*.ts; do echo -n ""$i"+"; done; echo ", fps=30, insertSEI, contSPS, track=258") | sed "s/+,/,/"; (echo -n "A_AAC, "; for i in seg*.ts; do echo -n ""$i"+"; done; echo ", track=257") | sed "s/+,/,/") >video.meta
tsMuxeR video.meta video.ts

(ID trasy a rýchlosť snímania môžu vyžadovať úpravu ... získajte hodnoty, ktoré chcete použiť odovzdaním jedného zo stiahnutých súborov do súboru tsMuxeR.)

Potom použite ffmpeg na remux na niečo trochu širšie pochopené:

ffmpeg -i video.ts -vcodec copy -acodec copy video.m4v

0 pre odpoveď č. 3

Aj cez tento súbor obsahuje šifrované údaje AES, openssl Neviem m3u8 Formát. však FFmpeg môže byť schopný zvládnuť to.