pssh box构成 & drm etc.

March 2, 2020 · 分享 · vvtoolbox series · 758次阅读

参考:

如有错误,还请指正。

什么是box

根据CFFMediaFormat(Common File Format & Media Formats Specification)的说明,box指的是通过特定标识符和长度定义的面向对象建立的块。
请输入图片描述

什么是pssh

pssh全称是Protection System Specific Header,即用于标识保护系统的特定头(不顺口的解释)

pssh box的构成

目前主流的DRM系统主要是PlayReady,Widevine和Fairplay三家(微软、谷歌和苹果),在它们的DRM系统数据交换中pssh是一个关键的值。

pssh box的标准构成:

  • 4 bytes – the size of the PSSH box
  • 4 bytes – the constant “PSSH”
  • 4 bytes – flags based on the ISOBMFF specification
  • 16 bytes – unique key system identifier
  • 4 bytes – size of the data inside the PSSH box
  • byte array – data itself

通常情况下,pssh能在mpd一类的文件中见到,例如使用widevine的视频网站,其中的mpd文件大致长这样:
请输入图片描述

一个容易见到且典型的pssh一般就是这个样子了(base64编码形式的):

AAAAQHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACAIARIQ+0sI0/UVlrXzdUjHhhmNNRoEa2t0diIEa2t0dg==

为了方便理解,将它转换到十进制形式:

list(base64.b64decode(b'AAAAQHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACAIARIQ+0sI0/UVlrXzdUjHhhmNNRoEa2t0diIEa2t0dg=='))
[0, 0, 0, 64, 112, 115, 115, 104, 0, 0, 0, 0, 237, 239, 139, 169, 121, 214, 74, 206, 163, 200, 39, 220, 213, 29, 33, 237, 0, 0, 0, 32, 8, 1, 18, 16, 251, 75, 8, 211, 245, 21, 150, 181, 243, 117, 72, 199, 134, 25, 141, 53, 26, 4, 107, 107, 116, 118, 34, 4, 107, 107, 116, 118]

按标准依次分解如下(各类进制转换请自行脑补):

  • 0, 0, 0, 64 表示整个pssh box长度64字节
  • 112, 115, 115, 104 对应的ascii字符就是pssh(小写)
  • 0, 0, 0, 0 表示根据ISOBMFF中特定的标识符
  • 237, 239, 139, 169, 121, 214, 74, 206, 163, 200, 39, 220, 213, 29, 33, 237 表示DRM系统的特定ID,这里的ID是widevine类型,参见此处
  • 0, 0, 0, 32 表示pssh box内的数据长度,即从此处偏移这个长度后到达pssh box末尾
  • 8, 1, 18, 16, 251, 75, 8, 211, 245, 21, 150, 181, 243, 117, 72, 199, 134, 25, 141, 53, 26, 4, 107, 107, 116, 118, 34, 4, 107, 107, 116, 118 该部分32字节,这里实际上是对应视频和音频的两个KID。

其他

  • KID是加密的音频轨道或视频轨道等的特定密钥标识符,简单来说加密视频时这个KID和key对应,如果你知道一对KID和key,那么就能解密由该KID标识的视频/音频文件等。
  • pssh末尾部分不一定是直接两个KID,也有可能是其他构成方式

ENJOY 0

drmpsshISO

最后编辑于1年前

添加新评论

  1. TsungDeng TsungDeng
    2020-03-16 15:01

    老大,vvtoolbox还更新吗,在博客已经找不到文章了,

    回复
    1. 2020-03-16 21:18

      没有。

      回复
avatar

未末

118

文章数

260

评论数

7

分类

新鲜出炉の评论

获取CSDN学院m3u8解密的key
路人甲
路人甲2021-10-05

请问这个方法失效了么?获取到的是空串

获取CSDN学院m3u8解密的key
DK爱梦游
DK爱梦游2021-09-29

大佬求教,51cto的KEY怎么获取?

XstreamDL-CLI BUG修复记录
poohboy
poohboy2021-09-25

大佬,我想问一下,iqiyi的m3u8是不是没法获取?我只找到了一个dash链接,然后手动下载了里面的m4s,但用nilaoda的那个解密工具解不了,老提示获取kid失败

XstreamDL-CLI BUG修复记录
Andist
Andist2021-09-17

en……实在不好意思,代理我知道怎么启用了。我只勾选了自定义代理,但没有填写proxy参数,我太愚钝了对不起!!!

XstreamDL-CLI BUG修复记录
Andist
Andist2021-09-17

感谢您开发的这款软件,对于第一次下载mpd的小白而言很友好! 这段时间用下来就是有时候下载直连的海外视频流时可能因为网络状况不佳,会有下载不完整的问题,下载完进度没到100%,但是也合并解密了,不知道能否增加下载不完整在最后输出报错信息的功能呢? 以及我想请教一下如何让下载器使用小飞机的代理呢?我尝试在“使用自定义代理”的选项上勾选,但是好像命令行中没有变化? (另外我猜您图中的样本是在下载CP+上的用九柑仔店是吗?我也很喜欢这部剧,是我心目中排名第一的台剧哈哈)