[免责声明]本文来源于作者个人学习整理,仅供学习交流使用,不构成商业目的。所有资源均系本人个人学习或网络收集,仅提供一个展示、介绍、观摩学习的博文,不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任。如涉及文章内容、版权和其它问题,请与本人联系,我将在第一时间处理。

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视频解密获取分析实战分享的更多相关文章

  1. 优酷m3u8视频源地址获取失败

    昨天和今天上午,优酷站点视频全然没有办法播放,可是我是获取的优酷视频的视频原地址,所以app还是能够正常播放而且有下载功能.今天下午開始,优酷视频网页能够訪问了,可是视频原地址却不在了.我全部的app ...

  2. 打造m3u8视频(流视频)下载解密合并器(kotlin)

    本文是对我原创工具m3u8视频下载合并器关键代码解析及软件实现的思路的讲解,想要工具的请跳转链接 1.思路说明 思路挺简单,具体步骤如下: 下载m3u8文件 解析m3u8文件获得ts文件列表 根据文件 ...

  3. 《Wireshark数据包分析实战》 - http背后,tcp/ip抓包分析

    作为网络开发人员,使用fiddler无疑是最好的选择,方便易用功能强. 但是什么作为爱学习的同学,是不应该止步于http协议的,学习wireshark则可以满足这方面的需求.wireshark作为抓取 ...

  4. 如何打造一款m3u8视频爬虫

    0.前言 m3u8是一种很常见的网页视频播放器的视频源,比如说中国大学MOOC中课程就是使用了该种视频格式. 随便打开一门课程,就可以发现在网络请求中存在一个m3u8的文件,在preview中预览,它 ...

  5. 小D课堂 - 新版本微服务springcloud+Docker教程_4-03 高级篇幅之Ribbon负载均衡源码分析实战

    笔记 3.高级篇幅之Ribbon负载均衡源码分析实战     简介: 讲解ribbon服务间调用负载均衡源码分析         1.完善下单接口         2.分析@LoadBalanced ...

  6. stars-one原创工具——m3u8视频下载合并器(kotlin)

    一款可以下载m3u8.解密ts文件及合并ts文件的视频下载工具 蓝奏云下载地址 github地址 软件对你有帮助的话,不妨赞赏一波!感谢! 程序说明 采用多线程下载,可有效的提高下载速度 内置解密程序 ...

  7. 恶意代码分析实战五:OllyDebug动态结合

    目录 恶意代码分析实战五:OllyDebug动态结合 OllyDebug界面介绍 OllyDebug载入程序方法 OllyDebug地址跳转 OllyDebug下断点 OllyDebug单步执行 Ol ...

  8. 恶意代码分析实战四:IDA Pro神器的使用

    目录 恶意代码分析实战四:IDA Pro神器的使用 实验: 题目1:利用IDA Pro分析dll的入口点并显示地址 空格切换文本视图: 带地址显示图形界面 题目2:IDA Pro导入表窗口 题目3:交 ...

  9. IOS从视频中获取截图

    从视频中获取截图: NSString *movpath =[[NSBundle mainBundle] pathForResource:@”iosxcode4″ ofType:@”mov”]; mpv ...

随机推荐

  1. 通过AI识图判断图片是否为小票

    先在百度智能云中创建一个应用加入以下标记功能(没有智能云账号可以去创建一个,创建应用也都是些基本操作) 本次只用到标记的功能. 此功能在图像识别下面. 创建应用后,页面会出现平台分配的密钥:API K ...

  2. Linux中useradd的用法

    语法:useradd [选项] 用户名 选项: -d<登陆目录> 指定新用户登陆的起始目录,默认为/home -e<有效期限> 指定用户的有效期限,格式为 YYYY-MM-DD ...

  3. Docker入门与进阶(下)

    Docker入门与进阶(下) 作者 刘畅 时间 2020-11-12 实验主机配置 系统centos7.5 主机名 ip 配置 应用 harbor-master 172.16.1.71 2核4G/60 ...

  4. 41.1、shell编程案例

    1.案例1(表达式案例): 开发shell脚本分别实现以定义变量,脚本传参以及read读入的方式比较2个整数大小.用条件表达式(禁if) 进行判断并以屏幕输出的方式提醒用户比较结果: [root@ba ...

  5. 使用kubeadm进行k8s集群升级

    一.目标 操作系统:CentOS Linux release 7.6.1810 (Core) 安装软件: docker:18.06.3-ce 从v1.15.5升级到v1.16.15 当前版本: [ro ...

  6. consul 多节点/单节点集群搭建

    三节点配置 下载安装包 mkdir /data/consul mkdir /data/consul/data curl -SLO https://github.com/consul/1.9.5/con ...

  7. [源码解析] 深度学习分布式训练框架 horovod (14) --- 弹性训练发现节点 & State

    [源码解析] 深度学习分布式训练框架 horovod (14) --- 弹性训练发现节点 & State 目录 [源码解析] 深度学习分布式训练框架 horovod (14) --- 弹性训练 ...

  8. Kong Admin API — 核心对象

    目录 Service API详解 1. 添加服务 2. 列出service列表 3. 查找service 按条件查找service 查找与指定route关联的service 查找与指定Plugin关联 ...

  9. Nacos入门学习&实践

    文中涉及到了一些模块代码没有给出,我一并上传到github了,可以整个项目clone下来进行调试. 地址:https://github.com/stronglxp/springcloud-test 1 ...

  10. C++ 标准模板库(STL)——容器(Containers)的用法及理解

    C++ 标准模板库(STL)中定义了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量(vector).队列(queue).栈(stack).set.map等.这次主要 ...