Calcola md5sum di un CD / DVD


18

Ho un file ISO, che ho masterizzato su un CD. Ora come posso verificare se il CD è stato creato correttamente? Vorrei un comando che calcoli la somma hash che posso usare per verificare con la somma hash che calcolo sul file ISO. Idealmente il comando dovrebbe:

  • Funziona indipendentemente dal file ISO: ovvero, non voglio mantenere un elenco di hash sum per ogni file nel disco, o ricordare il numero di blocchi qualunque
  • Sii relativamente breve: un comando a una riga è eccezionale, una catena di comandi lunga due righe è OK, uno script che si estende su una pagina non lo è
  • Sii abbastanza efficiente: ad esempio, ddil disco di nuovo su un file quindi eseguito md5sumsul file è inaccettabile

Se non c'è una risposta che non può soddisfare tutto apprezzerò anche la partita più vicina. Ancora meglio se puoi dirmi perché non è così semplice.

Risposte:


18

Il problema di base è che vogliamo prendere il md5sum delle stesse identiche informazioni che erano originariamente sull'ISO. Quando si scrive ISO su un CD, è probabile che vi sia spazio vuoto alla fine del disco, che inevitabilmente cambia il md5sum. Quindi, il modo più breve:

md5sum /dev/cdrom

non funziona . Ciò che funziona (ed è comune nella documentazione online ) è solo leggere il numero esatto di byte dal dispositivo e quindi fare il md5sum. Se conosci il numero di byte puoi fare qualcosa del tipo:

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

dove 'xxxxx' è la dimensione dell'iso in byte.

Se non conosci il numero di byte fuori mano, ma hai ancora gli iso sul tuo disco, puoi ottenerli usando ls facendo qualcosa di simile al seguente ( preso da qui ):

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

Ci sono molte altre costruzioni a una linea che dovrebbero funzionare. Si noti che in ogni caso stiamo usando ddper leggere i byte dal disco, ma non li stiamo eseguendo il piping su un file, piuttosto li stiamo consegnando a md5sum immediatamente.

È possibile apportare miglioramenti della velocità eseguendo alcuni calcoli per utilizzare una dimensione del blocco più grande (il bs=nel ddcomando).


È possibile semplificare dd if=/dev/cdrom |al </dev/cdrom. Non c'è nulla di magico dde blocca i dispositivi, è solo un comando di manipolazione del flusso con una sintassi divertente.
Gilles 'SO- smetti di essere malvagio' il

A proposito, tu (phunehehe) dovresti avere la dimensione iso insieme al checksum MD5. Ciò è particolarmente importante per MD5 che è parzialmente rotto, ma è una buona idea sia per la sicurezza che per l'usabilità, indipendentemente dal checksum utilizzato.
Gilles 'SO- smetti di essere malvagio' il

@Gilles: in realtà, utilizzando ddcon bsla dimensione della cache dispositivo può velocizzare il trasferimento dei dati al contrario di reindirizzamento ingresso normale.
alex,

@Gilles: cosa intendi con "MD5 che è parzialmente rotto"? E perché dovrei mantenere le dimensioni del file, quando se qualcosa non va il checksum dovrebbe dirmi subito?
phunehehe,

@phunehehe: ci sono punti deboli crittografici noti con MD5 (non è (pubblicamente) noto come generare una collisione per un determinato file, ma potrebbe venire). Conoscere le dimensioni del file ti dà un po 'più di confidenza (anche se non molto di più). Fornisce inoltre un feedback immediato per errori accidentali comuni come download troncati.
Gilles 'SO- smetti di essere malvagio' il

2

C'è un programma per questa attività. Si chiama - checkisomd5. In Ubuntu può essere installato dal comando:

sudo apt-get install isomd5sum

Come lo usi? checkisomd5 /dev/sr0mi dà: il controllo dei media è completo, il risultato è: NA. Nessuna informazione di checksum disponibile, impossibile verificare i media.
Torsten,

Il checksum deve essere incorporato nell'immagine iso con lo strumento "implantisomd5". Deve essere fatto prima che iso sia scritto su disco. Utilità inclusa in "checkisomd5".
Денис Проскурин l'

1

Se la dimensione dell'immagine sul disco è divisibile per 2048, numero intero, che sembra essere molto comune, è possibile ottenere un MD5sum accurato come segue dove si sr0trova il nome dell'ottica che si può trovare usando, lshw -C diske dove 'count' è il dividendo della dimensione dell'immagine diviso per il 2048.

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

Molti CD probabilmente usano tracce "Mode 1", che ha 2.048 byte di dati utente per settore . ( "Modalità 2" negozi 2.336 byte di dati per settore, ma manca la più avanzate capacità di rilevamento e correzione degli errori offerti da Modo 1, causando la modalità 2 per essere meno utile per i dati in cui gli errori non possono essere tollerati.)
una CVn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.