http://m.dodoge.me/bangumi/8497/play/1/12/
这个视频站中的视频都是视频流地址,数据在百度云 OSS 上,每次请求的时候是一张张的 jpg ,下载下来后是全黑的照片。
有什么方法可以将视频信息从这张 jpg 中提取出来?
要下载的话可以使用 Chrome 插件 cococut ,但本帖只探讨技术。
1
AoEiuV020JP 2023-06-02 16:14:18 +08:00
有个 binwalk ,可以识别出二进制文件哪部分是什么格式内容,
我猜应该可以识别出第几字节到第几字节是 jpg ,然后第几字节到第几字节是视频, 再取出来特定范围的数据就可以, 没测试, |
2
dcty 2023-06-02 16:14:58 +08:00
嗯,你下载之后,把后缀改为 mp4 就可以用播放器打开了。
|
3
misdake 2023-06-02 16:15:23 +08:00 via Android
比如可以在文件尾写上隐藏文件的 offset ,或者 jpg 内容本身就是固定大小的
|
4
CloudnuY 2023-06-02 16:16:05 +08:00
下载下来的 jpg 或者 gif 文件扩展名改成 mp4 就可以用播放器播放了……
|
5
shuax 2023-06-02 16:17:27 +08:00
实际上是 gif ,然后在尾部添加了视频数据。
|
7
dcty 2023-06-02 16:24:33 +08:00
|
8
dcty 2023-06-02 16:26:19 +08:00
@FaiChou #6 我没有每一个都测试,根据我测试的其中一个来看,通过改文件扩展名可以直接播放,如果你不行,可能是你的播放器没容错。
通过 hexdump 查看文件前面的数据,很明显就是视频,只不过在前面插入了一些伪装成图片的信息来欺骗图床。 |
9
whoami9894 2023-06-02 16:31:43 +08:00
DECIMAL HEXADECIMAL DESCRIPTION
-------------------------------------------------------------------------------- 0 0x0 GIF image data, version "89a", 100 x 100 336 0x150 MPEG transport stream data 900 0x384 MPEG transport stream data 177432 0x2B518 MPEG transport stream data 365996 0x595AC MPEG transport stream data 545724 0x853BC MPEG transport stream data 724700 0xB0EDC MPEG transport stream data |
11
totoro52 2023-06-02 22:02:29 +08:00
好家伙 白嫖图床
|
12
token10086 2023-06-03 00:49:06 +08:00
这个时候就要批评下 又拍云 的 form api 了,它上传的时候识别后缀,用户打开的时候是读的头文件。这样就有个有趣的操作,用户可以把 1.mp4 重命名为 1.jpg 。然后发给别人 content-type 头返回的是 mp4 !!!!
别问我意见为什么这么大,被坑过。 |
13
awolf 2023-06-03 14:06:00 +08:00
@token10086 被内容 shencha 到了?
|
14
LLaMA2 2023-06-03 14:27:28 +08:00
文件是一堆按照特定规则编码的字节码,一个文件是什么类型( jpg ? png ? kmv ? mp4.....)不取决于文件名或文件名后缀,而是取决于内容本身。
所以一些奇怪的网站中视频流为了绕过检查,或者是节省流量费用,自己搞一些奇怪的文件,配合定制下播放器播放的逻辑,在播放器处理下字节码还原成原本的面貌,也就不影响播放了 |
15
daimaosix 2023-06-03 21:06:12 +08:00
这就是 hls 协议的视频,现在很多视频转码系统支持伪装后缀,上传到各个大厂的口子上,没啥好讨论的,一看这种类型的网站就明白了
|
16
daimaosix 2023-06-03 21:08:40 +08:00
下载下来后缀改成 ts 就能播
|