解密m3u8合并加密的TS切片文件

解密m3u8合并加密的TS切片文件

温馨提示:本文共计2221个字,预计阅读时间需要8分钟。

事情的开始只是某? APP 下载后的视频为分段加密 TS 文件,但在 PC 端无法播放。

为了满足自身更好的视觉观感,通过收集学习各方面资料终于完成破解。

其实有了 key,就是一句话的事。

缓存的文件结构分析

如下图,下载后的文件结构非常完全,主要有: index.m3u8,index.key,3 个 json.txt 文件,以及 children 文件夹中的所有切片 TS。

用 PotPlayer 直接打开 m3u8 或者 ts 文件都会报错,从文件列表中可以看出 PotPlayer 是可以正常解读 m3u8 的内容,但为什么无法播放呢?(已指定 key 文件地址)看来还必须得解密转换才行。

了解文件格式的含义

关于 M3U8 的解释

M3U8是Unicode版本的M3U,用UTF-8编码。"M3U"和"M3U8"文件都是苹果公司使用的HTTP Live Streaming格式的基础,这种格式可以在iPhone和Macbook等设备播放。 - 来自维基百科

再看看 HTTP Live Streaming(HLS)的解释

HTTP Live Streaming(缩写是HLS)是由苹果公司提出基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。**它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。**当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。 - 来自维基百科

哦,原来 m3u8 相当于内容制定者,让播放器知道去哪里寻找可用流媒体,继续学习 TS 文件格式是什么

MPEG2-TS 传输流(MPEG-2 Transport Stream;又称MPEG-TS、MTS、TS)是一种传输和存储包含视频、音频与通信协议各种数据的标准格式,用于数字电视广播系统,如DVB、ATSC、ISDB[3]:118、IPTV等等。MPEG2-TS定义于MPEG-2第一部分:系统(即ISO/IEC标准13818-1或ITU-T Rec. H.222.0)。MPEG2-TS面向的传输介质是地面和卫星等可靠性较低的传输介质,这一点与面向较可靠介质如DVD等的MPEG PS不同。- 来自维基百科

上面只截取了部分内容,更多可自行搜索,最关键一点,TS 格式的视频流每一个片段都能独立解码,也就是所谓的切片,至于为什么要这样呢,想想实时电视节目吧,你可以任何时刻打开电视机收看(无法快进),原因就是如此,而点播和回放功能就更像是普通 DVD 格式(可快进,暂停)。

那 index.key 文件又是干什么的?这就要再次深入了解关于 HTTP Live Streaming(HTTP Live Streaming)内容加密。

HTTP Live Streaming中内容加密有两种,一种是对TS切片文件直接加密;另一种是对H.264编码文件中类型为1和5的NAL单元进行加密,其它类型的NAL单元不加密。HLS中媒体分块如果是加密的,其加密密钥通过M3U8文件中的#EXT-X-KEY来指定,密钥文件由客户端从服务器请求认证获得。一个播放列表可以有一个以上的#EXT-X-KEY,同一个媒体段也可以有多个不同KEYFORMAT属性值的#EXT-X-KEY。

此时打开 M3U8 文件再看看,看来采用的就是 AES-128 加密,index.key 是加密文件。(更多 tag 含义点击这里了解)

12345678910111213141516

#EXTM3U#EXT-X-KEY:METHOD=AES-128,URI="index.key"#EXT-X-VERSION:3#EXT-X-TARGETDURATION:10#EXT-X-MEDIA-SEQUENCE:1#EXTINF:10,children/bbc-1-v1-a1.ts#EXTINF:4.08,children/bbc-2-v1-a1.ts#EXT-X-DISCONTINUITY#EXTINF:10,children/bbc-3-v1-a1.ts#EXTINF:10,children/bbc-4-v1-a1.ts#EXTINF:10,children/bbc-5-v1-a1.ts

至此,几乎就明白了视频的加密状况,剩余的 3 个 json 数据主要用于 online 使用,下载后无实际意义,比如 meta.json.txt,打开如下,主要用于 APP 调用后展现封面图和一些其他数据。

解密

了解了这么多,是时候展现一句话的解决方案了。

1

ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy crack.mp4

没错,用 ffmpeg 一句话搞定,那 ffmpeg 又是什么?唉,解密一个东西强迫学习一堆东西。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。- 来自百度百科

从官网可转向到已编译好的 windows 版本网站,我这里下载 422,64-bit,static

然后设置下系统环境变量,如果用我写的批处理完成,可不用手动去设置环境变量,代码如下,文末放个完整含 ffmpeg 的转换包。

1234567891011121314151617181920

@ECHO OFFSET PATH=%PATH%;%~dp0ffmpeg-4.2.2-win64-static\bin; :INPUTM3U8 SET input= SET /p input=复制M3U8目录: IF "%input%"=="" GOTO INPUTM3U8 CD /D %input% ECHO 切换 %input% 成功:INPUTNAME SET inputname= SET /p inputname=复制M3U8文件名: IF "%inputname%"=="" GOTO INPUTNAME :CRACK ffmpeg.exe -allowed_extensions ALL -i %inputname% -c copy crack.mp4 ECHO 已完成转换,请在视频目录查看crack.mp4,点击任意键结束 PAUSE >NULL :END

运行批处理,输入对应目录和对应文件名,如图,搞定,更多 ffmpeg 指令可参考官方文献。

最后,打开 crack.mp4,嗯,因为眼神太过迷离,手动滑稽 ?

现在很多视频网站都采用 TS 格式为首选,主要是因为它很容易使用内容分发网络 CDN 来传输媒体流,反过来,很多程序员也利用类似特点,在各大网站上上传大约 1M 的 TS 视频流,然后再通过 M3U8 完成流媒体播放,妥妥的免费视频床(图片叫图床,所以视频是视频床么),比如这位搞事情的博友。

嗯…… 台湾 SWAG 真的很不错!?

本文参考信息:

视频内容加密封装技术研究

-End-

相关文件下载地址

城通网盘下载

©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

相关推荐

移动个性包是什么意思,中国移动7日个性包是什么意思
历史上世界杯足球大比分反超的经典瞬间(揭秘那些让人热血澎湃的逆袭胜利)
基本字义解释
365彩票还能玩吗

基本字义解释

06-29 👁️ 8063
杀人诛心!梅西晒夺冠照,C罗晒桑拿照,球迷嘲讽:光膀子秀内裤
1998年世界杯意大利vs挪威:一场充满戏剧性的经典对决
爱延续原唱? 爱延续这个品牌怎么样?
365商城官网

爱延续原唱? 爱延续这个品牌怎么样?

07-06 👁️ 3628
发财树这样浇水,不但浇不死,还能绿油油
365彩票还能玩吗

发财树这样浇水,不但浇不死,还能绿油油

07-14 👁️ 7834
魔兽世界9.0鸟德橙装怎么选择
365被限制了让提款

魔兽世界9.0鸟德橙装怎么选择

08-25 👁️ 3326
斤字旁的常用汉字推荐
365彩票还能玩吗

斤字旁的常用汉字推荐

07-17 👁️ 1434