HLS-M3U8流媒体视频加密KEY介绍以及平台案例!
Posted 上官兮唐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HLS-M3U8流媒体视频加密KEY介绍以及平台案例!相关的知识,希望对你有一定的参考价值。
首先介绍M3U8(M3U)
M3U8其实是 HTTP Live Streaming(缩写为 HLS) 协议的部分内容,而 HLS (HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括m3u(8)的索引文件,TS媒体分片文件和key加密串文件。
M3U8文件内链接地址又分为绝对地址与相对地址,绝对地址即完整地址,相对地址依赖当前文件目录地址!媒体分片文件与key加密串文件有N多种,例如常见码流分片格式ts、m4s、bbts、mp4等,常见key加密串:key文件、网址、明文,同时部分key对应有IV值,增加加密强度!
以M3U8文件加密Ts码流分片为例:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOWCACHE:1
#EXT-X-KEY:METHOD=AES-128,URI="域名/e775250b62/4/e775250b62d01c179fb6370ae3759a34_1.key",IV=0x864267cc19f34ec1066e016e0da856ee
#EXTINF:10.000000,
https://域名/e775250b62/0/1234567890123/4/75/9a/34_1/e775250b62d01c179fb6370ae3759a34_1_0.ts?pid=1668781305998X1650713&device=desktop
其中#EXT-X-KEY:METHOD=AES-128,表示TS加密类型为AES-128,其中加密参数链接为”域名/e775250b62/4/e775250b62d01c179fb6370ae3759a34_1.key”,对应IV为"0x864267cc19f34ec1066e016e0da856ee"
一般加密为JS混淆或wasm,通过上面M3U8文件内加密KEY参数进行逆向解密得到base64 key:vTXHSbdTixwRuG6ydfoD3A==
加密算法模式:
ECB: 电码本模式(Electronic Codebook Book)
CBC: 密码分组链接模式(Cipher Block Chaining)
CTR: 计算器模式(Counter)
CFB: 密码反馈模式(Cipher FeedBack)
OFB: 输出反馈模式(Output FeedBack)
AES的工作模式体现在把明文块加密成密文块的过程中!
AES填充方式:
1.NoPadding
2.PKCS7Padding
3.ZeroPadding
4.AnsiX923
5.Iso10126
6.Iso97971
AES明文块拆分的长度固定为128bit,当一段长度不足128bit,或者超过128bit,但不是其倍数时,就没法把明文按128bit长度分成等长的明文块,这时候就需要对明文块进行填充,将其补齐为128bit!
常见M3U8数字版权保护加密:
普通JS混淆、Wasm、Apple FairPlay Drm、优酷 Copyright DRM、Marlin DRM、爱奇艺BBTS、Google widevine、vdocipher drm等等。。。
Apple FairPlay Drm:#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://5652421",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"
保利威 Drm:#EXT-X-KEY:METHOD=AES-128,URI="网址/e775250b62/4/e775250b62d01c179fb6370ae3759a34_1.key",IV=0x864267cc19f34ec1066e016e0da856ee
气球云 Drm:#EXT-X-KEY:METHOD=AES-128,URI="网址/sdk_api/video/hls_clef/sd?resNo=2c531c09106e46469dd0ac6d00ab9d6a&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsZXZlbCI6InNkIiwicGxheUF1ZGlvIjpudWxsLCJubyI6IjJjNTMxYzA5MTA2ZTQ2NDY5ZGQwYWM2ZDAwYWI5ZDZhIiwianRpIjoiNmE0MTJkNWUtYzRhMC00MSIsInRpbWVzIjoxLCJleHAiOjE2Njg3OTIwNjcsImVuY3J5cHQiOjMsIm5hdGl2ZSI6MCwiaGxzQ2xlZkVuY3J5cHRWZXJzaW9uIjozfQ.I37KD6P3AbmUVzTZT9UWPdt49MZ9KCNozZVIwJ7aevU&ssl=1",IV=0xfe99ec584abfaae7ec901b2820b162b5
阿里云 Drm:#EXT-X-KEY:MEATHOD=AES-128,URI="Njk2NTAzZGEtOGMxZS00NjJkLWI5NTItMGQ3M2M4MDQzMjU5dW9wdlFNVGVxekxvTkJKOEhCQTVUa2REd0MvN3U1ZEJBQUFBQUFBQUFBQS9WcTJ2dTZXbGd4RkQwZEZYa3FCd2Q3Q1FjS1VHZEl0ZDF1YjdFVDRLQUZGMHlncDM2cVBF"
腾讯视频 Google Widevine Drm:#EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAANnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABYaB3RlbmNlbnQiC3owMDMyMWd1YmNq",KEYID=0x02DF301A8F3051D172B3695532391EA7,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
本文不讨论解密key,仅做学习研究,禁止任何违反法律与道德的行为!欢迎各位大佬交流指点~
大厂音视频职位内推--百度智能云
百度智能云视联网平台C++高级研发工程师
工作职责:
- 负责百度视频云智能视联网平台EVS平台开发、架构优化;
- 负责百度视频云智能视联网平台流媒体服务和音视频转码开发、性能优化;
- 负责百度视频云智能视联网平台安防视频监控通用协议接入、优化、私有协议开发;
- 能够根据开发经验,改进技术框架、规范开发模式、进行技术积累;
- 能够对客户需求场景进行技术拆解、方案制定、输出交付;
职责要求:
- 计算机或相关专业本科以上学历;
- 具有3年以上软件开发经验,2年以上音视频处理、直播或者视频监控系统开发经验;
- 熟悉RTP/RTMP/RTSP/FLV/HLS等流媒体传输协议
- 熟悉SIP、GB28181、ONVIF等视频监控协议开发;
- 熟练掌握C/C++语言,熟悉网络编程、多线程编程技术,有分布式系统开发和设计经验
- 熟练掌握Linux/UNIX,了解基本的shell编程;
- 具备优秀的逻辑思维能力,对解决挑战性问题充满热情,善于解决问题和分析问题;
- 有强烈的上进心和求知欲,善于学习新事物,渴望用技术改变未来;
- 良好的团队合作精神,较强的沟通能力和学习能力;
优先:
- 具有直播、流媒体处理、音视频转码等相关工作经验者优先;
- 具有音视频会议、视频监控产品平台开发经验者优先;
- 熟悉视频图像
以上是关于HLS-M3U8流媒体视频加密KEY介绍以及平台案例!的主要内容,如果未能解决你的问题,请参考以下文章