CMD 命令在视频文件开头写入几个字符

CMD 命令在视频文件开头写入几个字符

我有一个视频文件,比如说 mp4 文件,我想在文件开头添加几个字符,使得文件无法播放。我该如何在 Windows 7 上做到这一点?

编辑:

Linux 中的命令怎么样,例如 dd 命令?如有必要,我可以使用 Linux 来执行此操作,添加一些字符,然后在需要时将其删除。

答案1

警告:

您无法使用CMD.exe或任何其他简单的 Windows 工具轻松撤消此操作。


正如你实际要求的那样,添加一些字符,您可以使用 Windowscopy命令。

首先,使用记事本或其他编辑器创建一个文件,几个字符在其中。也许可以是“不要玩这个!”。当然,只需一个空格或任何其他字符就足够了。使用您想要的名称保存文件,例如NoPlay.txt

该命令将通过合并两个文件和COPY /b NoPlay.txt+MyVideo.mp4 LockedVideo.mp4来创建新文件。告诉副本使用二进制模式,因此它不会尝试对文件执行除以下之外的任何操作:LockedVideo.mp4NoPlay.txtMyVideo.mp4/b复制它们。 (更改名称以适合您的文件。)

现在,新文件将是一个“损坏的”视频文件,播放器将检测到这一点,并且无法播放该文件。它甚至可能根本无法将其识别为视频文件。


正如顶部的警告所述,使用 Windows 命令来逆转“损坏”并不简单。甚至可能直接使用命令也不可能。可以使用十六进制编辑器来修复它,但这不是一个顺畅的工作流程。

然而,使用 Linux 来扭转损坏几乎是微不足道的。

以上面给出的示例为例: ,有 16 个字符。文件的创建方式和位置可以改变该文件的实际大小。文件末尾Don't Play This!是否有以及文件是否具有 Windows 或 Linux 行尾都很重要。Enter

在 Windows 和 Linux 中,目录列表(DIRls -l)将显示实际大小,您需要知道这一点才能解锁文件。在 Linux 上,使用命令echo创建文件使其大小为 17 个字节。已知精确的在下面命令中替换文件的大小17,您可以解锁视频。我将坚持使用与上述损坏过程相同的文件名。dd 将要可以工作,但你不会喜欢它的速度。

dd if=dd if=LockedVideo.mp4 of=MyVideo.mp4 bs=1 skip=17

之所以使用选项,是因为skip要跳过的块数是 。使用 默认块大小为 512 字节,即使使用 ,也会删除太多内容skip=1。将块大小设置为 1,bs=1,您可以完全控制跳过的字节数。缺点是dd会读取一个块,写入一个块,然后重复。对于 1.5 GB 的文件,这将花费很长时间。dd对此有一个解决方法,iflag=skip_bytes即跳过的值是字节,而不是块。使用该选项,您仍然可以控制丢弃的字节数,但要使用更大的块大小。(视频通常与 DVD 有关,因此 4K 的块大小似乎是合理的。)

dd if=LockedVideo.mp4 of=MyVideo.mp4 bs=4096 iflag=skip_bytes skip=17 

一种不同的全 Linux 方法

如果像问题编辑建议的那样,您愿意在两种情况下都使用 Linux,那么整个过程就会变得简单一些,因为“损坏”不需要任何文件。有两种选择,具体取决于您的存储空间有多紧张。据我所知,这两种选择的速度没有明显差异。

一个选项是使用完整块大小的随机字节填充视频文件的开头。合理的块大小可以是 4096,与 ISO 文件使用的块大小相同。

第二种选择是在文件开头添加一个字节。这足以使其无法播放,并且新文件占用的额外空间最少。

选项 1,完整的随机字节块:

# Corrupting the video file
dd if=/dev/random of=LockedVideo.mkv bs=4096 count=1
dd if=MyVideo.mp4 of=LockedVideo.mp4 bs=4096 conv=notrunc seek=1
# Cleaning the video file for playing
dd if=LockedVideo.mp4 of=MyNewVideo.mp4 bs=4096 skip=1

选项 2,在开头添加一个字节

# Corrupting the video file
dd if=MyVideo.mp4 of=LockedVideo.mp4 bs=4096 oflag=seek_bytes seek=1
# Cleaning the video file for playing
dd if=LockedVideo.mp4 of=MyNewVideo.mp4 bs=4096 iflag=skip_bytes skip=1

遗言

有一个非常古老的实现dd对于 Windows(Win32 环境),现在可能可用,也可能不可用。选项和工作方式“似乎”与古老的 Linux 版本相匹配,即:否iflag=skip_bytes,但如果程序正常运行,上面的完整阻止选项应该可以工作。不过,YMMV。

相关内容