Binärdatei-Vergleich — Byte-für-Byte-Vergleich, Blockausrichtung und Bitanalyse
Binärdatei-Vergleich
Legen Sie zwei Dateien ab, und diese Seite vergleicht sie Byte für Byte, direkt in Ihrem Browser: jeder abweichende Offset, ein Hex-Diff mit umgebendem Kontext, eine Karte der Unterschiedsdichte und eine Bitanalyse, die zeigt, welche Bits sich geändert haben. Ein eigener blockausgerichteter Modus erkennt Einfügungen und Löschungen mitten in einer Datei — der Fall, den ein einfacher Byte-Diff nicht ausrichten kann. Die Ergebnisse lassen sich als TXT und CSV exportieren. Nichts wird irgendwohin hochgeladen. Zum Bearbeiten statt Vergleichen von Bytes siehe den Hex-Editor; für Text das Werkzeug Textvergleich.
1. Zwei Dateien auswählen
DATEI A Legen Sie die erste Datei hier ab oder klicken Sie, um sie auszuwählen Bis zu 200 MB. Bleibt auf diesem Rechner.
DATEI B Legen Sie die zweite Datei hier ab oder klicken Sie, um sie auszuwählen Wird mit Datei A verglichen.
Hex-Kontext um jeden Unterschied: — benachbarte Unterschiede, die weniger als 16 Bytes auseinanderliegen, werden als ein Block gezeigt.
2. Ergebnis
Die Zusammenfassung des Vergleichs erscheint hier, sobald beide Dateien ausgewählt und verglichen wurden.
Dichte der Unterschiede (rot: abweichende Bytes, orange: Bytes, die nur eine Datei hat):
0x0
Bitanalyse — welche Bitpositionen sich geändert haben (von jedem abweichenden Byte, A XOR B):
3. Unterschiede — Hex-Ansicht
| rot = Datei A, grün = Datei B, identische Zeilen werden einmal ausgegeben
Ein Byte-für-Byte-Diff stellt Offset N neben Offset N. Wurden in der Mitte einer Datei Bytes eingefügt oder gelöscht, verschiebt sich danach alles, und der einfache Diff meldet den ganzen Rest als verschieden. Dieser Modus teilt Blöcke zu je 1 KB, ordnet sie zwischen den Dateien einander zu und meldet das Ergebnis als Vorgänge Kopieren / Einfügen / Löschen — so sieht ein Delta-Werkzeug wie xdelta eine Änderung. Verfügbar, wenn beide Dateien 64 MB oder kleiner sind.
5. Exportieren
Datenschutz: Beide Dateien werden mit dem eigenen FileReader des Browsers gelesen und in diesem Tab verglichen — kein Server, kein Upload, keine Speicherung. Große Dateien werden in 1 MB großen Abschnitten verglichen, daher liegen selbst 200 MB große Eingaben nie vollständig im Speicher (außer bei der blockausgerichteten Ansicht, die beide Dateien während der Berechnung lädt).
Was ist ein Binärdatei-Vergleich?
Ein binärer Vergleich legt zwei Dateien ab Byte 0 nebeneinander und läuft vorwärts, wobei er jeden Offset meldet, an dem sich die Bytes unterscheiden — das Browser-Gegenstück zum klassischen Befehl cmp -l. Textdiff-Werkzeuge können das nicht: Sie scheitern an nicht druckbaren Bytes oder interpretieren die Datei stillschweigend in einer Zeichenkodierung neu. Ein binärer Vergleich behandelt beide Dateien genau so, wie sie sind, nämlich als Byte-Folgen — das braucht man für Firmware-Abbilder, Festplatten-Dumps, Datenbankdateien, verschlüsselte Blobs oder jede Datei, deren Format man nicht kennt.
Drei Fragen werden auf drei verschiedenen Ebenen beantwortet. „Sind sie gleich?“ ist eine Prüfsummenfrage — das Werkzeug beantwortet sie am schnellsten, aber nur mit Ja oder Nein. „Wo unterscheiden sie sich?“ ist der Byte-Diff dieser Seite: Offsets, Werte und welche Bits gekippt sind. „Welche Art von Änderung ist es?“ ist das, was die blockausgerichtete Ansicht hinzufügt — ob der Unterschied eine Änderung an Ort und Stelle, ein eingefügter Abschnitt oder ein gelöschter Abschnitt ist.
Byte-Diff gegen Blockausrichtung — warum zwei Ansichten?
Situation
Byte-für-Byte-Diff sagt
Blockausgerichtete Ansicht sagt
Ein Feld wurde an Ort und Stelle überschrieben (gleiche Dateigröße)
ein paar verstreute abweichende Offsets
dasselbe, plus „alles Übrige wird unverändert kopiert“
1 KB wurde bei Offset 2000 von Datei B eingefügt
alles ab 2000 „unterscheidet sich“
0–2000 kopieren, 1 KB einfügen, den Rest kopieren
Ein Block wurde mitten in Datei B gelöscht
alles ab dieser Stelle „unterscheidet sich“
Kopiere bis zur Lücke, lösche N Bytes, kopiere den Rest
Datei B ist Datei A mit einem anderen, vorangestellten Header
ganze Dateien „unterscheiden sich“
lösche den Header, dann ein langer Kopiervorgang — also eine konstante Verschiebung
Der Byte-Diff ist immer korrekt — diese Bytes unterscheiden sich tatsächlich an diesen Offsets. Verschiebt sich die Deutung, sobald Bytes eingefügt oder gelöscht wurden, genau wie das Einfügen einer Zeile am Anfang einer Textdatei jede folgende Zeilennummer ändert.
Wie die Bitanalyse zu lesen ist
Für jedes abweichende Byte berechnet die Seite A XOR B und zählt, welche Bitpositionen gesetzt sind. Dieses Histogramm ist überraschend aussagekräftig: Unterschiede, die sich in Bit 0 konzentrieren (dem niederwertigsten Bit jedes Bytes), sind der Fingerabdruck von LSB-Steganografie, bei der eine Nachricht versteckt wird, indem das niederwertige Bit von Bild- oder Audiosamples leicht verändert wird. Gleichmäßig über alle acht Positionen verteilte Unterschiede bedeuten, dass ganze Werte neu geschrieben wurden. Unterschiede, die nur hohe Bits betreffen, bedeuten meist, dass ein Feld durch einen Wert mit ganz anderer Größenordnung ersetzt wurde. Die Hamming-Distanz (Gesamtzahl der gekippten Bits) fasst dasselbe in einer Zahl zusammen.
Ein ehrlicher Vorbehalt: Bei Zufallsdaten stimmt ein bestimmtes Byte mit einer Wahrscheinlichkeit von 1/256 überein, daher stimmen zwei unabhängige Dateien gleicher Größe immer noch bei etwa 0,4 % der Bytes überein. Eine Ähnlichkeit von 99,98 % mit einer Handvoll kurzer Unterschiedsblöcke ist eine Änderung auf Patch-Ebene; eine Ähnlichkeit von 0,4 % bedeutet, dass die Dateien schlicht nichts miteinander zu tun haben.
Häufige Fehler
„Nach dem ersten Unterschied ist die ganze Datei rot.“ — Das ist der oben beschriebene Verschiebungseffekt, keine echte Beschädigung. Starten Sie die blockausgerichtete Ansicht: Meldet sie eine Einfügung und zwei lange Kopiervorgänge, unterscheiden sich die Dateien genau um diesen eingefügten Abschnitt. „Die Prüfsummen stimmen überein, aber die Dateien unterscheiden sich hier.“ — Stimmen die SHA-256-Digests überein, unterscheiden sich die Dateien nicht; prüfen Sie erneut, ob Sie in beiden Werkzeugen dieselben Dateien geöffnet haben. Eine CRC-32-Übereinstimmung dagegen beweist gegenüber einer absichtlichen Kollision nichts. „Ähnlichkeit 0,4 %, aber ich habe nur eine Sache geändert.“ — Lag Ihre Änderung innerhalb eines komprimierten oder verschlüsselten Containers (ZIP, PNG zTXt, verschlüsseltes Volume), schreibt eine einzelne logische Änderung den gesamten komprimierten Datenstrom neu.
Häufige Fragen
Wie groß darf eine Datei sein? — 200 MB je Datei für den Byte-Diff, verglichen in 1 MB großen Abschnitten. Die blockausgerichtete Ansicht lädt beide Dateien vollständig, daher ist sie auf 64 MB je Seite begrenzt. Erkennt es verschobene Abschnitte? — Der Abgleich ordnet Blöcke der Reihe nach zu; ein an eine andere Position verschobener Abschnitt erscheint als Löschung plus Einfügung desselben Inhalts, was eine richtige, wenn auch etwas grobe Beschreibung ist. Kann es eine Patchdatei erzeugen? — Nein, es ist ein Analysewerkzeug; die CSV- und TXT-Berichte dienen der Dokumentation und Prüfung, nicht dem Anwenden von Änderungen. Was geschieht mit meinen Dateien? — Nichts: kein Server, keine Speicherung, keine Analyse; schließen Sie den Tab, und jedes Byte der Eingabe ist weg.