Σύγκριση δυαδικών αρχείων

Απόθεση δύο αρχείων και η σελίδα τα συγκρίνει byte προς byte, ακριβώς μέσα στο πρόγραμμα περιήγησης: κάθε διαφορετική θέση, διαφορά δεκαεξαδικών με το περιβάλλον της, χάρτη πυκνότητας διαφορών και ανάλυση σε επίπεδο bit που δείχνει ποια bit άλλαξαν. Η ξεχωριστή λειτουργία ευθυγράμμισης μπλοκ εντοπίζει εισαγωγές και διαγραφές στη μέση ενός αρχείου — την περίπτωση που μια απλή διαφορά byte δεν μπορεί να ευθυγραμμίσει. Τα αποτελέσματα εξάγονται σε TXT και CSV. Τίποτα δεν μεταφορτώνεται πουθενά. Για επεξεργασία byte αντί για σύγκριση, βλ. τον επεξεργαστή hex· για κείμενο, το εργαλείο Διαφορά κειμένου.
ΑΡΧΕΙΟ A
Απόθεση του πρώτου αρχείου εδώ, ή κλικ για επιλογή
Έως 200 MB. Παραμένει σε αυτόν τον υπολογιστή.
ΑΡΧΕΙΟ B
Απόθεση του δεύτερου αρχείου εδώ, ή κλικ για επιλογή
Συγκρίνεται με το Αρχείο A.
Περιβάλλον δεκαεξαδικών γύρω από κάθε διαφορά:  — γειτονικές διαφορές σε απόσταση μικρότερη από 16 byte εμφανίζονται ως ένα μπλοκ.
Η σύνοψη σύγκρισης εμφανίζεται εδώ μόλις επιλεγούν και συγκριθούν και τα δύο αρχεία.
Η διαφορά byte-προς-byte ευθυγραμμίζει τη θέση N με τη θέση N. Αν byte εισήχθησαν ή διαγράφηκαν στη μέση ενός αρχείου, όλα όσα ακολουθούν μετατοπίζονται και η απλή διαφορά αναφέρει ολόκληρη την ουρά ως διαφορετική. Η λειτουργία αυτή κάνει hash σε μπλοκ 1 KB, τα αντιστοιχίζει ανάμεσα στα αρχεία και αναφέρει το αποτέλεσμα ως λειτουργίες αντιγραφής / εισαγωγής / διαγραφής — με τον τρόπο που βλέπει μια αλλαγή εργαλεία delta όπως το xdelta. Διατίθεται όταν και τα δύο αρχεία έχουν μέγεθος έως 64 MB.
Απόρρητο: και τα δύο αρχεία διαβάζονται με το FileReader του ίδιου του προγράμματος περιήγησης και συγκρίνονται σε αυτή την καρτέλα — χωρίς διακομιστή, χωρίς μεταφόρτωση, χωρίς αποθήκευση. Τα μεγάλα αρχεία συγκρίνονται σε τμήματα του 1 MB, οπότε ακόμη και είσοδοι 200 MB δεν βρίσκονται ποτέ ολόκληρες στη μνήμη ταυτόχρονα (εκτός αν εκτελείται η προβολή ευθυγράμμισης μπλοκ, που φορτώνει και τα δύο αρχεία όσο δουλεύει).

Τι είναι η σύγκριση δυαδικών αρχείων;

Μια δυαδική σύγκριση ευθυγραμμίζει δύο αρχεία από το byte 0 και προχωρά προς τα εμπρός, αναφέροντας κάθε θέση όπου τα byte διαφέρουν — το ισοδύναμο στο πρόγραμμα περιήγησης της κλασικής εντολής cmp -l. Τα εργαλεία διαφοράς κειμένου δεν μπορούν να το κάνουν αυτό: είτε παγώνουν με μη εκτυπώσιμα byte, είτε ερμηνεύουν σιωπηλά το αρχείο με κάποια κωδικοποίηση χαρακτήρων. Η δυαδική σύγκριση αντιμετωπίζει και τα δύο αρχεία ακριβώς ως αυτό που είναι, πίνακες byte, πράγμα που είναι το ζητούμενο για εικόνες firmware, αντίγραφα δίσκων, αρχεία βάσεων δεδομένων, κρυπτογραφημένα blobs ή οποιοδήποτε αρχείο του οποίου η μορφή δεν είναι γνωστή.

Τρία ερωτήματα απαντώνται σε τρία διαφορετικά βάθη. “Είναι ίδια;” είναι ερώτημα checksum — το εργαλείο το απαντά πιο γρήγορα, αλλά μόνο με ναι ή όχι. “Πού διαφέρουν;” είναι η διαφορά byte αυτής της σελίδας: θέσεις, τιμές και ποια bit άλλαξαν. “Τι είδους αλλαγή είναι;” είναι αυτό που προσθέτει η προβολή ευθυγράμμισης μπλοκ — αν η διαφορά είναι επεξεργασία στη θέση της, εισαγόμενο τμήμα ή διαγραμμένο τμήμα.

Διαφορά byte έναντι ευθυγράμμισης μπλοκ — γιατί δύο προβολές;

ΚατάστασηΗ διαφορά byte-προς-byte λέειΗ προβολή ευθυγράμμισης μπλοκ λέει
Ένα πεδίο αντικαταστάθηκε στη θέση του (ίδιο μέγεθος αρχείου) μερικές διάσπαρτες θέσεις διαφοράς το ίδιο, συν “όλα τα υπόλοιπα αντιγράφονται”
Εισήχθη 1 KB στη θέση 2000 του αρχείου B όλα από τη θέση 2000 και μετά “διαφέρουν” αντιγραφή 0–2000, εισαγωγή 1 KB, αντιγραφή του υπολοίπου
Διαγράφηκε ένα μπλοκ στη μέση του αρχείου B όλα από εκείνο το σημείο και μετά “διαφέρουν” αντιγραφή μέχρι το κενό, διαγραφή N byte, αντιγραφή του υπολοίπου
Το αρχείο B είναι το αρχείο A με διαφορετική κεφαλίδα στην αρχή ολόκληρα τα αρχεία “διαφέρουν” διαγραφή κεφαλίδας, και μετά μία μεγάλη αντιγραφή — δηλαδή σταθερή μετατόπιση

Η διαφορά byte είναι πάντα σωστή — αυτά τα byte πράγματι διαφέρουν σε αυτές τις θέσεις. Η ερμηνεία μετατοπίζεται όταν εισάχθηκαν ή διαγράφηκαν byte, ακριβώς όπως η προσθήκη γραμμής στην αρχή ενός αρχείου κειμένου αλλάζει τον αριθμό κάθε επόμενης γραμμής.

Πώς διαβάζεται η ανάλυση σε επίπεδο bit

Για κάθε διαφορετικό byte η σελίδα υπολογίζει το A XOR B και μετράει ποιες θέσεις bit είναι ενεργές. Το ιστόγραμμα αυτό είναι εκπληκτικά εκφραστικό: διαφορές συγκεντρωμένες στο bit 0 (το λιγότερο σημαντικό bit κάθε byte) είναι το αποτύπωμα της στεγανογραφίας LSB, όπου ένα μήνυμα κρύβεται ωθώντας το χαμηλό bit των δειγμάτων εικονοστοιχείων ή ήχου. Διαφορές που απλώνονται ομοιόμορφα και στις οκτώ θέσεις σημαίνουν ότι ολόκληρες τιμές ξαναγράφτηκαν. Διαφορές που αγγίζουν μόνο τα υψηλά bit συνήθως σημαίνουν ότι ένα πεδίο αντικαταστάθηκε με τιμή πολύ διαφορετικού μεγέθους. Η απόσταση Hamming (συνολικό πλήθος αναστραμμένων bit) ποσοτικοποιεί το ίδιο πράγμα σε έναν αριθμό.

Μία ειλικρινής επιφύλαξη: τα τυχαία δεδομένα συμπίπτουν σε οποιοδήποτε δεδομένο byte με πιθανότητα 1/256, οπότε δύο άσχετα αρχεία ίδιου μεγέθους ταιριάζουν ακόμη σε περίπου 0,4% των byte. Ομοιότητα 99,98% με μια χούφτα σύντομα μπλοκ διαφοράς είναι αλλαγή επιπέδου patch· ομοιότητα 0,4% σημαίνει ότι τα αρχεία είναι απλώς άσχετα.

Συνηθισμένα λάθη

“Όλο το αρχείο είναι κόκκινο μετά την πρώτη διαφορά.” — αυτό είναι το φαινόμενο μετατόπισης που περιγράφηκε παραπάνω, όχι πραγματική αλλοίωση. Εκτελείται η προβολή με ευθυγράμμιση μπλοκ: αν αναφέρει μία εισαγωγή και δύο μεγάλες λειτουργίες αντιγραφής, τα αρχεία διαφέρουν ακριβώς κατά αυτό το εισαγόμενο τμήμα. “Τα checksum ταίριαξαν, αλλά τα αρχεία διαφέρουν εδώ.” — αν τα digest SHA-256 ταιριάζουν, τα αρχεία δεν διαφέρουν· ελέγχεται ξανά ότι άνοιξαν τα ίδια αρχεία και στα δύο εργαλεία. Αντίστοιχα, ένα ταίριασμα CRC-32 δεν αποδεικνύει τίποτα απέναντι σε εσκεμμένη σύγκρουση. “Ομοιότητα 0,4%, αλλά άλλαξα μόνο ένα πράγμα.” — αν η επεξεργασία έγινε μέσα σε συμπιεσμένο ή κρυπτογραφημένο περιέκτη (ZIP, PNG zTXt, κρυπτογραφημένος τόμος), μία λογική αλλαγή ξαναγράφει ολόκληρη τη συμπιεσμένη ροή.

Συχνές ερωτήσεις

Ποιο είναι το όριο μεγέθους; — 200 MB ανά αρχείο για τη διαφορά byte, που συγκρίνεται σε τμήματα του 1 MB. Η προβολή ευθυγράμμισης μπλοκ φορτώνει και τα δύο αρχεία, οπότε περιορίζεται στα 64 MB ανά πλευρά.
Εντοπίζει μετακινημένα τμήματα; — η ευθυγράμμιση αντιστοιχίζει μπλοκ με σειρά· ένα τμήμα που μετακινήθηκε σε άλλη θέση εμφανίζεται ως διαγραφή και εισαγωγή του ίδιου περιεχομένου, που είναι σωστή, αν και ελαφρώς χονδροειδής, περιγραφή.
Μπορεί να παράγει αρχείο patch; — όχι, είναι εργαλείο ανάλυσης· οι αναφορές CSV και TXT προορίζονται για τεκμηρίωση και έλεγχο, όχι για εφαρμογή αλλαγών.
Τι γίνεται με τα αρχεία; — τίποτα: κανένας διακομιστής, καμία αποθήκευση, καμία αναλυτική· κλείνοντας την καρτέλα χάνεται κάθε byte της εισόδου.