Вычислите md5sum CD/DVD

Я обычно использую cat когда я должен ввести команду на основе чего-то в файле. cat более удобно, так как Вы видите файл (если это является маленьким), в то время как у Вас есть доступ к приглашению оболочки. Это также позволяет, чтобы канал выровнял.

18
27.06.2011, 23:22
3 ответа

Основная проблема состоит в том, что мы хотим взять md5sum той же самой информации, которая была на ISO первоначально. Когда Вы пишете ISO в CD, существует вероятный пробел на конце диска, который неизбежно изменяет md5sum. Таким образом, очень самый короткий путь:

md5sum /dev/cdrom

не работает. То, что действительно работает (и распространено в онлайн-документации), только читает точное число байтов от устройства и затем делает md5sum. Если Вы знаете число байтов, можно сделать что-то как:

dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum

где 'xxxxx' является размером ISO в байтах.

Если Вы не знаете число байтов от руки, но имеете ISO на Вашем диске все еще, можно получить их использующий ls путем выполнения чего-то как следующее (взятый отсюда):

dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum

Существует много других коротких конструкций, которые должны работать. Заметьте, что в каждом случае мы используем dd для чтения байтов из диска но мы не передаем их по каналу в файл, скорее мы вручаем им md5sum немедленно.

Возможные улучшения скорости могут быть сделаны путем выполнения некоторых вычислений для использования большего размера блока ( bs= в dd команда).

18
27.01.2020, 19:46
  • 1
    Можно упростить dd if=/dev/cdrom | кому: </dev/cdrom. Нет ничего волшебного о dd и блочные устройства, это - просто потоковая команда управления с забавным синтаксисом. –  Gilles 'SO- stop being evil' 05.11.2010, 20:26
  • 2
    Между прочим, у Вас (phunehehe) должен быть размер ISO вместе с контрольной суммой MD5. Это особенно важно для MD5, который частично повреждается, но это - хорошая идея и для безопасности и для удобства использования, какую контрольную сумму Вы используете. –  Gilles 'SO- stop being evil' 05.11.2010, 20:34
  • 3
    @Gilles: на самом деле, использование dd с bs из устройства размер кэша может передача данных ускорения в противоположность простому перенаправлению ввода. –  alex 06.11.2010, 06:51
  • 4
    @Gilles: что Вы подразумеваете "под MD5, который частично повреждается"? И почему я должен сохранить размер файла, когда, если что-то неправильно, контрольная сумма должна сказать мне сразу же? –  phunehehe 06.11.2010, 12:15
  • 5
    @phunehehe: Там известны криптографические слабые места с MD5 (не (публично) известно, как генерировать коллизию для данного файла, но это могло прибыть). Знание размера файла вселяет Вам немного больше веры (хотя не намного больше). Это также дает Вам непосредственную обратную связь для общих случайных ошибок, таких как усеченные загрузки. –  Gilles 'SO- stop being evil' 06.11.2010, 13:56

Если размер образа на диске делится на 2048, целое число, которое кажется очень распространенным, то вы можете получить точную сумму MD5 следующим образом, где sr0 - это имя оптического устройства, которое можно найти с помощью, lshw -C disk - и где «count» - это делимое размера изображения, деленное на 2048.

dd if=/dev/sr0 bs=2048 count=356352 |md5sum
1
27.01.2020, 19:46

Есть программа для этой задачи. Она называется - checkisomd5. В Ubuntu ее можно установить командой:

sudo apt-get install isomd5sum
2
27.01.2020, 19:46

Теги

Похожие вопросы