Vergelijking van binaire bestanden — byte-voor-byte-diff, blokuitlijning en bitniveauanalyse
Binair bestand vergelijken
Zet twee bestanden neer en deze pagina vergelijkt ze byte voor byte, direct in uw browser: elk verschillend offset, een hexdiff met omliggende context, een kaart van verschildichtheid, en een bitniveauanalyse die laat zien welke bits zijn gewijzigd. Een aparte blokuitgelijnde modus detecteert invoegingen en verwijderingen midden in een bestand — het geval dat een gewone byte-diff niet kan uitlijnen. Resultaten exporteren naar TXT en CSV. Er wordt nergens iets geüpload. Voor het bewerken van bytes in plaats van vergelijken, zie de hex-editor; voor tekst, het hulpmiddel Tekstvergelijking.
1. Kies twee bestanden
BESTAND A Zet het eerste bestand hier neer, of klik om het te kiezen Tot 200 MB. Blijft op deze machine.
BESTAND B Zet het tweede bestand hier neer, of klik om het te kiezen Vergeleken met bestand A.
Hexcontext rond elk verschil: — naburige verschillen die minder dan 16 bytes uit elkaar liggen, worden als één blok getoond.
2. Oordeel
De vergelijkingssamenvatting verschijnt hier zodra beide bestanden zijn gekozen en vergeleken.
Verschildichtheid (rood: verschillende bytes, oranje: bytes die alleen één bestand heeft):
0x0
Bitniveauanalyse — welke bitposities zijn gewijzigd (van elke verschillende byte, A XOR B):
3. Verschillen — hexweergave
| rood = bestand A, groen = bestand B, identieke rijen eenmaal getoond
Loading…
Verschilblokken
Verschiltabel per byte
4. Blokuitgelijnde weergave (detecteert invoegingen en verwijderingen)
Een byte-voor-byte-diff lijnt offset N uit met offset N. Als er bytes in het midden van één bestand zijn ingevoegd of verwijderd, verschuift alles daarna en meldt de gewone diff de hele staart als verschillend. Deze modus hasht blokken van 1 KB, koppelt ze tussen de bestanden en meldt het resultaat als kopieer / invoegen / verwijder-bewerkingen — zoals delta-hulpmiddelen als xdelta een wijziging zien. Beschikbaar wanneer beide bestanden 64 MB of kleiner zijn.
5. Exporteren
Privacy: beide bestanden worden gelezen met de eigen FileReader van de browser en in dit tabblad vergeleken — geen server, geen upload, geen opslag. Grote bestanden worden in segmenten van 1 MB vergeleken, zodat zelfs invoer van 200 MB nooit in zijn geheel tegelijk in het geheugen staat (tenzij u de blokuitgelijnde weergave draait, die beide bestanden laadt terwijl hij werkt).
Wat is een vergelijking van binaire bestanden?
Een binaire vergelijking lijnt twee bestanden uit bij byte 0 en loopt vooruit, en meldt elke offset waar de bytes verschillen — het browserequivalent van het klassieke commando cmp -l. Tekstdiff-hulpmiddelen kunnen dat niet: ze lopen vast op niet-afdrukbare bytes of herinterpreteren het bestand stilletjes in een tekencodering. Een binaire vergelijking behandelt beide bestanden als wat ze zijn, reeksen bytes, wat u wilt voor firmware-afbeeldingen, schijfdumps, databasebestanden, versleutelde blobs of elk bestand waarvan u het formaat niet kent.
Drie vragen worden op drie verschillende diepten beantwoord. “Zijn ze gelijk?” is een controlesomvraag — het hulpmiddel beantwoordt die het snelst, maar alleen met ja of nee. “Waar verschillen ze?” is de byte-diff op deze pagina: offsets, waarden en welke bits zijn omgeslagen. “Wat voor soort wijziging is het?” is wat de blokuitgelijnde weergave toevoegt — of het verschil een bewerking op dezelfde plek is, een ingevoegd stuk of een verwijderd stuk.
Byte-diff versus blokuitlijning — waarom twee weergaven?
Situatie
Byte-voor-byte-diff zegt
Blokuitgelijnde weergave zegt
Een veld is op dezelfde plek overschreven (zelfde bestandsgrootte)
enkele verspreide verschillende offsets
hetzelfde, plus “al het andere wordt overgenomen”
1 KB is ingevoegd op offset 2000 van bestand B
alles vanaf 2000 “verschilt”
kopieer 0–2000, voeg 1 KB in, kopieer de rest
Een blok is in het midden van bestand B verwijderd
alles vanaf dat punt “verschilt”
kopieer tot de opening, verwijder N bytes, kopieer de rest
Bestand B is bestand A met een andere kop ervoor
hele bestanden “verschillen”
verwijder kop, dan één lange kopie — dus een constante verschuiving
De byte-diff is altijd correct — die bytes verschillen inderdaad op die offsets. Het is de interpretatie die verschuift zodra bytes zijn ingevoegd of verwijderd, net zoals het toevoegen van een regel bovenaan een tekstbestand elk volgend regelnummer laat veranderen.
Hoe de bitniveauanalyse leest
Voor elke verschillende byte berekent de pagina A XOR B en telt welke bitposities gezet zijn. Dat histogram is verrassend zeggend: verschillen die zich concentreren in bit 0 (het minst significante bit van elke byte) zijn de vingerafdruk van LSB-steganografie, waarbij een bericht verborgen wordt door het laagste bit van pixel- of audiosamples lichtjes te veranderen. Verschillen die gelijkmatig over alle acht posities verdeeld zijn, betekenen dat hele waarden zijn herschreven. Verschillen die alleen hoge bits raken, betekenen meestal dat één veld is vervangen door een waarde van heel andere grootte. De Hammingafstand (totaal aantal omgeslagen bits) kwantificeert hetzelfde in één getal.
Een eerlijke kanttekening: willekeurige gegevens komen op elke byte met kans 1/256 overeen, dus twee ongerelateerde bestanden van dezelfde grootte komen nog steeds op ongeveer 0,4% van de bytes overeen. Een overeenkomst van 99,98% met een handvol korte verschilblokken is een wijziging op patchniveau; een overeenkomst van 0,4% betekent dat de bestanden simpelweg ongerelateerd zijn.
Veelgemaakte fouten
“Het hele bestand is rood na het eerste verschil.” — dat is het verschuivingseffect hierboven beschreven, geen echte beschadiging. Draai de blokuitgelijnde weergave: meldt die één invoeging en twee lange kopieerbewerkingen, dan verschillen de bestanden precies door dat ingevoegde stuk. “De controlesommen kwamen overeen, maar de bestanden verschillen hier.” — als SHA-256-digests overeenkomen, verschillen de bestanden niet; controleer opnieuw of u op beide hulpmiddelen dezelfde bestanden hebt geopend. Een CRC-32-overeenkomst daarentegen bewijst niets tegen een opzettelijke botsing. “Overeenkomst 0,4%, maar ik heb maar één ding gewijzigd.” — als uw bewerking binnen een gecomprimeerde of versleutelde container lag (ZIP, PNG zTXt, versleuteld volume), herschrijft één logische wijziging de hele gecomprimeerde stroom.
Veelgestelde vragen
Wat is de groottelimiet? — 200 MB per bestand voor de byte-diff, vergeleken in segmenten van 1 MB. De blokuitgelijnde weergave laadt beide bestanden, dus die is beperkt tot 64 MB per kant. Detecteert het verplaatste stukken? — de uitlijner koppelt blokken in volgorde; een stuk dat naar een andere positie is verplaatst, verschijnt als een verwijdering plus een invoeging van dezelfde inhoud, wat een juiste, zij het enigszins botte beschrijving is. Kan het een patchbestand maken? — nee, het is een analyse-instrument; de CSV- en TXT-rapporten zijn voor documentatie en beoordeling, niet om wijzigingen toe te passen. Wat gebeurt er met mijn bestanden? — niets: geen server, geen opslag, geen analyse; sluit het tabblad en elke byte van de invoer is weg.