Обчисліть md5сум CD / DVD


18

У мене є ISO-файл, який я записав на компакт-диск. Тепер як я можу перевірити, чи правильно створено компакт-диск? Я хотів би команду, яка обчислює хеш-суму, яку я можу використовувати для перевірки хеш-суми, яку я обчислюю у файлі ISO. В ідеалі команда повинна:

  • Працюйте незалежно від файлу ISO: тобто я не хочу зберігати список хеш-суми для кожного файлу на диску або пам'ятати кількість блоків незалежно від
  • Будьте відносно короткими: однорядкова команда чудова, ланцюжок команд, яка є двома рядками, добре, сценарій, що охоплює одну сторінку, не є
  • Будьте досить ефективними: наприклад, ddповернення диска до файла, а потім запуск md5sumфайлу, є неприйнятним

Якщо немає відповіді, яка не може задовольнити всіх, я також буду вдячний за найближчий матч. Ще краще, якщо ви можете сказати мені, чому це не так прямо.

Відповіді:


18

Основна проблема полягає в тому, що ми хочемо взяти md5sum точно такої ж інформації, яка була в ISO раніше. Коли ви пишете ISO на компакт-диск, на кінці диска, ймовірно, є порожній простір, який неминуче змінює md5sum. Таким чином, самий короткий шлях:

md5sum /dev/cdrom

не працює . Що працює (і це звичайно в онлайн- документації), це лише зчитування точної кількості байтів з пристрою, а потім виконання md5sum. Якщо вам відомо кількість байтів, ви можете зробити щось на кшталт:

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

де 'xxxxx' - розмір ізо в байтах.

Якщо ви не знаєте, скільки байтів від руки, але iso все ще є на вашому диску, ви можете отримати їх за допомогою ls, зробивши щось подібне ( взяте звідси ):

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

Є багато інших однолінійних конструкцій, які повинні працювати. Зауважте, що в кожному випадку ми використовуємо ddдля читання байтів з диска, але ми не пересилаємо їх у файл, а ми передаємо їх в md5sum відразу.

Можливі покращення швидкості можна зробити, зробивши кілька обчислень, щоб використовувати більший розмір блоку ( команда bs=the dd).


Ви можете спростити dd if=/dev/cdrom |до </dev/cdrom. Немає нічого магічного ddі блокує пристрої, це лише команда маніпулювання потоком із кумедним синтаксисом.
Жил "ТАК - перестань бути злим"

До речі, ви (phunehehe) повинні мати розмір iso разом із контрольною сумою MD5. Це особливо важливо для MD5, який частково зламаний, але це гарна ідея як для безпеки, так і для зручності використання незалежно від того, якою контрольною сумою ви користуєтесь.
Жил "ТАК - перестань бути злим"

@Gilles: фактично за ddдопомогою bsрозміру кешу пристрою можна прискорити передачу даних на відміну від звичайного перенаправлення вводу.
алекс

@Gilles: що ти маєш на увазі під "MD5, який частково зламаний"? І чому я повинен зберігати розмір файлу, якщо якщо щось не так, контрольна сума повинна мені сказати відразу?
phunehehe

@phunehehe: Існують відомі криптографічні недоліки з MD5 (невідомо (публічно), як генерувати зіткнення для даного файлу, але це може статися). Знання розміру файлу дає вам трохи більше впевненості (хоча і не набагато більше). Він також надає негайний зворотній зв'язок щодо поширених випадкових помилок, таких як усічені завантаження.
Жил "ТАК - перестань бути злим"

2

Існує програма для цього завдання. Це називається -checkisomd5 . В Ubuntu його можна встановити командою:

sudo apt-get install isomd5sum

Як ти ним користуєшся? checkisomd5 /dev/sr0дає мені: перевірка медіа завершена, результат: НС. Немає інформації про контрольну суму, не вдається перевірити носій.
Торстен

Контрольну суму слід вставляти в ізо-зображення із інструментом "implantisomd5". Це потрібно зробити, перш ніж iso запишеться на диск. Утиліта, що входить до "checkisomd5".
Денис Проскурин

1

Якщо розмір зображення на диску ділиться на 2048 рік, ціле число, яке, здається, є дуже поширеним, то ви можете отримати точний MD5sum наступним чином, де sr0ім'я оптичного, яке можна знайти, використовуючи, lshw -C disk- і де 'count' - це дивіденд розміру зображення, поділений на 2048 рік.

dd if=/dev/sr0 bs=2048 count=356352 |md5sum

Багато компакт-дисків, ймовірно, використовують доріжки "Режим 1", які мають 2048 байт даних користувачів на сектор . ("Режим 2" зберігає 2336 байт даних користувачів на сектор, але не вистачає більш досконалих можливостей виявлення та виправлення помилок, пропонованих в режимі 1, внаслідок чого режим 2 є менш корисним для даних, коли помилки не можна допустити.)
CVn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.