[color=]未经许可,禁止转载!!!
一、前言
最近有朋友问我,某个视频网站也是阿里ts加密方式。恰巧51假期,就拿来分析一番,一看代码与之前某视频网的加密方法几乎完全一样。唯一不同的是 AES解密时逻辑稍有不同。还有一些奇怪的问题,同时发现,自己写过的代码,自己都已经不理解了,之前吾爱发的解密文章,被xx了,综合种种吧,冒出了写此文,算是一个复习,同时把方法分享给大家。此外,前些日子有个朋友在帖子中提到了PES解密的问题,希望此文也可以帮助到他。@VOOV
二、TS文件结构概述
1、几个基本概念
ES流(Elementary Stream) 基本码流,不分段的音频、视频或其他信息的连续码流。
PES流 把基本流ES分割成段,并加上相应头文件打包成形的打包基本码流。PES是打包过的ES,已经插入PTS和DTS,一般一个PES是一帧图像。
TS流(Transport Stream) 传输流,将具有共同时间基准或独立时间基准的一个或多个PES组合(复合)而成的单一数据流(用于数据传输)。
其数据内容可包含视频、音频、字幕等数据。将一个视频切成多个ts文件,实现视频的分段传输。多用于电视媒体。
2、ts文件格式
ts文件由ts数据包组成,每个包大小为188字节(或204字节,在188个字节后加上16字节的CRC校验数据,其他格式一样),每个数据包存储的内容可能不同,可能是视频、音频、字幕,或索引表信息,索引表就类似于一本书的目录,通过目录,就可以找到需要的章节,章节就类似于视频或音频等数据。
[color=]注:本文所描述的ts包,均为188字节。
ts数据包 由 4字节包头、附加数据(一般用来填充,为了满足188字节)、负载数据(即PES的部分数据)如下图:
ts.jpg (116.35 KB, 下载次数: 0)
下载附件
2022-5-3 16:12 上传
一个完整的PES包数据,可能存在于多个ts数据包中,也就是说,一个ts包中,可能含有pes包的包头,也可能仅仅含有pes包的负载数据.
下图展示了,PES包是如何转为TS包的。
pes_ts.jpg (148.42 KB, 下载次数: 0)
下载附件
pests
2022-5-3 16:12 上传
下面来分析占4字节(32比特)ts包头的结构以及附加域(长度不定)的结构。先上图。
ts_header.jpg (171.03 KB, 下载次数: 0)
下载附件
tsheader
2022-5-3 16:12 上传
这里我们仅分析我们用到的字段,其中头中用到4个字段值,附加域只用到长度字段。如下表。
[table][tr][td]序号