Проверьте, действителен ли ISO

Есть ли какой-либо способ С# проверить, является ли файл ISO действительным или нет, то есть допустимым форматом Iso или любой другой проверкой, возможной или нет. Сценарий подобен, если какой-либо текстовый файл (или файл любого другого формата) переименовать в ISO и отдать его для дальнейшей обработки. Я хочу проверить, является ли этот файл ISO действительным файлом ISO или нет? Существует ли какой-либо программный способ, например, проверка любого свойства файла или заголовка файла или любых других вещей?

Спасибо за любой ответ заранее


iso
person Amol    schedule 27.06.2013    source источник


Ответы (4)


Процитирую богов вики:

Для файлов образов ISO не существует стандартного определения. Образы дисков ISO несжаты и не используют определенный формат контейнера; они представляют собой посекторную копию данных на оптическом диске, хранящуюся внутри двоичного файла. Ожидается, что образы ISO будут содержать двоичный образ файловой системы оптического носителя (обычно ISO 9660 и его расширения или UDF), включая данные в его файлах в двоичном формате, скопированные точно так же, как они были сохранены на диске. Данные внутри ISO-образа будут структурированы в соответствии с файловой системой, которая использовалась на оптическом диске, из которого он был создан.

ссылка

person Jake1164    schedule 27.06.2013

Таким образом, вы в основном хотите определить, является ли файл файлом ISO или нет, а не столько проверить файл, чтобы убедиться, что он действителен (например, неполный, поврежденный, ...)?

Нет простого способа сделать это, и, конечно же, нет функции С# (о которой я знаю), которая может это сделать.

Лучший способ приблизиться к этому — угадать количество байтов на блок, хранящийся в 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 и даже FAT на BD).

Если вы копаетесь в этом, я настоятельно рекомендую получить IsoBuster (www.isobuster.com), чтобы помочь вам увидеть, что размер на блок, какие файловые системы существуют, для проверки различных ключевых блоков и т. д.

person Peter    schedule 04.08.2013

В дополнение к ответам выше (и особенно к ответу @peter): я недавно сделал очень простой инструмент Python для обнаружение усеченных/неполных образов ISO. Определенно не проверка (которая, как правильно указывает @Jake1164, невозможна), но, возможно, полезна для некоторые сценарии тем не менее. Он также поддерживает образы ISO, содержащие разделы Apple (HFS). Для получения более подробной информации см. следующий пост в блоге:

Обнаружение поврежденных образов ISO: знакомство с Isolyzer

И репозиторий программного обеспечения Github находится здесь:

Isolyzer

person johan    schedule 20.01.2017

Вы можете запустить команду 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

person Mingyu    schedule 30.06.2013