2

是否有任何 C# 方法来检查 ISO 文件是否有效,即有效的 ISO 格式或任何其他可能的检查。这种情况就像,如果任何文本文件(或任何其他格式文件)被重命名为 ISO 并提供它以进行进一步处理。我想检查一下这个 ISO 文件是否是有效的 ISO 文件?是否有任何方式以编程方式存在,例如检查文件或文件头的任何属性或任何其他东西

感谢您提前回复

4

4 回答 4

4

引用维基神:

ISO 映像文件没有标准定义。ISO 光盘映像未压缩,不使用特定的容器格式;它们是光盘上数据的逐扇区副本,存储在二进制文件中。ISO 映像应包含光学媒体文件系统(通常为 ISO 9660 及其扩展名或 UDF)的二进制映像,包括其文件中的二进制格式数据,完全按照它们存储在光盘上的方式复制。ISO 映像中的数据将根据创建它的光盘上使用的文件系统进行结构化。

参考

于 2013-06-27T12:04:20.053 回答
2

所以你基本上想检测一个文件是否是 ISO 文件,而不是检查文件,看看它是否有效(例如不完整、损坏......)?

没有简单的方法可以做到这一点,当然也没有 C# 函数(据我所知)可以做到这一点。

解决这个问题的最好方法是猜测存储在 ISO 中的每个块的字节数。猜一猜,或者只是一一尝试所有可能的情况,除非您有一个关联的 CUE 文件实际存储了此信息。PS。如果 ISO 附带同名的 .CUE 文件,那么您可以 99.99% 确定它是 ISO 文件。

每个块的大小为 2048(用户数据)或 2352(原始或音频)字节。其他尺寸也是可能的!!!!我只提到了两个最常见的。在每块 2352 字节的情况下,用户数据从该块中的偏移量开始。通常为 16 或 24,具体取决于模式。

接下来我会尝试检测 CD/DVD 文件系统。假设图像从扇区 0 开始(尽管为了安全起见,您可以执行假设为 -150 到 16 的扫描)。

为此,您需要研究 ISO9660 和 UDF 的细节。扇区 16、256 等将是值得检查的有趣扇区!

归根结底,这不是一件容易的事,您需要熟悉光盘布局和光盘文件系统(ISO9660、UDF,但也可能是 HFS,甚至 BD 上的 FAT)。

如果您要深入研究,我强烈建议您使用 IsoBuster ( www.isobuster.com ) 来帮助您查看每个块的大小、有哪些文件系统、检查不同的关键块等。

于 2013-08-04T13:28:06.167 回答
1

除了上面的答案(尤其是@peter的答案):我最近制作了一个非常简单的 Python 工具,用于检测截断/不完整的 ISO 图像。绝对不是验证(正如@Jake1164正确指出的那样是不可能的),但在某些情况下可能仍然有用。它还支持包含 Apple (HFS) 分区的 ISO 映像。有关更多详细信息,请参阅以下博客文章:

检测损坏的 ISO 图像:引入 Isolyzer

该软件的 Github repo 在这里:

隔离器

于 2017-01-20T11:42:36.210 回答
0

您可以运行md5sum命令来检查图像的完整性

例如,这里是 ISO 列表:http: //mirrors.usc.edu/pub/linux/distributions/centos/5.4/isos/x86_64/

你可以运行:

md5sum CentOS-5.4-x86_64-LiveCD.iso

输出应该与 相同1805b320aba665db3e8b1fe5bd5a14cc,您可以从这里找到:

http://mirrors.usc.edu/pub/linux/distributions/centos/5.4/isos/x86_64/md5sum.txt

于 2013-06-30T06:18:32.473 回答