Confronto di file binari — confronto byte per byte, allineamento per blocchi e analisi a livello di bit
Confronto di file binari
Trascini due file e questa pagina li confronta byte per byte, direttamente nel browser: ogni offset diverso, un confronto esadecimale con il contesto circostante, una mappa di densità delle differenze e un'analisi a livello di bit che mostra quali bit sono cambiati. Una modalità allineata per blocchi separata rileva inserimenti ed eliminazioni nel mezzo di un file — il caso che un semplice confronto di byte non riesce ad allineare. I risultati si esportano in TXT e CSV. Nulla viene caricato da nessuna parte. Per modificare i byte invece di confrontarli, veda l'editor esadecimale; per il testo, lo strumento Differenze di testo.
1. Scelga due file
FILE A Trascini qui il primo file, oppure clicchi per sceglierlo Fino a 200 MB. Resta su questo computer.
FILE B Trascini qui il secondo file, oppure clicchi per sceglierlo Confrontato con il File A.
Contesto esadecimale intorno a ogni differenza: — le differenze vicine a meno di 16 byte l'una dall'altra sono mostrate come un unico blocco.
2. Esito
Il riepilogo del confronto comparirà qui quando entrambi i file saranno scelti e confrontati.
Densità delle differenze (rosso: byte diversi, arancione: byte presenti in un solo file):
0x0
Analisi a livello di bit — quali posizioni di bit sono cambiate (di ogni byte diverso, A XOR B):
3. Differenze — vista esadecimale
| rosso = File A, verde = File B; le righe identiche sono stampate una sola volta
Loading…
Blocchi di differenze
Tabella delle differenze per byte
4. Vista allineata per blocchi (rileva inserimenti ed eliminazioni)
Un confronto byte per byte allinea l'offset N con l'offset N. Se sono stati inseriti o eliminati byte nel mezzo di un file, tutto ciò che segue si sposta e il confronto semplice segnala come diversa l'intera coda. Questa modalità calcola l'hash di blocchi da 1 KB, li confronta tra i due file e riporta il risultato come operazioni di copia / inserimento / eliminazione — il modo in cui strumenti di delta come xdelta vedono una modifica. È disponibile quando entrambi i file sono di 64 MB o meno.
5. Esporta
Privacy: entrambi i file vengono letti con il FileReader del browser e confrontati in questa scheda — nessun server, nessun caricamento, nessuna memorizzazione. I file grandi vengono confrontati a blocchi da 1 MB, quindi anche input da 200 MB non occupano mai per intero la memoria (a meno che non usi la vista allineata per blocchi, che carica entrambi i file mentre lavora).
Cos'è il confronto di file binari?
Un confronto binario allinea due file all'offset 0 e procede in avanti, segnalando ogni offset in cui i byte differiscono — l'equivalente nel browser del classico comando cmp -l. Gli strumenti di differenze di testo non possono farlo: o si bloccano sui byte non stampabili o reinterpretano silenziosamente il file con qualche codifica di caratteri. Un confronto binario tratta entrambi i file esattamente per ciò che sono, cioè array di byte, che è ciò che serve per immagini di firmware, dump di dischi, file di database, blob cifrati o qualsiasi file di cui non si conosca il formato.
Tre domande ricevono risposta a tre livelli di profondità diversi. «Sono uguali?» è una questione di checksum — lo strumento risponde più in fretta, ma solo con sì o no. «Dove differiscono?» è il confronto di byte di questa pagina: offset, valori e quali bit sono cambiati. «Che tipo di modifica è?» è ciò che aggiunge la vista allineata per blocchi — se la differenza è una modifica sul posto, un blocco inserito o un blocco eliminato.
Confronto di byte contro allineamento per blocchi — perché due viste?
Situazione
Il confronto byte per byte dice
La vista allineata per blocchi dice
Un campo è stato sovrascritto sul posto (stessa dimensione del file)
alcuni offset diversi sparsi
lo stesso, più «tutto il resto viene copiato»
1 KB è stato inserito all'offset 2000 del file B
tutto da 2000 in poi «differisce»
copia 0–2000, inserisce 1 KB, copia il resto
Un blocco è stato eliminato nel mezzo del file B
tutto da quel punto in poi «differisce»
copia fino alla lacuna, elimina N byte, copia il resto
Il file B è il file A con un'intestazione diversa anteposta
interi file «differiscono»
elimina l'intestazione, poi un'unica lunga copia — cioè uno spostamento costante
Il confronto di byte è sempre corretto — quei byte differiscono davvero a quegli offset. È l'interpretazione a spostarsi quando sono stati inseriti o eliminati byte, esattamente come aggiungere una riga in cima a un file di testo fa cambiare il numero di ogni riga successiva.
Come leggere l'analisi a livello di bit
Per ogni byte diverso la pagina calcola A XOR B e conta quali posizioni di bit sono impostate. Questo istogramma è sorprendentemente espressivo: differenze concentrate nel bit 0 (il bit meno significativo di ogni byte) sono l'impronta della steganografia LSB, in cui un messaggio viene nascosto modificando il bit basso dei campioni di pixel o audio. Differenze distribuite uniformemente su tutte e otto le posizioni significano che sono stati riscritti interi valori. Differenze che toccano solo i bit alti di solito significano che un campo è stato sostituito con un valore di grandezza molto diversa. La distanza di Hamming (numero totale di bit ribaltati) quantifica la stessa cosa in un solo numero.
Una precisazione onesta: i dati casuali coincidono su un dato byte con probabilità 1/256, quindi due file non correlati della stessa dimensione coincidono comunque su circa lo 0,4% dei byte. Una somiglianza del 99,98% con qualche breve blocco di differenza è una modifica a livello di patch; una somiglianza dello 0,4% significa semplicemente che i file non sono correlati.
Errori comuni
«Tutto il file è rosso dopo la prima differenza.» — è l'effetto di spostamento descritto sopra, non una vera corruzione. Esegua la vista allineata per blocchi: se segnala un inserimento e due lunghe operazioni di copia, i file differiscono esattamente per quel blocco inserito. «I checksum coincidevano ma qui i file differiscono.» — se i digest SHA-256 coincidono, i file non differiscono; ricontrolli di aver aperto gli stessi file in entrambi gli strumenti. Una coincidenza di CRC-32, invece, non dimostra nulla contro una collisione deliberata. «Somiglianza 0,4%, ma ho cambiato solo una cosa.» — se la modifica era dentro un contenitore compresso o cifrato (ZIP, zTXt di PNG, volume cifrato), una sola modifica logica riscrive l'intero flusso compresso.
Domande frequenti
Qual è il limite di dimensione? — 200 MB per file per il confronto di byte, eseguito a blocchi da 1 MB. La vista allineata per blocchi carica entrambi i file, quindi è limitata a 64 MB per lato. Rileva i blocchi spostati? — l'allineatore confronta i blocchi in ordine; un blocco spostato in un'altra posizione compare come un'eliminazione più un inserimento dello stesso contenuto, che è una descrizione corretta, anche se un po' brusca. Può produrre un file di patch? — no, è uno strumento di analisi; i report CSV e TXT servono per documentazione e revisione, non per applicare modifiche. Cosa succede ai miei file? — nulla: nessun server, nessuna memorizzazione, nessuna analisi; chiuda la scheda e ogni byte dell'input scompare.