是否有任何C#方式检查ISO文件是否有效,即有效的Iso格式或任何其他可能的检查。 如果任何文本文件(或任何其他格式文件)重命名为ISO并将其提供给进一步处理,则该场景就像。我想检查天气这个ISO文件是否是有效的ISO文件?是否存在任何以编程方式存在的方式,如检查文件或文件头的任何属性或任何其他东西
感谢您提前回复
答案 0 :(得分:4)
引用维基众神:
ISO映像文件没有标准定义。 ISO光盘映像 未压缩,不使用特定的容器格式;他们 存储的是光盘上数据的逐扇区副本 在二进制文件中。 ISO图像应包含二进制文件 光学媒体文件系统的图像(通常是ISO 9660及其版本) 扩展或UDF),包括二进制格式的文件中的数据, 完全复制,就像它们存储在光盘上一样。里面的数据 ISO映像将根据文件系统进行结构化 用于创建它的光盘上。
答案 1 :(得分: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)帮助您了解每个块的大小,有哪些文件系统,以检查不同的密钥块等。
答案 2 :(得分:1)
除了上面的答案(尤其是@peter的答案):我最近制作了一个非常简单的Python工具,用于检测截断/不完整的ISO图像。绝对不验证(正如@Jake1164正确指出的那样是不可能的),但可能对某些场景有用。它还支持包含Apple(HFS)分区的ISO映像。有关更多详细信息,请参阅以下博文:
Detecting broken ISO images: introducing Isolyzer
该软件的Github回购在这里:
答案 3 :(得分: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