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

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. Linkerd 2.10(Step by Step)—设置服务配置文件

    Linkerd 2.10 系列 快速上手 Linkerd v2.10 Service Mesh 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 部署 ...

  2. 最佳实践丨使用Rancher轻松管理上万资源不是梦!

    前 言 Rancher 作为一个开源的企业级 Kubernetes 集群管理平台.你可以导入现有集群,如 ACK.TKE.EKS.GKE,或者使用 RKE.RKE2.K3s 自定义部署集群. 作为业界 ...

  3. kubernetes之副本控制器(RC/RS)

    1.了解ReplicationController ReplicationController是一种kubernetes资源,可确保它的pod始终保持运行状态. 如果pod因任何原因消失(例如节点从集 ...

  4. Spring官方发布新成员:Spring GraphQL

    近日,在GraphQL Java诞生6周年的时候,Spring社区通过博客宣布正式创建全新项目:Spring GraphQL,同时还发布了这个新项目的里程碑1.0版本. 博客原文:https://sp ...

  5. POJ 2826 An Easy Problem? 判断线段相交

    POJ 2826 An Easy Problem?! -- 思路来自kuangbin博客 下面三种情况比较特殊,特别是第三种 G++怎么交都是WA,同样的代码C++A了 #include <io ...

  6. Gym 101206L Daylight Saving Time 根据年月日计算星期

    题意: [3月的第二个周日02:00:00 , 3月的第二个周日03:00:00) 这个区间都不是PST或PDT,[11月的第一个周日01:00:00 , 11月的第一个周日02:00:00) 这个区 ...

  7. POJ 2084 Game of Connections 卡特兰数

    看了下大牛们的,原来这题是卡特兰数,顺便练练java.递归式子:h(0)=1,h(1)=1   h(n)= h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)h(0) ( ...

  8. Place the Robots 需要较强的建图能力

    Place the Robots 思路:在任意一个点格子放机器人,那么它所在的行和列被控制了.我们对每一行或每一列连续的空地(草地忽视)称之为块,给每一行和每一列的块标号, 每一行的快与每一列的快相交 ...

  9. Java程序设计(2021春)——第一章课后题(选择题+编程题)答案与详解

    Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 第一章选择题 1.1 Java与面向对象程 ...

  10. Mybatis学习(8)动态sql语句

    Mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...