某学院m3u8视频解密获取分析实战分享
[免责声明]本文来源于作者个人学习整理,仅供学习交流使用,不构成商业目的。所有资源均系本人个人学习或网络收集,仅提供一个展示、介绍、观摩学习的博文,不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任。如涉及文章内容、版权和其它问题,请与本人联系,我将在第一时间处理。
0x1 视频课程信息收集--m3u8、key
1. m3u8视频文件获取
首先找到对应的课程视频,最好是已经购买了的(你懂的-_-)。接着使用IDM如下图浏览器右上角,我这使用的是firefox安装的扩展插件IDM进行视频下载操作,记下这个下载URL:https://edu.51cto.com//center/player/play/m3u8?lesson_id=1043_253110&id=245898&dp=high&type=wejoboutcourse&lesson_type=course

开始下载,发现弹出如下对话框~~~~~~~

没关系,我们接着往下操作,点击该URL或者复制该地址到浏览器中打开,你会发现下载一个文件newplay.m3u8,然后先保存到本地。
至此,我们拿到了m3u8文件。
2. 通过m3u8文件获取到加密key
既然拿到了文件,我们就用文本编辑打开看看里面啥内容,发现好多信息有某有:METHOD加密方式AES-128、key的URI下载地址、iV偏移量以及下面大量的视频ts切片地址信息。

接下来,我们根据文件中key的URI下载地址链接去试试呗。https://edu.51cto.com//center/player/play/get-key?lesson_id=1043_253110&id=245898&type=wejoboutcourse&lesson_type=course&isPreview=0
出现errorSign,这个啥情况?缺少参数?

重点来了:我们回到原视频播放页面中,接着调试一波看看能不能找到点有用的,打开浏览器的开发者工具, 以firefox为例, 页面上右键--检查, 或者快捷键F12, 切换到Network/网络监视器面板--刷新或重新载入当前页面;
用key关键字过滤url发现完整的key地址链接出来了https://edu.51cto.com/center/player/play/get-key?lesson_id=1043_253110&id=245898&type=wejoboutcourse&lesson_type=course&isPreview=0&sign=401b379280593cf4dbefbd703886475b,点击链接查看详细信息,发现响应里面出现了一串看不懂的字符串BiNQy07alW36osRdnP0UlNOHH7xjEPRamHxjZPYJiNyPx7NUQQVddPiOua0oJOiUjPNjSPxH9N0Ux5elOPyHVUCB0PPHpLw3QHOPZPxUiQyPQLexQQV51这个就是加密的key了记录下来。
注意: 加密key的内容每次都会变化, 但是解密得到的key是唯一的;

0x2 视频课程key解密
获取课程id
视频播放地址https://edu.51cto.com/center/course/lesson/index?id=1043_253110&type=wejob 其中有个id数字: "1043_253110", 这是课程id, 记下这个数字;
加密key
BiNQy07alW36osRdnP0UlNOHH7xjEPRamHxjZPYJiNyPx7NUQQVddPiOua0oJOiUjPNjSPxH9N0Ux5elOPyHVUCB0PPHpLw3QHOPZPxUiQyPQLexQQV51
开始解密
用以上准备好的加密key和课程id, 开始解密:
浏览器打开解密key的js代码(文末百度盘打包有)
打开浏览器的开发者工具, 页面上右键--检查, 或者快捷键F12, 切换到console/控制台面板. 在console面板粘贴、执行刚才的js代码;
执行代码:
decode("BiNQy07alW36osRdnP0UlNOHH7xjEPRamHxjZPYJiNyPx7NUQQVddPiOua0oJOiUjPNjSPxH9N0Ux5elOPyHVUCB0PPHpLw3QHOPZPxUiQyPQLexQQV51","1043_253110")

得到解密key: e5e319c31a310fb5
0x3 用解密key解密视频
转换进制
需要先把解密key转为32位的16进制字符串
可以用这个在线工具: https://www.bejson.com/convert/ox2str/ 或安装Windows下hexdump工具手动转换

得到转换后的32位key: 65356533313963333161333130666235
使用bat批量解密ts切片并自动合并:
其中ffmpeg、wget工具配合openssl来实现批量脚本的自动解密合成最终的视频文件。



0x4 百度盘打包程序
链接:https://pan.baidu.com/s/1rIytswcyDpsqLp8GQsRE3A
提取码:blog
PS:开发好的同学亦可python脚本,根据本文内容步骤进行自动批量视频的download。
某学院m3u8视频解密获取分析实战分享的更多相关文章
- 优酷m3u8视频源地址获取失败
昨天和今天上午,优酷站点视频全然没有办法播放,可是我是获取的优酷视频的视频原地址,所以app还是能够正常播放而且有下载功能.今天下午開始,优酷视频网页能够訪问了,可是视频原地址却不在了.我全部的app ...
- 打造m3u8视频(流视频)下载解密合并器(kotlin)
本文是对我原创工具m3u8视频下载合并器关键代码解析及软件实现的思路的讲解,想要工具的请跳转链接 1.思路说明 思路挺简单,具体步骤如下: 下载m3u8文件 解析m3u8文件获得ts文件列表 根据文件 ...
- 《Wireshark数据包分析实战》 - http背后,tcp/ip抓包分析
作为网络开发人员,使用fiddler无疑是最好的选择,方便易用功能强. 但是什么作为爱学习的同学,是不应该止步于http协议的,学习wireshark则可以满足这方面的需求.wireshark作为抓取 ...
- 如何打造一款m3u8视频爬虫
0.前言 m3u8是一种很常见的网页视频播放器的视频源,比如说中国大学MOOC中课程就是使用了该种视频格式. 随便打开一门课程,就可以发现在网络请求中存在一个m3u8的文件,在preview中预览,它 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-03 高级篇幅之Ribbon负载均衡源码分析实战
笔记 3.高级篇幅之Ribbon负载均衡源码分析实战 简介: 讲解ribbon服务间调用负载均衡源码分析 1.完善下单接口 2.分析@LoadBalanced ...
- stars-one原创工具——m3u8视频下载合并器(kotlin)
一款可以下载m3u8.解密ts文件及合并ts文件的视频下载工具 蓝奏云下载地址 github地址 软件对你有帮助的话,不妨赞赏一波!感谢! 程序说明 采用多线程下载,可有效的提高下载速度 内置解密程序 ...
- 恶意代码分析实战五:OllyDebug动态结合
目录 恶意代码分析实战五:OllyDebug动态结合 OllyDebug界面介绍 OllyDebug载入程序方法 OllyDebug地址跳转 OllyDebug下断点 OllyDebug单步执行 Ol ...
- 恶意代码分析实战四:IDA Pro神器的使用
目录 恶意代码分析实战四:IDA Pro神器的使用 实验: 题目1:利用IDA Pro分析dll的入口点并显示地址 空格切换文本视图: 带地址显示图形界面 题目2:IDA Pro导入表窗口 题目3:交 ...
- IOS从视频中获取截图
从视频中获取截图: NSString *movpath =[[NSBundle mainBundle] pathForResource:@”iosxcode4″ ofType:@”mov”]; mpv ...
随机推荐
- DOS命令行(4)——Windows系统的配置与管理(上)
sfc --运行系统文件检查器(需要以管理员身份运行命令提示符) 命令格式:SFC [/SCANNOW] [/VERIFYONLY] [/SCANFILE=<file>] [/VERIFY ...
- redis学习第二天
Redis 在 2.8.9 版本之后添加了 HyperLogLog 结构 Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常 ...
- OSPF多区域原理与配置
OSPF多区域原理与配置 目录 一.OSPF多区域生成 1.1.生成OSPF多区域的原因 二.OSPF的三种通信量 2.1.域内通信量 2.2.域间通信量 2.3.外部通信量 三.OSPF的路由器类型 ...
- Linux中使用QT读取并显示温度传感器数值
环境: Ubuntu 16.04 64 bit QT5.13.1/QT5.12 原理 对于Linux来说一切都是文件,温度传感器也是个文件,如果要获取某个温度传感器的数值,可以读取相应的文件,Linu ...
- [Django REST framework - 序列化组件、source、钩子函数]
[Django REST framework - 序列化组件.source.钩子函数] 序列化器-Serializer 什么是rest_framework序列化? 在写前后端不分离的项目时: 我们有f ...
- jquery循环动画
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title&g ...
- 佛祖保佑永无BUG 神兽护体 代码注释(各种版本)
佛祖保佑 永无BUG /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. ...
- 通过xrdp连接centos7桌面:
6.1.需求场景: 1.希望使用windows远程访问centos图形界面,使用xmanager连接centos远程桌面时有以下问题: (1)只能有一个用户同时使用xmanger连接远程桌面,多个用户 ...
- MySql:CentOS7安装mysql后无法启动服务报错,(需要更新yum源)
首先:需要更新你的yum源,保证yum源最新. 1.安装: yum install -y mariadb-server 2.启动maria DB服务: systemctl start mariadb. ...
- Leetcode No.136 Single Number(c++实现)
1. 题目 1.1 英文题目 Given a non-empty array of integers nums, every element appears twice except for one. ...