找回密码
 立即注册
快捷导航

ts文件伪装bmp图片探讨与应用以及猜想

[复制链接]
小笼包 2023-8-15 01:33:14 | 显示全部楼层

前言

先看一个视频:

https://2481asd.bj.bcebos.com/?url=https://2481.cdn.bcebos.com/m3u8File/41b89f46c3f3739f445237f18a2e4227/index_format.m3u8

这个视频引用了一个m3u8文件:https://2481.cdn.bcebos.com/m3u8File/41b89f46c3f3739f445237f18a2e4227/index_format.m3u8

其中引用了一些bmp文件

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00000.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00001.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00002.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00003.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00004.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00102.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00103.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00104.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00105.ts.bmp&app=2020
#EXTINF:2.000000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00106.ts.bmp&app=2020
#EXTINF:1.300000,
https://gimg2.baidu.com/image_search/src=2481.cdn.bcebos.com/m3u8/41b89f46c3f3739f445237f18a2e4227/bmpPath/index_00107.ts.bmp&app=2020
#EXT-X-ENDLIST

如果单独把这些图片拿出来看看呢?

ts文件伪装bmp图片探讨与应用以及猜想4396 作者:小笼包 帖子ID:625

依托使这图片

但其实你把它下载下来,改后缀为.ts,其实是能播放的!

原理

简单来讲,就是把bmp文件的字节头放在了ts文件之前,这样就会被认为是一张图片。而如上图雪花屏一般的样子则是ts文件的数据。

BMP字节头

BMP文件总共由四个部分构成:

(1)BMP文件头(bmp file header):提供文件的格式、大小等信息

(2)位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息

(3)调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表,在使用 256位彩色、16位彩色等情况下用到

(4)位图数据(bitmap data):就是图像的像素数据

https://blog.csdn.net/weixin_39756273/article/details/110585675

看例子:

/*
BMP文件大小计算: ()14+40) + 长 * 宽 * 比特位深 / 8
*/
var header1 = '42 4D FF FF FF FF 00 00 00 00 36 00 00 00 28 00 ' //FF FF FF FF 图片总大小
var header2 = '00 00 58 02 00 00 FF FF FF FF 01 00 18 00 00 00 ' //分别是 int 高度 | short 比特/位深
var header3 = '00 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 ' //FF FF FF FF 大小为图片总大小 - 54(54是字节头长度)
var header4 = '00 00 00 00 00 00'

第一行

40 4D 代表着 BM,是BMP文件的开头

第一行我用FF FF FF FF代替的是文件总大小,大小按照注释计算,即 视频总大小 + 54 。其中54是BMP文件头大小。

比如你有一份大小为 615,888 字节的ts文件,

  1. 615,,888 + 54字节 = 615,942 字节
  2. 转换成16进制 => 96606 补位一下 => 00096606 分隔一下 => 00 09 66 06
  3. <重要> 如果你看真正的BMP文件头,你会发现其中文件总大小的数据并不是正着看的,比如BMP图片总大小 615,942 字节,它显示的是 06 66 09 00 不是 00 09 66 06。很明显,这是倒过来了,所以 2. 获得的代表大小的数据需要倒过来 00 09 66 06 => 06 66 09 00

--

第二行

58 02 00 00代表着 宽度 为 600,高度需要按照ts文件大小算,都需要把结果倒过来,如 3.

--

第三行

FF FF FF FF 代表的是图片数据的大小,不包括 BMP字节头。即 ts文件的大小。按照上文说的方法弄即可

--

第四行

不用改。

在这之后就可以把改完的BMP文件头和ts数据buffer接上即可。

相关问题:

  1. 如果弄出来的图片打不开,你可以拖到浏览器看看,是不是有一条透明的部分(一般在最上面),如果有,说明你设置的宽高和ts的大小有差异,即ts文件的数据无法填充全图片,从而导致报错。

TS字节头

分析
TS层的packet都是固定等长的188字节包,由ts header、adaptation field、payload组成,其中ts header固定4个字节(32位);adaptation field可能存在也可能不存在,主要作用是给不足188字节的数据做填充;payload是pes数据。
————————————————
版权声明:本文为CSDN博主「andylao62」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/andylao62/article/details/120019483

无需改动

应用

应用我就不多说了,很广泛的。

如果你想要的成品,我写了一份,但是不公开。你可以找我要

猜想

说实话,我没动且没懂为什么加了BMP的字节头之后还能播放ts文件,只能说ts文件播放可能是检索到文件开始位置才会当做开头播放罢,就像图片压缩包一样,把图片和压缩包的buffer拼接一下。

结束语

说实话,探索这个的过程挺有意思的。再加上我上篇文章写的白嫖百度的图片服务器,就可以开零成本视频站了。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

温馨提示

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

Archiver|手机版|小黑屋|DLSite

GMT+8, 2024-11-22 04:38

Powered by Discuz! X3.5 and PHP8

快速回复 返回顶部 返回列表