2

如果我有一些文件具有可识别的签名,例如Magic Number,它们在 Nautilus 中被识别为文档、视频或音频,无论后缀如何。

如果我想在编码文件本身不被识别为已编码的情况下对它们进行编码,一种简单的策略可能是将文件内容重新排序为块:

例如,如果文件被分成 10 个相同大小的块(任何剩余部分都可以作为可变大小的第 11 个块留下KABCDEFGHIJK,简单的编码将重新排列块顺序:例如 block_encode input_file output_file ,将导致输出文件组织为:BADCFEHGJIK. (当然,我也可以只交换“后半部分”和“前半部分”,在文件末尾可能保留 1 个字节不变)。

在这种情况下,只需再次应用编码即可实现解码。

生成的文件很可能不会被识别为任何有效的文档、视频、音频等。

我的问题是:是否有任何简洁(简单)的方式在 bash 中使用标准工具(例如dd)来实现它?(如果需要,我可以编写一个 C 程序)。

后续行动将是:如果文件是媒体文件,我如何将“解码”内容流式传输到例如 VLC,而不必先将解码流保存为文件?

4

1 回答 1

1

我会推荐一个带有众所周知的密钥的简单 XOR。它会在文件中抛出任何幻数,击败file(1),并按顺序运行,因此它对编码以及通过标准输入/标准输出进行流式传输非常简单。如果您选择一个不错的短 XOR 密钥(例如 4 个八位字节),则输出文件将具有与源文件相似的熵,因此文件已出现乱码并不是很明显:如此加密的文本文件仍然可以很好地压缩,例如,而完美加密的最坏情况根本不压缩(这将是与随机字节的异或,密钥长度等于文件长度)。

我不太明白这个问题的动机!尽管使用这种编码并剥离了扩展名,但它会击败大多数文件识别工具,但仅此而已。文件中可能仍然存在可用于对其进行指纹识别的模式。

于 2013-03-13T11:03:21.017 回答