欢迎光临
我们一直在努力

分析某视频网站将 HLS 流伪装成图片以隐藏视频源

最近在某一视频网站发现一部想看的电影,不想在线看而是下来有空慢慢观赏,于是尝试打开 chrome inspector 抓源, 但是打开后播放视频,却没有 Media 请求,不断增长的只有一些 png 格式的请求,而这些 png 图片打开后只有一个中间一个像素白点,并不像是有效的图片文件。

分析某视频网站将 HLS 流伪装成图片以隐藏视频源



分析某视频网站将 HLS 流伪装成图片以隐藏视频源

于是继续在 network 面板寻找“可疑”请求, 比如fetch或者xhr,发现一个 fetch 请求的数据是像压缩或者加密过的二进制乱码而不是明文

分析某视频网站将 HLS 流伪装成图片以隐藏视频源

点开这个请求的 initiator,看到了我们想看的东西:

分析某视频网站将 HLS 流伪装成图片以隐藏视频源

这里可以看出这个请求是用来获取 hls流 的 index 文件的, 格式是 application/vnd.apple.mpegurl ,而且可以看出response payload 的 String 是 被 gzip压缩过的,解压缩过后,可以看出是标准的 m3u8 文件格式:

分析某视频网站将 HLS 流伪装成图片以隐藏视频源

而我们上面说的只有一个白点的 png 文件地址全都存放在这个 index文件中

这里我想起来之前论坛说的 批量修改 ts 文件后缀 为 png 上传公共图床的帖子,我了其中一个 png 文件下来 ,用Linux hexdump 命令查看文件头,发现确实有 png 文件头,说明不是简单改个后缀名完事的。 但是, 之后的内容就非常可疑了, 很类似 MPEG-TS 文件的packet格式

分析某视频网站将 HLS 流伪装成图片以隐藏视频源

作为对比, 下面是一个标准的 mpeg-ts 文件头:

分析某视频网站将 HLS 流伪装成图片以隐藏视频源

可以看到 png 文件除了开头的 212 字节以外, 其他都是符合 ts 文件的格式的,于是尝试 dd 命令删掉前面 212 字节:  

dd if=0.1 of=output.ts bs=4 skip=53

打开 output.ts 文件,可以正常播放, ffmpeg 查看也是标准 mpegts 文件:

分析某视频网站将 HLS 流伪装成图片以隐藏视频源

分析某视频网站将 HLS 流伪装成图片以隐藏视频源

对于其他的 png 文件,发现也是同样的有 212 bytes 的无效headers,去掉之后同样可以播放。

总结: 所以网站是给 ts 视频文件添加 长度为 212 bytes 的文件头,把它伪装成 png 格式 ,然后客户端再以 二进制处理这个文件,去掉开头的 212 bytes,还原成标准的 ts 文件后,再在播放器里播放。

赞(0) 打赏
未经允许不得转载:哈哈网 » 分析某视频网站将 HLS 流伪装成图片以隐藏视频源

相关推荐

  • 暂无文章

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏