Чтение файлов из необработанного образа диска (2352 байта / сектор)

Я уже спрашивал нечто подобное здесь несколько месяцев назад, но, конечно, решение, использованное в моем обновлении, не очень хорошее, потому что я не знаю, с какого смещения начинается нужный файл, этот код читает весь файл, пока не найдет искомую строку. и это не удобно. Вот почему я искал устройство для чтения файлов ISO9660, написанное на Java, и наткнулся на этот проект, который прекрасно читает файлы ISO9660, но есть некоторые форматы файлов, такие как bin а также img что я хотел бы иметь возможность открыть.

К сожалению, код не работает, потому что он ожидает заголовок ISO9660 \x01CD001\x01 с префиксным смещением (32768, сразу после первых 16 секторов, зарезервированных для других целей), как определено стандартом здесь и здесь:

7. Первые шестнадцать секторов пусты

Первые шестнадцать секторов (номера секторов от 0 до 15 включительно) содержат только нули. ISO9660 не определяет содержимое этих секторов, но для DOS они, по-видимому, всегда пишутся в виде нулей. По-видимому, они зарезервированы для использования системами, которые могут быть загружены с компакт-диска.

В моем случае у меня есть img а также bin образы дисков, которые имеют \x01CD001\x01 заголовок со смещением 37656, 792 байта после окончания 18-го сектора. Это заставляет код выдавать ошибку.

Так как есть программное обеспечение, способное читать содержимое bin а также img файл без необходимости cue или же ccd файл, каково правило для создания заголовка в таких случаях? Это стандарт или они брутально ищут заголовок через байты? Если это стандарт, где я могу найти какую-либо документацию / реализацию?

ОБНОВЛЕНИЕ: Я обнаружил, что эти файлы имеют другой размер сектора: 2352 байта / сектор, потому что они являются необработанными копиями CD-R.

1 ответ

Решение

Поскольку я не нашел ничего подобного, и никто не дал ответа, я сам написал решение, вы можете найти его здесь.

Это библиотека, способная читать файлы с образов дисков, соответствующих формату ISO9660. Он поддерживает 2048 и 2352 байта на сектор изображения.

Другие вопросы по тегам