ISO-образы и их контрольные суммы (20.08.2022). |
![]() |
2022 - Август | |||
20.08.2022 07:39 | |||
Пару месяцев назад приключилась история: ISO-файл, имеющий одинаковое содержимое с точностью до файла и одинаковый размер с точностью до байта - внезапно - оказался с разными контрольными суммами. Тогда эксперименты с записыванием ISO-образов не дали результата. В этот раз получилось немного иначе: эксперименты с созданием ISO в разных программах, частично, приоткрыли завесу другой тайны: - участвовали 3 загрузочных физических компакт-диска: Linux Mint v.19.3, Astra Linux SE v.1.4, Acronis True Image v.2021 build 39287; - участвовали 4 программы чтения-записи ISO: X-CD-Roast v.1.19 (Linux), genisoimage в составе Astra Linux SE v.1.4 и параметрами «-l -J -R -o /hards/documents/acr.iso /media/cdrom/», UltraISO v.9.7.3.3629 (Windows), CDBurnerXP v.4.5.6.6059 (Windows); - контрольная сумма считалась в MD5 Total Commander v.8.0B14; - работа программ контролировалась сторонними наблюдателями: проверка MD5 именно компакт-диска CdShot v.3.5.0.1 (похоже, единственная в своем роде), проверка MD5 ISO-файлов HashTab v.5.2.0.14. Получены результаты: - genisoimage по всем 3 дискам имеет неправильные контрольные суммы. В дальнейшем выяснится, что диски перестают быть загрузочными - кажется, это просто ISO с файлами. Эта контрольная сумма отличается от ISO с просто файлами без загрузочной записи - данная программа опасна, т.к. дописывает лишнюю информацию; - оставшиеся 3 программы имели одинаковые контрольные суммы по 2 дискам из 3. Отличившийся Acronis True Image v.2021 build 39287: - считанный UltraISO - контрольная сумма 2ace14170d93332865b903322ccfff4e. Считанный CDBurnerXP - 599e486ca95133a12c41af9808802b7a. Эти 2 ISO - исходные для тестов следующего абзаца; - был проведен тест со всеми возможными комбинациями участия этих двух программ чтения-записи ISO и их настроек (например: "снятый CDBurner - записан CDBurner снова с опцией такой-то и снят UltraISO без опции сякой-то". Получен результат: UltraISO с использованием ISO-фильтра считывает 2ace14170d93332865b903322ccfff4e, без него - 599e486ca95133a12c41af9808802b7a (как у CDBurner); - чтобы понять, какая из контрольный сумм истинна, подключаются X-CD-Roast, HashTab, CdShot - они показывают 2ace14170d93332865b903322ccfff4e. Также был отрыт великий исходный ISO, с которого был записан исходный компакт-диск - тоже 2ace14170d93332865b903322ccfff4e; - получается, X-CD-Roast имеет неотключаемую опцию ISO-фильтра при чтении дисков. CDBurnerXP такой опции не имеет - и при чтении ISO нарушает его контрольную сумму. UltraISO, зачем-то, имеет ISO-фильтр именно как опцию. Эксперимент с углублением записи на 1 уровень: записать испорченный ISO с помощью CDBurner - и считать: - при чтении CDBurner и UltraISO без фильтра - 3486ab5fb313702c09fe359eb140a9e5 - третья контрольная сумма, тоже неправильная; - если размер ISO при первом чтении отличался на 4КБ меньше от оригинала, то теперь отличие на 8КБ больше от первого чтения; - при чтении UltraISO с фильтром произошло то же самое чудо, не описанное в абзаце выше: UltraISO восстановила контрольную сумму до 2ace14170d93332865b903322ccfff4e (соответственно, с точностью до байта равен по размеру великому исходному ISO); - то есть, точно проблема именно с загрузочной записью. Дополнительное подтверждение: контрольная сумма ISO просто с файлами, если их вытащить со всех 3 ISO, - всегда одинакова. Это же подтверждает успешные запуск и работа всех 3 носителей в виртуальной машине. Эксперимент с чтением-записью на разные носители: ошибка воспроизводится только на CD-R и CD-RW, идентично. Именно поэтому 2 других носителя, DVD инсталляторов ОС, - ошибок при чтении-записи вообще не имели. Выводы: - CDBurnerXP плохо читает загрузочные диски, записанные на CD: изменение размера загрузочной записи без нарушения ее работоспособности - что приводит к искажению контрольной суммы носителя. Возможно, это говорит о стандартизации на предприятии: IT-отдел обязан оттестировать ПО чтения-записи ISO - и использовать только одно ПО и его версию, например, при сдаче ISO-файла или компакт-диска в архив; - опция ISO-фильтра, если существует в каких-либо других программах создания ISO, - обязательна к включению, т.к. проводит коррекцию загрузочной записи носителя, если в ней есть ошибки; - программы чтения контрольных сумм с ISO-файла и с компакт-диска показывают идентичные результаты - этапы открытия диска и его финализации в формировании контрольной суммы не участвуют; - опции игнорирования ошибок чтения, аппаратной коррекции, выбора «disk at once»/«track at once» и прочие - не влияют на контрольную сумму. (добавлено 03.10.2023) Уточнения, полученные в рамках анализа несовместимости Astra Linux SE v.1.7.4 с дисками от машбюро: - контрольные суммы финализированного и не финализированного диска - одинаковые; - контрольные суммы диска UltraISO v.9.6.3016 и диска, записанного встроенной программой записи Windows 7 v.6.1 (сборка 7601 SP1) - разные (запись велась на одинаковые носители). Причина: в промежутке между записями дисков системе приспичило создать в фоновом режиме лишнюю пустую папку; - контрольные суммы дисков разных типов, записанных встроенной программой записи Windows 7 v.6.1 (сборка 7601 SP1) - одинаковые (проверено на CD-RW и DVD-R) - но только если сравнивать пофайлово; - встроенная программа пишет на максимальной скорости. Часть болванок запарывается, хотя "успешное" закрытие сеанса при извлечения носителя пытается убедить в обратном. (добавлено 07.10.2023) Быстро исправил ошибку в предыдущем добавлении. Алгоритм контрольных сумм проверял контрольные суммы самих файлов в Astra Linux SE v.1.7.4 - это породило ложноположительный результат. Когда же начал проверять контрольные суммы с помощью md5sum - выяснилось, что есть проблема с CD-RW, на котором записаны вразнобой порядка 2500 файлов и 220 папок: при записи стандартными средствами Windows 7 - контрольные суммы в Total Commander и md5sum отличаются. Пришлось создавать тестовый стенд заново: - в Windows 7 был создан текстовый файл "1.txt" с текстом "Лёша - нубас." в кодировке Windows-1251 и весом 13Б; - в наличии есть только DVD-R и использованные CD-RW. CD-RW очищались в PowerISO полным стиранием на скорости 4x (полного стирания в UltraISO нет); - при использовании встроенной функции записи Windows 7 был задействован режим "внешний накопитель USB" без метки. После записи программно извлекался командой "извлечь", давая ОС "финализировать" диск; - запись в UltraISO производилась в режиме DAO, без метки; - после записи с помошью UltraISO снимались образы ISO (опция фильтра не влияет на конечный результат). Размеры ISO: DVD-UltraISO - 360448Б, DVD-Windows - 133660672Б, CD-UltraISO - 360448Б, CD-Windows - 604110848Б. Уже видно, что размеры абсолютно все разные - и контрольные суммы MD5 в Total Commander будут разными. Большой размер CD-RW связан с его полной очисткой - можно отнести это к очередному глюку встроенной функции записи Windows 7. Большой размер DVD-R после встроенной записи необъясним. Идентичность размеров DVD и CD UltraISO обусловлено корректной финализацией дисков; - MD5 в TC: DVD-UltraISO - 676a2494531f8b254f957d07e0ec7bcc, DVD-Windows - 8319e9f2bd71c11849fea4a84d5e6297, CD-UltraISO - 6c3826f8a32edf0f55c9e6abb1e02114, CD-Windows - 553bface973b56e505040fa9ae5565b3. Стоит обратить внимание, что контрольные суммы DVD-UltraISO и CD-UltraISO разные, - потому что UltraISO при записи все-таки впихнула свою собственную метку: дату и время создания проекта. "Видишь суслика? - Не вижу. - А он есть..."; - MD5 по мнению md5sum /dev/sr0 без монтирования в Astra Linux SE v.1.7.4: DVD-UltraISO - 676a2494531f8b254f957d07e0ec7bcc, DVD-Windows - 8319e9f2bd71c11849fea4a84d5e6297, CD-UltraISO - 6c3826f8a32edf0f55c9e6abb1e02114, CD-Windows - 525262c0ab272fbaa5ad048e0c8019a2; - MD5 по мнению md5sum /media/cdrom/* с монтированием в Astra Linux SE v.1.7.4: DVD-UltraISO - 7a3ef8c64aa9ec8ab2969181e2c15789, DVD-Windows - 7a3ef8c64aa9ec8ab2969181e2c15789, CD-UltraISO - 7a3ef8c64aa9ec8ab2969181e2c15789, CD-Windows - 7a3ef8c64aa9ec8ab2969181e2c15789. Понятное дело: считается по идентичным данным во всех 4 дисках. Выводы: - в очередной раз доказывается, что встроенные функции в Windows - отстой. Дефрагментатор, записыватель носителей, проверяльщик ошибок на диске и его поверхности и т.д. - все должно быть внешним; - во избежание недоразумений, нельзя использовать md5sum для CD-RW, записываемых средствами Windows. При этом CD-R не проверялись (т.к. их нет) - возможно, там точно такой же баг. (добавлено 20.10.2023) С CD-R - такая же шляпа, как и с CD-RW: md5sum дает разные результаты. Образы ISO отличаются; информация затерлась - но судя по записям здесь: сделанный в UltraISO размер ISO-файла - корректный с точностью до байта, сделанный в Windows - имел размер около 800КБ. (добавлено 20.04.2025) Найдены ещё баги K3b в Astra Linux SE v.1.7.4.0: - создавая ISO-образ - он будет создан с другой контрольной суммой (и размеры ISO разные). При этом именно копирование носителя, с создаванием такого же образа (временного), - контрольная сумма обоих дисков корректна; - не сохраняет настройку режима записи DAO, ставя всегда автомат. Также пользователи выразили желание отключить гашение экрана через 10мин простоя - осталось включить все найденные исправления и пожелания в образ. (добавлено 24.04.2025) Поведение K3b - совсем непонятно. На другом ПК, очень старом: при том же самом диске, тех же самых данных и том же самом образе системы - автоматически включает режим DAO для корректной записи диска (изменение автоматической настройки - и не требуется). И, напротив, появилась другая ошибка: при выставленной галке проверки записанных данных для CD - может не проверить данные. Сама галка - алогична: её нельзя поставить при каких-то обстоятельствах - приходится вставлять DVD, ставить галку, возвращать CD. Как будто от типа DVD-привода зависит, но выглядит как бред. |
|||
Обновлено ( 23.04.2025 12:06 ) |