Как взять sha-1, sha-256 или MD5 из CD / DVD?

Я просто попытался записать как компакт-диск Debian, так и DVD-диск Debian из своих .iso- файлов, и у меня странное поведение: контрольная сумма на диске правильная, но на одном из DVD нет.

Вот что работает:

  • загрузили два файла .iso
  • проверила контрольную сумму двух файлов .iso
  • записать компакт диск debian-7.1.0-amd64-CD-1.iso на компакт-диск
  • убедитесь, что компакт-диск правильный, выпустив:

    dd if = / dev / sr0 | md5sum (или sha-1 или sha-256)

И это прекрасно работает: контрольная сумма (ы), которую я получаю с компакт-диска, используя dd и piping в md5, sha-1 или sha-256, соответствуют официальным контрольным суммам.

Теперь я не понимаю, что я записывал DVD с DVD .iso – и я знаю, что файл был правильно загружен, увидев, что контрольная сумма файла .iso верна.

Однако, если я поместил DVD в дисковод и выдал то же самое:

dd if=/dev/sr0 | md5sum (or sha-1 or sha-256) 

то я получаю фальшивую контрольную сумму.

DVD по-прежнему выглядит правильно, что все файлы, кажется, есть.

Итак, вот мой вопрос: могу ли я проверить, что DVD был правильно сгорел, используя dd и конвейерный вывод его в md5sum (или sha-1 или sha-256), или есть что-то «специальное», которое заставит dd работать для проверки записанных компакт-дисков но не сожгли DVD?

* (обратите внимание, что я использовал Disk Utility на OS X для записи как CD, так и DVD) *

  • Полная копия DD с hdd на hdd
  • Я уничтожил данные на диске?
  • Программное обеспечение RAID10 setup пишет небольшие файлы очень медленно, это нормально?
  • Перезаписать часть файла без модификации в немодифицированный контент
  • Как очистить журналы в файловой системе ext3 / ext4?
  • Это правильный способ создать резервную копию одного большого диска для двух более мелких?
  • Изменение размера виртуального жесткого диска
  • Почему dd работает навсегда на диске с 8 ГБ
  • 2 Solutions collect form web for “Как взять sha-1, sha-256 или MD5 из CD / DVD?”

    В дополнение к ответу Гилла,

    Если у вас все еще есть образ ISO, вы можете использовать cmp вместо контрольных сумм. Это скажет вам, в каком байте происходит различие. Это также сделает проверку быстрее, как если бы на ранней стадии была ошибка, она сразу сообщит вам, а контрольная сумма всегда должна читать весь носитель.

     $ cmp /dev/cdrom /path/to/cdrom.iso 

    В случае ошибки он должен напечатать что-то вроде этого

     /dev/cdrom /path/to/cdrom.iso differ, byte 123456789, line 42 

    Если это правильно, оно ничего не должно печатать, или это:

     cmp: EOF on /path/to/cdrom.iso 

    Это означает, что в /dev/cdrom больше данных, чем в ISO, скорее всего, нулевое дополнение.

    Даже перед началом любых сравнений вы можете проверить размер.

     $ blockdev --getsize64 /dev/cdrom 123456999 $ stat -c %s /path/to/cdrom.iso 123456789 

    Если он идентичен, контрольная сумма также должна совпадать. Если /dev/cdrom больше, в конце оно должно быть заполнено нулями. Вы можете проверить это с помощью hexdump . Используйте размер ISO для параметра -s .

     $ hexdump -s 15931539256 -C /dev/cdrom 3b597ff38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 3b597fff8 00 00 00 00 00 00 00 00 |........| 

    hexdump также полезен для того, чтобы посмотреть разницу в любой другой позиции в файле, в случае, если ущерб был вызван преднамеренно чем-то.

    Насколько я знаю, оба компакт-диска и DVD-диска состоят из определенного количества блоков фиксированного размера. Изображение, которое вы записываете, может быть не кратным размеру блока, и в этом случае последний блок будет содержать некоторый конечный мусор. Поэтому, когда вы запускаете dd if=/dev/sr0 (который является запутанным способом записи md5sum </dev/sr0 ), конечный мусор включается в хеш.

    Вам нужно следить за размером изображения. Затем примените хэш-утилиту на количество байтов полезной нагрузки (то есть файл ISO).

     </dev/sr0 head -c "$size" | md5sum 
    Linux и Unix - лучшая ОС в мире.