Bináris fájl-összehasonlítás

Két fájl ide húzható, és az oldal bájtonként hasonlítja össze őket, közvetlenül a böngészőben: minden eltérő eltolás, hexadecimális különbség környező kontextussal, eltérés-sűrűségtérkép, és bitszintű elemzés, amely megmutatja, mely bitek változtak. Külön blokkillesztett mód észleli a fájl közepén történő beszúrásokat és törléseket — azt az esetet, amelyet a sima bájtkülönbség nem tud illeszteni. Az eredmények TXT- és CSV-formátumba exportálhatók. Semmi nem töltődik fel sehova. Bájtok szerkesztéséhez a hex-szerkesztő, szöveghez a Szövegkülönbség eszköz való.
A FÁJL
Az első fájl ide húzható, vagy kattintással választható ki
Legfeljebb 200 MB. A gépen marad.
B FÁJL
A második fájl ide húzható, vagy kattintással választható ki
Összehasonlítva az A fájllal.
Hexadecimális környezet minden különbség körül:  — a 16 bájtnál közelebbi szomszédos különbségek egy blokként jelennek meg.
Az összehasonlítás összegzése itt jelenik meg, miután mindkét fájl kiválasztása és összehasonlítása megtörtént.
A bájtonkénti különbség az N. eltolást az N. eltolással illeszti össze. Ha egy fájl közepén bájtok lettek beszúrva vagy törölve, a pont utáni minden eltolódik, és a sima különbség az egész farkat eltérőnek jelenti. Ez a mód 1 KB-os blokkokat kivonatol, a fájlok között párosítja őket, és az eredményt másolás / beszúrás / törlés műveletekként jelenti — ahogy a delta-eszközök, például az xdelta látják a változást. Akkor érhető el, ha mindkét fájl legfeljebb 64 MB.
Adatvédelem: mindkét fájl a böngésző saját FileReader-ével olvasódik, és ebben a lapban hasonlítódik össze — nincs szerver, nincs feltöltés, nincs tárolás. A nagy fájlok 1 MB-os szeletekben hasonlítódnak össze, így még a 200 MB-os bemenetek sem kerülnek teljes egészükben egyszerre a memóriába (kivéve, ha a blokkillesztett nézetet futtatják, amely munka közben mindkét fájlt betölti).

Mi a bináris fájl-összehasonlítás?

Egy bináris összehasonlítás a két fájlt a 0. bájtnál egymás mellé illeszti, és előre haladva minden olyan eltolást jelent, ahol a bájtok különböznek — ez a klasszikus cmp -l parancs böngészős megfelelője. Szöveges különbségkereső eszközök nem tudják ezt: vagy elakadnak a nem nyomtatható bájtokon, vagy csendben más karakterkódolásként értelmezik a fájlt. A bináris összehasonlítás mindkét fájlt pontosan azzal kezeli, ami: bájttömbökként, ami kell firmware-képekhez, lemezkiírásokhoz, adatbázisfájlokhoz, titkosított adatokhoz vagy bármely olyan fájlhoz, amelynek formátumát nem ismerjük.

Három kérdésre három különböző mélységben kapunk választ. „Megegyeznek?” ellenőrző összeg kérdés — az eszköz ezt a leggyorsabban válaszolja meg, de csak igennel vagy nemmel. „Hol térnek el?” az oldal bájtkülönbsége: eltolások, értékek, és hogy mely bitek fordultak meg. „Milyen jellegű a változás?” ezt a blokkillesztett nézet adja hozzá — hogy a különbség helyben történő szerkesztés, beszúrt darab vagy törölt darab-e.

Bájtonkénti különbség és blokkillesztés — miért két nézet?

HelyzetA bájtonkénti különbség szerintA blokkillesztett nézet szerint
Egy mező helyben felülíródott (azonos fájlméret) néhány szétszórt eltérő eltolás ugyanaz, plusz „minden más átmásolódik”
1 KB került be a B fájl 2000. eltolásához minden 2000-től kezdve „eltér” másolás 0–2000, 1 KB beszúrása, a többi másolása
Egy blokk törlődött a B fájl közepén minden ettől a ponttól kezdve „eltér” másolás a résig, N bájt törlése, a többi másolása
A B fájl az A fájl egy másik fejléccel kiegészítve a teljes fájlok „eltérnek” fejléc törlése, majd egy hosszú másolás — vagyis állandó eltolás

A bájtkülönbség mindig helyes — ezeken az eltolásokon a bájtok valóban különböznek. A értelmezés az, ami eltolódik, miután bájtok be lettek szúrva vagy törölve, pontosan úgy, mint ahogy egy szöveges fájl elejére beszúrt sor minden következő sorszámot megváltoztat.

Hogyan olvasható a bitszintű elemzés

Minden eltérő bájtra az oldal kiszámítja az A XOR B-t, és megszámolja, mely bitpozíciók vannak beállítva. Ez a hisztogram meglepően kifejező: a 0. bitben (minden bájt legkisebb helyiértékű bitjében) összpontosuló különbségek a LSB-steganográfia ujjlenyomatai, ahol egy üzenetet egy kép- vagy hangminta alsó bitjének finom megváltoztatásával rejtenek el. Mind a nyolc pozícióra egyenletesen szétszóródó különbségek azt jelentik, hogy egész értékek lettek újraírva. A csak magas biteket érintő különbségek általában azt jelentik, hogy egy mezőt nagyon eltérő nagyságrendű értékkel cseréltek ki. A Hamming-távolság (a megfordított bitek teljes száma) ugyanezt egyetlen számban fejezi ki.

Egy őszinte megjegyzés: véletlen adatok bármely adott bájton 1/256 valószínűséggel egyeznek, így két, nem összefüggő, azonos méretű fájl is kb. a bájtok 0,4%-án egyezik. A 99,98%-os hasonlóság néhány rövid különbségblokkal foltszintű változás; a 0,4%-os hasonlóság egyszerűen azt jelenti, hogy a fájlok nem összefüggők.

Gyakori hibák

„Az egész fájl piros az első eltérés után.” — ez a fent leírt eltolódási hatás, nem valódi sérülés. A blokkillesztett nézetet érdemes futtatni: ha egy beszúrást és két hosszú másolási műveletet jelent, a fájlok pontosan ennyi beszúrt darabban térnek el. „Az ellenőrző összegek egyeztek, mégis itt eltérnek a fájlok.” — ha a SHA-256 kivonatok egyeznek, a fájlok nem térnek el; ellenőrizni érdemes, hogy mindkét eszközben ugyanazokat a fájlokat nyitották-e meg. Egy CRC-32 egyezés viszont semmit nem bizonyít egy szándékos ütközéssel szemben. „Hasonlóság 0,4%, pedig csak egy dolgot változtattam.” — ha a szerkesztés tömörített vagy titkosított tárolón belül történt (ZIP, PNG zTXt, titkosított kötet), egyetlen logikai változtatás a teljes tömörített folyamot újraírja.

GYIK

Mekkora a méretkorlát? — fájlonként 200 MB a bájtkülönbségnél, 1 MB-os szeletekben összehasonlítva. A blokkillesztett nézet mindkét fájlt betölti, ezért oldalanként 64 MB-ra korlátozott.
Észleli az áthelyezett darabokat? — az illesztő sorrendben párosítja a blokkokat; egy másik pozícióba áthelyezett darab egy törlésként és egy azonos tartalmú beszúrásként jelenik meg, ami helyes, bár kissé tompa leírás.
Készíthet javítófájlt? — nem, elemző eszköz; a CSV- és TXT-jelentések dokumentálásra és átnézésre szolgálnak, nem változtatások alkalmazására.
Mi történik a fájljaimmal? — semmi: nincs szerver, nincs tárolás, nincs elemzés; a lap bezárása után a bemenet minden bájtja eltűnik.