解密HLS中的AES加密

主题 加密解密

如果m3u8文件中包含#EXT-X-KEY字段,那么可以断定这个HLS中的ts文件是被加密的,如:

#EXTM3U#EXT-X-VERSION:3#EXT-X-TARGETDURATION:11#EXT-X-MEDIA-SEQUENCE:0#EXT-X-KEY:METHOD=AES-128,URI="https://drm.fptplay.net/secure/vod_decrypt2?token=eyJoYXNoX3ZhbHVlIjogImRiMGM3YjExNmVkNjRhMmE4ZGQ0NTg4NWEwMDc1M2VkIiwgInZpZGVvX2lkIjogIjU1NzgyZTgzMTdkYzEzMjg2NzljZjJkMCIsICJzZXJ2ZXJfdGltZSI6IDE0NTYyMTc2ODUsICJ2YWxpZF9taW51dGVzIjogNzIwfQ"#EXTINF:10.0,media_0.ts?token=eyJoYXNoX3ZhbHVlIjogImRiMGM3YjExNmVkNjRhMmE4ZGQ0NTg4NWEwMDc1M2VkIiwgInZpZGVvX2lkIjogIjU1NzgyZTgzMTdkYzEzMjg2NzljZjJkMCIsICJzZXJ2ZXJfdGltZSI6IDE0NTYyMTc2ODUsICJ2YWxpZF9taW51dGVzIjogNzIwfQ#EXTINF:10.0,media_1.ts?token=eyJoYXNoX3ZhbHVlIjogImRiMGM3YjExNmVkNjRhMmE4ZGQ0NTg4NWEwMDc1M2VkIiwgInZpZGVvX2lkIjogIjU1NzgyZTgzMTdkYzEzMjg2NzljZjJkMCIsICJzZXJ2ZXJfdGltZSI6IDE0NTYyMTc2ODUsICJ2YWxpZF9taW51dGVzIjogNzIwfQ

每个HLS文件都被使用AES-128方法加密,而解密的key文件可以通过URI指定的方式获得。

解密步骤如下:

1. 获取key文件,在HLS文件中找到#EXT-X-KEY,有一个uri,下载下来是16个字节的密钥

$ strkey=$(hexdump -v -e '16/1 "%02x"' key)

2. 下载ts文件,针对每个ts文件(media_0.ts),从0开始按顺序编号(变量index)3. 将编号格式化成32字节长的字符串作为iv

$ iv=$(printf '%032x' $index)

4. 解密ts文件:

$ openssl aes-128-cbc -d -in media_0.ts -out media_decryptd_0.ts -nosalt -iv $iv -K $strkey

另外,通过FFmpeg接收该HLS,则会自动完成解密操作。

解密HLS中的AES加密相关推荐

  1. javascript 解密_Javascript中的AES加密和Java中的解密

    javascript 解密 AES代表高级加密系统,它是一种对称加密算法,很多时候我们需要在客户端加密一些纯文本,例如密码,然后将其发送到服务器,然后由服务器解密以进行进一步处理.AES加密和解密更加 ...

  2. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  3. Java中的AES加密和解密(CBC模式)

    通过有线方式传输诸如纯文本密码之类的机密数据总是容易受到安全性的影响,始终建议对此类信息进行加密并使用SSL传输这些机密数据.Java为此提供了多种加密算法.在本文中,我们将讨论Java中具有CBC模 ...

  4. Javascript中的AES加密和Java中的解密

    AES代表高级加密系统,它是一种对称加密算法,很多时候我们需要在客户端加密一些纯文本(例如密码)并将其发送到服务器,然后由服务器解密以进行进一步处理.AES加密和解密更加容易在相同的平台(例如Andr ...

  5. 使用as3crypto在Flex中实现AES加密

    要在Flex中实现AES加密,可以通过as3crypto实现.但是as3crypto本身的用法比较复杂,一般是封装一下再调用. 下面是9RIA上的一篇文章给出的一个实现,使用中稍感不方便(见注释): ...

  6. vue中使用AES加密与AES解密

    先安装 npm install crypto-js --save-dev 在项目中新建一个utils.js文件 我建在 src/assets/js/utils.js utils.js文件中的内容 im ...

  7. nodejs与javascript中的aes加密

    简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.高级加密标准已然成为对称密钥加 ...

  8. openssl 加密解密 指令_openssl命令aes加密和解密

    openssl命令aes加密和解密 日期:2014-11-12 10:41:25 最后更新日期:2017-07-06 10:00:10 [技术] man openssl查看openssl的功能: [c ...

  9. Android中的AES加密-下

    本文为笔记,记录,写记录后为了方便查阅也为了能更好的记住 参考 什么是AES算法? 前言 本章主要是针对AES加密的原理过程进行梳理.不在于细节,了解各个参数和类的功能来帮助我们再加密是更好的选择如何 ...

最新文章

  1. python安卓版turtle模块下载_python之turtle的模块
  2. 【C语言项目】贪吃蛇游戏(上)
  3. freeCodeCamp 学习记录——初级算法「01」翻转字符串
  4. 前端学习(1081):构造函数和原型概述
  5. ADFS 登录页面自定义
  6. 广州技术沙龙第 2、3 期参会者twitter、blog、兴趣大合集
  7. 瞬间读懂什么是互联网思维、大数据、O2O、众筹、红海
  8. 关于cmd如何进出文件夹
  9. 一台电脑上安装5台tomcat 与 项目部署 probe
  10. Kotlin如何写脚本
  11. xheditor的使用
  12. 火山pc实现找图找色模块
  13. Greenplum Python工具库gpload学习——gpload类
  14. 片刻之后我们就找到了计算机教室英语翻译,全新版大学英语综合教程2课文原文翻译...
  15. 华为交换机查看端口对应的oid索引值
  16. 项目一:家庭记账软件
  17. 拓扑学 计算机领域,吴国平: 拓扑学到底有多重要? 在数学中占据多高的地位?...
  18. Canvas实现微信大转盘抽奖代码
  19. 北理工计算机学院新闻,北理工计算机学院召开物联网工程本科专业建设研讨会...
  20. 光线步进——RayMarching入门

热门文章

  1. IT人经常围观精品站点推荐
  2. 详解JRE和JDK的区别
  3. Javascript与服务器同步时间
  4. HDU多校1 - 6955 Xor sum(字典树+贪心)
  5. CodeForces - 1373E Sum of Digits(贪心)
  6. a律13折线pcm编码例题_a律13折线pcm编码例题
  7. Shell for循环
  8. Harfbuzz API 基本用法
  9. 关于JUnit5 你必须知道的(二)JUnit 5的新特性
  10. 2022有哪些不容错过的后端技术趋势