是否有任何 C# 方法来检查 ISO 文件是否有效,即有效的 ISO 格式或任何其他可能的检查。这种情况就像,如果任何文本文件(或任何其他格式文件)被重命名为 ISO 并提供它以进行进一步处理。我想检查一下这个 ISO 文件是否是有效的 ISO 文件?是否有任何方式以编程方式存在,例如检查文件或文件头的任何属性或任何其他东西
感谢您提前回复
是否有任何 C# 方法来检查 ISO 文件是否有效,即有效的 ISO 格式或任何其他可能的检查。这种情况就像,如果任何文本文件(或任何其他格式文件)被重命名为 ISO 并提供它以进行进一步处理。我想检查一下这个 ISO 文件是否是有效的 ISO 文件?是否有任何方式以编程方式存在,例如检查文件或文件头的任何属性或任何其他东西
感谢您提前回复
引用维基神:
ISO 映像文件没有标准定义。ISO 光盘映像未压缩,不使用特定的容器格式;它们是光盘上数据的逐扇区副本,存储在二进制文件中。ISO 映像应包含光学媒体文件系统(通常为 ISO 9660 及其扩展名或 UDF)的二进制映像,包括其文件中的二进制格式数据,完全按照它们存储在光盘上的方式复制。ISO 映像中的数据将根据创建它的光盘上使用的文件系统进行结构化。
所以你基本上想检测一个文件是否是 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 ) 来帮助您查看每个块的大小、有哪些文件系统、检查不同的关键块等。
您可以运行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