新答案
所有测试均使用 WinRAR 5.01 32 位。由于算法应保持不变,因此以下陈述应适用于任何其他先前版本。如果您知道这不是真的,请随时发表评论。
我将简要介绍一下聊天。我多次尝试打包大于 1GB 的文件;然后我混合了文件并尝试提取档案:它起作用了。问题不在于文件的大小。
我想到了三个可能的解决方案:
- 架构在打包过程中受到影响:因此不同的人尝试打包文件,将它们混合会导致错误;
- 不同的人尝试打包文件,给出的文件大小略有不同(例如 250 MB 和 250000 KB)。不过,这会在文件属性中注意到;
- 文件在下载过程中损坏:重新下载它们将证实这一假设。
我对第一个问题最好奇:架构会影响包装过程吗?
我发现答案是是的,是的。以下是重复实验的段落:
- 在计算机A中将您的文件打包成一个档案,给出精确的部分尺寸;
- 在计算机B中打包完全相同的文件,给出完全相同的零件尺寸(TODO: 检查此实验在类似架构下是否仍然有效,例如 Intel i7 和 Intel i5)在不同架构下(例如 Intel 处理器和 AMD 处理器);
- 将一个(或多个,如果您愿意,但当然不是全部!)部件从计算机 B 转移到计算机 A。请记住在A 在传输之前从计算机中删除这些文件;
- 将所有文件放在同一目录下,检查它们是否都具有相同的名称(例如“AAA part1”、“AAA part2”...);
- 提取它们;
- 享受您的 CRC 错误!。
使用 Intel i7-3632QM 和 AMD FX 6300 进行测试。
我有一些怀疑,压缩文件是一样的,但是CRC码不一样。
旧答案
确实有办法。在我的计算机科学学术学习期间,我们有一个计算机取证课。我了解到每个文件都有一个静态的开头(我们可以说是一个标题),这使程序能够识别它的类型以及解密它的方式。要查看它,您只需使用文本编辑器打开它(我猜 Notepad++ 是迄今为止最好的)
例如,jpeg 图片以ÿØÿá 开头。
我尝试将视频存储在一些拆分的 .rar 文件中,但知道它们是否属于同一个存档比我想象的要简单。
每个 rar 文件都以 Rar! 开头。在第二行或第三行,它应该显示存储在存档中的文件的名称:在我的例子中,myVideo.mp4。如果您的所有档案都包含该文件名,那么它们可能是同一个档案的一部分。
如果存档中有多个文件并且您不知道它们的名称,情况会变得更糟。其实如果有多个文件,RAR文件结构如下:
文件 1:
Rar!
NUL NUL NUL //Random things here
NUL NUL NUL NUL NUL myVideo.mp4 NUL NUL NUL NUL
//Random things here. If the dimensions of the file exceed the archive,
//the next file will begin with the same name.
//Let's assume that this is happening.
EOF
文件 2:
Rar!
NUL NUL NUL //Random things here
NUL NUL myVideo.mp4 NUL NUL NUL
//This time the file is complete. Since there is still space in the archive,
//it will add another file
NUL NUL NUL NUL mySecondVideo.mp4 NUL NUL NUL NUL
EOF
假设在第二个存档结束时,mySecondVideo 尚未完全压缩。
文件 3:
Rar!
NUL NUL NUL
NUL NUL NUL NUL mySecondVideo.mp4 NUL
NUL NUL NUL
NUL myTextFile.txt
NUL NUL NUL mySecondTextFile.txt NUL
EOF
如果 mySecondTextFile.txt 尚未完全压缩,我的第四个文件将以其名称开头。
我希望它很清楚,我试图让它尽可能简单。如果文件更多,我会从最后一个存档开始。我会记下在该文件中找到的第一个文件名,然后在前一个文件中进行搜索。如果我找到那个名字,我会重复这个序列直到第一个存档。