javascript - 如何将这个 m3u8 和密钥文件解密为 mp4,也许它使用 javascript 来解密数据
问题描述
这是视频网站: 视频网站链接
从这个视频链接,我下载了 m3u8、key.key 和 ts 视频文件,并使用FFMPEG将这些文件转换为 mp4。但错误:
ffmpeg -allowed_extensions ALL -i a.m3u8 -c copy 01.mp4
ffmpeg version N-94813-g85386c36e3-ffmpeg-for-N_m3u8DL-CLI Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.2.0 (GCC)
libavutil 56. 35.100 / 56. 35.100
libavcodec 58. 56.101 / 58. 56.101
libavformat 58. 32.104 / 58. 32.104
libavfilter 7. 58.102 / 7. 58.102
libavresample 4. 0. 0 / 4. 0. 0
libswresample 3. 6.100 / 3. 6.100
[hls @ 007e3000] Skip ('#EXT-X-VERSION:3')
[hls @ 007e3000] Skip ('#EXT-X-ALLOW-CACHE:YES')
[hls @ 007e3000] Opening 'a.key' for reading
[hls @ 007e3000] Opening 'crypto:43924590506ad94e644d0bfac89e14b9_2_0.ts' for reading
[hls @ 007e3000] Opening 'crypto:43924590506ad94e644d0bfac89e14b9_2_1.ts' for reading
[hls @ 007e3000] Error when loading first segment '43924590506ad94e644d0bfac89e14b9_2_0.ts'
a.m3u8: Invalid data found when processing input
关键文件是
00000000h: 46 F5 50 A3 7A 46 85 B5 8C 17 5B 0E 4B 8D F5 49 ; F鮌F叺?[.K嶕I
00000010h: F1 02 79 41 58 C7 A3 D3 17 90 0D D6 27 67 D6 D0 ; ?yAX牵???g中
m3u8文件中的IV值为
IV=0x786d9270e353d8758b621c1f775491f2
FFMPEG 的字节太长。
在我对 html 和 javascript 的有限经验中,当网站页面刷新时,我发现 Chrome blob 是一个随机命名的 javascript 文件。
Chrome - 网络日志:
XHR:43924590506ad94e644d0bfac89e14b9_2.m3u8?pid=1608691204584X1511260&device=desktop
XHR:43924590506ad94e644d0bfac89e14b9_2.key?token=1df110e5-ff1d-42de-bd39-b63304bb3062-53648385
XHR:43924590506ad94e644d0bfac89e14b9_2_0.ts?pid=1608691204584X1511260&device=desktop
Other:blob:https://www.sciconf.cn/93ebcbe3-0211-4ec0-94df-421024e8b505
javascript 文件 ( blob:https://www.sciconf.cn/93ebcbe3-0211-4ec0-94df-421024e8b505
) 中的一些代码如:
o = function() {
function t(t, e, i, n) {
this.decryptdata = i,
this.discardEPB = n,
this.decrypter = new v.a(t,e,{
removePKCS7Padding: !1
})
}
var e = t.prototype;
return e.decryptBuffer = function(t, e) {
this.decrypter.decrypt(t, this.decryptdata.key.buffer, this.decryptdata.iv.buffer, e)
}
我认为网站使用这个js文件来解密密钥文件和IV值,但是我不能在随机命名的js文件中添加断点。
我研究了很长时间,但没有用。
请帮助或尝试给出一些想法如何实现解密的密钥和IV?
提前致谢。