Open woodongwong opened 3 years ago
号称不限速的阿里网盘推出了分享功能,但对文件的格式有限制,比如不能分享zip、mp3、flac等格式,但可以分享png、bmp、jpg、txt等格式,我试图通过一些手段来突破这个限制,于是我做了以下测试及推断:
66 74 79 70 69 73 6F 6D
66 4C 61 43
所以我的思路是(以分享flac文件举例):将文件开头的字节替换成其他格式的,比如42 4D(bmp格式),然后将后缀更改成.bmp,这样就可以分享了,缺点是不能在线预览,只能下载下来后再通过相反的方式将文件的头几个字节替换成flac的才可以打开文件。
42 4D
.bmp
文件开头的字节如果是替换,缺点是文件变成正确的格式时,需要知道先前文件开头的内容是多少,优点是——快。
(原flac文件)
(修改后的flac文件,文件后缀为bmp)
以php为例,代码如下:
// flac 替换成 bmp $f = fopen('1.flac', 'r+b'); fwrite($f, pack('C*', 0x42, 0x4D)); fclose($f); rename('1.flac', '1.bmp'); // 还原 flac $f = fopen('1.bmp', 'r+b'); fwrite($f, pack('C*', 0x66, 0x4C)); fclose($f); rename('1.bmp', '1.flac');
文件开头的字节如果是插入,缺点是要创建一个新的文件,或者将文件的内容全部读取到内存中,原因是无法直接在文件的开头插入一段内容,优点是不需要知道正确的文件开头字节,只需要将文件的前几个字节删除就好了。
// flac 替换成 bmp $src = fopen('1.flac', 'rb'); $dest = fopen('1.bmp', 'wb'); fwrite($dest, pack('C*', 0x42, 0x4D)); stream_copy_to_stream($src, $dest); fclose($src); fclose($dest); // 还原 flac $src = fopen('1.bmp', 'rb'); $dest = fopen('1.flac', 'wb'); fseek($src, 2); stream_copy_to_stream($src, $dest); fclose($src); fclose($dest);
(peace)
绕过阿里网盘分享文件的格式限制
号称不限速的阿里网盘推出了分享功能,但对文件的格式有限制,比如不能分享zip、mp3、flac等格式,但可以分享png、bmp、jpg、txt等格式,我试图通过一些手段来突破这个限制,于是我做了以下测试及推断:
66 74 79 70 69 73 6F 6D
开头的就是mp4格式,以66 4C 61 43
开头的就是flac格式的文件,具体可以参考维基百科 https://en.wikipedia.org/wiki/List_of_file_signatures所以我的思路是(以分享flac文件举例):将文件开头的字节替换成其他格式的,比如
42 4D
(bmp格式),然后将后缀更改成.bmp
,这样就可以分享了,缺点是不能在线预览,只能下载下来后再通过相反的方式将文件的头几个字节替换成flac的才可以打开文件。替换还是插入?
替换
文件开头的字节如果是替换,缺点是文件变成正确的格式时,需要知道先前文件开头的内容是多少,优点是——快。
(原flac文件)
(修改后的flac文件,文件后缀为bmp)
以php为例,代码如下:
插入
文件开头的字节如果是插入,缺点是要创建一个新的文件,或者将文件的内容全部读取到内存中,原因是无法直接在文件的开头插入一段内容,优点是不需要知道正确的文件开头字节,只需要将文件的前几个字节删除就好了。
以php为例,代码如下:
(peace)