Verifica di integrità dei dati: MD5, SHA1 e PAR

Informatica

Come controllare l'integrità di un file, e come riparare un file danneggiato ove possibile. In ogni caso, constatato il danno, piuttosto che cercare di riparare un file, è spesso molto meglio recuperarne una copia di riserva dai backup.
A meno che non abbiamo creato dei file *.par2 (parchive), che ci possono davvero salvare la vita :-)

Verifica tramite message digest

Calcoliamo gli hash con md5sum, sha1sum. Gli hash sono l'"impronta digitale" di un file: è molto improbabile che due file diversi abbiano lo stesso hash, ma un file modificato anche in un solo byte (perché corrotto) avrà un hash diverso dal file originale.
Il funzionamento di sha1sum è uguale a quello di md5sum.

md5sum file.iso > file.iso.md5

calcola l'hash md5 del file file.iso e lo salva nel file file.iso.md5sum

md5sum -c lista.md5

confronta gli hash nel file lista.md5 con quelli calcolati per i file corrispondenti nella directory corrente.

Se l'hash non corrisponde, è possibile che sia stato calcolato in una modalità diversa da quella usata per la verifica (binary o text), nel dubbio, ricalcolare l'hash nell'altra modalità. Un asterisco davanti al nome del file nella lista di hash indica che il calcolo è stato fatto in modalità binaria.

I controlli di validità md5 e sha1 possono solo dirci se il file è corretto o no, non possono far nulla per correggere eventuali errori.

Verifica CRC sugli archivi compressi ed eventuale riparazione

I controlli di validità sono spesso fattibili anche sugli archivi zip/gzip/bzip2/7z/... anche senza la presenza di un hash calcolato in precedenza (di solito sono controlli CRC, meno affidabili di md5 ma consentono entro una certa misura una correzione degli errori).

In quanto segue vediamo i comandi necessari per le varie azioni per ciascuno dei comandi di compressione/decompressione più diffusi.

  • Controlla un archivio: in generale basta provare a decomprimere l'archivio, in caso di problemi si avranno dei messaggi sul terminale. Nello specifico:

    zip --test archivio.zip
    gzip --test archivio.gz
    bzip2 --test archivio.bz2
    7z t archivio.7z
    unrar t archivio.rar
    lzop --test archivio.lzotim
    
  • Recupera un archivio danneggiato:

    zip --fix archivio.zip --out archivio_ok.zip
    
    bzip2recover archivio.bz2
    bzip2 -t rec*file.bz2
    bzip2 -dc rec*file.bz2 > recovered_data
    

Verifica e correzione tramite parchive

Se a partire dal file originale generiamo un file di verifica con parchive, oltre a verificare se il file è stato danneggiato potremo ripararlo, a condizione che i dati danneggiati siano una percentuale minore o uguale alla ridondanza nei file PAR di verifica.
Al contrario di md5 e sha1, che hanno dimensioni irrisorie, i file di controllo PAR hanno la stessa dimensione della quantità di dati che permettono di riparare.

In generale, vengono creati almeno due file *.par2: uno "di controllo" e uno o più file contenenti i dati ridondanti, riconoscibili dal nome *.volNNN+MMM.par2, dove NNN e MMM sono dei numeri. Per correggere un file con X blocchi danneggiati basta il primo file *.par e un file *.volNNN+MMM.par2 tale che NNN < X < MMM.

PAR è stato inventato per lo scambio di file su Usenet: questo approccio serviva per ridurre i download su Usenet: basta scaricare i file PAR sufficienti a correggere gli errori trovati. Per l'uso locale si può generare un solo file di ripristino:

par2 c -r10 -n1 filetoverify.dump.gz

crea un file di controllo, con ridondanza del 10% (si può riparare qualsiasi danno minore del 10% delle dimensioni del file originale).

par2 v filetoverify.dump.gz.par2

controlla il file usando i file di controllo (devono essere tutti nella directory corrente).

par2 r filetoverify.dump.gz.par2

ripara il file se necessario. Il file danneggiato viene rinominato e non modificato.

Come dvdisaster, PAR usa la codifica di Reed-Solomon per identificare e corregere gli errori.

PAR & PAR2 Files Explained in Plain English
man par2

Trackback URL for this post:

http://gerlos.altervista.org/trackback/449

commenti

ritratto di Marco

Segnalazione programma che controlla integrità dei file

Salve.
Volevo segnalarvi un programma per il controllo dell'integrità dei file; HASHER
Il programma é completamente gratuito, in italiano e portabile.
E' in grado di controllare più algoritmi di checksum, di fare una verifica approfondita di intere cartelle e anche di file in remoto.
Può essere integrato perfettamente con il menù-tasto destro di windows e riporta i risultati della verifica in report molto dettagliati.
Spero che la segnalazione sia stata utile

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Allowed HTML tags: <a> <em> <strong> <del> <cite> <code> <img> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Linee e paragrafi vanno a capo automaticamente.
  • Insert Flickr images: [flickr-photo:id=230452326,size=s] or [flickr-photoset:id=72157594262419167,size=m].
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Per provare che sei un visitatore umano, rispondi a questa domanda. È per evitare l'inserimento di messaggi spam.
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.