2016-09-17 317 views
1

我有一個文件,我在CENC中加密過,現在我試圖使用bento4 mp4decrypt工具中的mp4decrypt解密它。該文件由mp4文件中的單個h264曲目組成。這是mp4info的輸出--verbose努力使用Bento4工具解密CENC編碼的文件

File: 
major brand:  dash 
minor version: 0 
compatible brand: iso6 
compatible brand: dash 
Movie: 
duration: 0 ms 
time scale: 120000 
fragments: yes 

Found 1 Tracks 
Track 1: 
flags:  7 ENABLED IN-MOVIE IN-PREVIEW 
id:   1 
type:   Video 
duration: 0 ms  
language: und 
media: 
sample count: 0 
timescale: 120000 
duration:  0 (media timescale units) 
duration:  0 (ms) 
bitrate (computed): 6386.097 Kbps 
display width: 1920.000000 
display height: 817.021271 
Sample Description 0 
[ENCRYPTED] 
    Coding:   encv 
    Scheme Type: cenc 
    Scheme Version: 65536 
    Scheme URI: 
Protection System Details: 
[schi] size=8+32 
    [tenc] size=12+20 
    default_AlgorithmID = 1 
    default_IV_size = 8 
    default_KID = [23 b6 70 1b e9 8b 4e ea 80 4e 9b 59 6c 59 37 a5] 
Bytes: 0000000000000001000000000000000000000000000000000780033000480000004800000000000000010a41564320436f64696e670000000000000000000000000000000000000000000018ffff000000476176634301640028ffe1002e67640028acc8501e019effc0c7c0c81a808080a000007d200017701c00000301c9c380000773595359803c60c65801000668e938233c8f 
Coding:  avc1 (H.264) 
Width:  1920 
Height:  816 
Depth:  24 
AVC Profile:   100 (High) 
AVC Profile Compat: 0 
AVC Level:   40 
AVC NALU Length Size: 4 
AVC SPS: [67640028acc8501e019effc0c7c0c81a808080a000007d200017701c00000301c9c380000773595359803c60c658] 
AVC PPS: [68e938233c8f] 
Codecs String: avc1.640028 

因此,使用上面的密鑰解密它,我肯定會做:

mp4decrypt --key 1:23b6701be98b4eea804e9b596c5937a5 --show-progress input.mp4 output.mp4 

MP4 Decrypter - Version 1.4 
(Bento4 Version 1.5.0.0) 
(c) 2002-2015 Axiomatic Systems, LLC 
usage: mp4decrypt [options] <input> <output> 
Options are: 
--show-progress : show progress details 
--key <id>:<k> 
    <id> is either a track ID in decimal or a 128-bit KID in hex, 
    <k> is a 128-bit key in hex 
    (several --key options can be used, one for each track or KID) 
    note: for dcf files, use 1 as the track index 
    note: for Marlin IPMP/ACGK, use 0 as the track ID 
    note: KIDs are only applicable to some encryption methods like MPEG-CENC 
    --fragments-info <filename> 
    Decrypt the fragments read from <input>, with track info read 
    from <filename>. 

我得到的是在命令行零輸出,和輸出文件仍然無法播放。

任何想法?視頻軌道適用於整個文件,它不會自行分割成片段。

回答

0

您試圖使用密鑰ID而不是密鑰本身解密文件。 「23 b6 70 1b e9 8b 4e ea 80 4e 9b 59 6c 59 37 a5」是密鑰的標識符,而不是密鑰本身。當然你不會破譯。它位於文件中以便DRM系統檢索密鑰(發送或搜索keyID以獲取密鑰本身作爲回報)。 嘗試使用密鑰值進行解密。 你mp4encrypt命令應該已經使用像一個選項: --key 1 :: 0000000000000000 作爲IV大小爲8

+0

因此,如果這是keyid的,我怎麼使用這個值來獲得實際的鑰匙? –

+0

簡短的回答是:我不知道,這取決於:) 長的答案是:你是否自己密碼的內容?如果是的話,你應該知道如何從keyID獲取密鑰。如果不是,則取決於您用於管理內容保護的DRM。在標準DRM中,密鑰服務器應該被公開以便從密鑰ID中獲得密鑰。 「key = Fdrm(kid)」的交付可以根據drm和購買/消費用例而變化。但這實際上是一個DRM問題,而不是內容保護問題。 –