M3U8流视频数据爬虫外传一:牛客网TS视频爬取分析

牛客网是国内比较有名的程序员编程练习和培训教育平台。里面有大量的练习题库,并且也提供大量的教学视频服务。由于之前写过一个《M3U8流视频数据爬虫》的系列文章,并且发现牛客网的教学视频也是TS视频。因此基于技术研究的目的,学习一下牛客网的TS视频保护机制,划一些重点出来与大家分享。

牛客网TS视频反爬分析

和其他TS视频网站一样,牛客网上的视频教程也是经过保护的。根据船长对于牛客网的分析,其视频服务并非使用自己的技术,而是来自一家保利威视的公司。之前船长就写过一篇文章《M3U8流视频数据爬虫详解四:TS视频文件保护》,该文章中提到了大约7中TS视频保护手段。牛客网的视频保护技术使用了其中的以下几种策略:

  • User-Agent检查
  • 用户登陆
  • 加密AES密钥

其中User-Agent检查和用户登陆都是相对容易解决的问题。只需要在HTTP的头信息中设置相关参数即可。这里要着重讨论的是“加密AES密钥”。牛客网使用了比较独特的方法加密AES密钥。大家需要明白,TS文件是通过AES密钥加密的,因此要解密TS文件,就必须获得正确的AES密钥和对应的IV加密向量。那么,牛客网究竟是如何加密他的AES密钥的呢?

破解牛课网TS文件密钥

一般来说,TS文件的加密密钥是16字节的(128位),但是牛客网上下载下来的AES密钥是32个字节的。因此我们可以断定的事,这个密钥并非原始密钥,该密钥被加密了。此时,我们并不知道加密算法。因此,我们使用Chrome开发者工作跟踪内部JS代码,分析得出密钥是使用AES加密的。那么,我们要获取真正的密钥,就必须找到加密该密钥的密钥和IV加密向量。通过分析被严重混淆的JS代码后,我们得出结论,加密密钥的密钥是和视频相关的。也就是说,不同的视频,它的加密密钥的密钥是不一样的。并且这个视频信息就在视频页面上,最后通过一系列眼花缭乱的BASE64解码,MD5和Hash操作,就能得到正确的解密密钥。通过该密钥解密以后,我们便得到了真正的TS视频文件的密钥。随后的工作就简单很多了。

小结

每一个TS视频网站大多会使用不同几种安全策略组合来保护自己的视频。其中最复杂的一种就是对加密TS文件的密钥进行加密。之前在分析阿里大学视频保护的文章中,我们发现阿里大学使用一种位运算的方法来保护密钥。而牛课网用比较标准的AES方法二次加密密钥,难点在于如何找到加密密钥的密钥。由于处于安全考虑,船长就不在本文中分享解密代码了。对TS文件安全相关问题有兴趣的朋友可以通过微信扫描以下二维码参与讨论。

Captain QR Code

扫码联系船长

发表回复

您的电子邮箱地址不会被公开。