Binárne porovnanie súborov

Vložením dvoch súborov táto stránka porovná bajt po bajte priamo vo prehliadači: každý odlišný posun, hexadecimálny rozdiel s okolitým kontextom, mapu hustoty rozdielov a analýzu na úrovni bitov, ktorá ukazuje ktoré bity sa zmenili. Samostatný režim so zarovnaním blokov zistí vloženia a odstránenia uprostred súboru — prípad, ktorý obyčajný rozdiel bajt po bajte nedokáže zarovnať. Výsledky sa exportujú do TXT a CSV. Nič sa nikam nenahráva. Ak sa namiesto porovnávania majú upravovať bajty, súvisiace: hexadecimálny editor; pre text nástroj Rozdiel textu.
SÚBOR A
Sem sa pretiahne prvý súbor, alebo sa kliknutím vyberie
Až 200 MB. Zostáva na tomto počítači.
SÚBOR B
Sem sa pretiahne druhý súbor, alebo sa kliknutím vyberie
Porovnané voči súboru A.
Hexadecimálny kontext okolo každého rozdielu:  — susedné rozdiely bližšie než 16 bajtov sa zobrazia ako jeden blok.
Súhrn porovnania sa zobrazí tu, keď sa vyberú a porovnajú oba súbory.
Rozdiel bajt po bajte zarovnáva posun N s posunom N. Ak sa bajty vložili alebo odstránili v strede jedného súboru, všetko za týmto bodom sa posunie a obyčajný rozdiel hlási celý chvost ako odlišný. Tento režim hashuje 1 KB bloky, páruje ich medzi súbormi a výsledok hlási ako operácie kopírovanie / vloženie / odstránenie — tak, ako zmenu vidia delta nástroje ako xdelta. Dostupný je, keď sú oba súbory 64 MB alebo menšie.
Súkromie: oba súbory sa čítajú vstavaným FileReader prehliadača a porovnávajú sa v tejto karte — žiadny server, žiadne nahrávanie, žiadne ukladanie. Veľké súbory sa porovnávajú v 1 MB častiach, takže ani vstupy 200 MB nikdy nesedia celé v pamäti naraz (pokiaľ nespustíte pohľad so zarovnaním blokov, ktorý pri práci načíta oba súbory).

Čo je porovnanie binárnych súborov?

Binárne porovnanie zarovná dva súbory od bajtu 0 a postupuje dopredu, pričom hlási každý posun, kde sa bajty líšia — ekvivalent v prehliadači klasického príkazu cmp -l. Nástroje na textový rozdiel to nedokážu: buď sa zaseknú na netlačiteľných bajtoch, alebo potichu znovu interpretujú súbor v nejakom znakovom kódovaní. Binárne porovnanie berie oba súbory presne tak, ako sú — ako polia bajtov, čo je presne to, čo treba pri firmvérových obrazoch, výpisoch diskov, súboroch databáz, zašifrovaných blokoch alebo akomkoľvek súbore, ktorého formát nepoznáte.

Na tri otázky sa odpovedá na troch rôznych hĺbkach. „Sú rovnaké?“ je otázka kontrolného súčtu — nástroj na ňu odpovie najrýchlejšie, ale len áno alebo nie. „Kde sa líšia?“ je rozdiel bajt po bajte na tejto stránke: posuny, hodnoty a to, ktoré bity sa prepli. „Aký druh zmeny to je?“ dopĺňa pohľad so zarovnaním blokov — či je rozdiel úpravou na mieste, vloženým kusom alebo odstráneným kusom.

Rozdiel bajt po bajte verzus zarovnanie blokov — prečo dva pohľady?

SituáciaRozdiel bajt po bajte hovoríPohľad so zarovnaním blokov hovorí
Pole bolo prepísané na mieste (rovnaká veľkosť súboru)niekoľko rozptýlených odlišných posunovto isté, plus „všetko ostatné sa skopíruje“
1 KB bolo vložené na posun 2000 súboru Bvšetko od 2000 ďalej „sa líši“kopírovať 0–2000, vložiť 1 KB, kopírovať zvyšok
Blok bol odstránený v strede súboru Bvšetko od tohto miesta ďalej „sa líši“kopírovať až po medzeru, odstrániť N bajtov, kopírovať zvyšok
Súbor B je súbor A s iným pridaným hlavičkovým blokom na začiatkucelé súbory „sa líšia“odstrániť hlavičku, potom jedna dlhá kópia — teda konštantný posun

Rozdiel bajt po bajte je vždy správny — tie bajty sa naozaj na tých posunoch líšia. Mení sa interpretácia, keď sa vložia alebo odstránia bajty, presne ako keď pridanie riadka na začiatok textového súboru zmení všetky nasledujúce čísla riadkov.

Ako sa číta analýza na úrovni bitov

Pre každý odlišný bajt stránka vypočíta A XOR B a spočíta, ktoré pozície bitov sú nastavené. Toto histogram je prekvapivo výrečný: rozdiely sústredené v bite 0 (najmenej významnom bite každého bajtu) sú odtlačkom steganografie LSB, pri ktorej sa správa skrýva jemným posunom najnižšieho bitu pixelov alebo zvukových vzoriek. Rozdiely rovnomerne rozložené na všetkých ôsmich pozíciách znamenajú, že boli prepísané celé hodnoty. Rozdiely, ktoré sa dotýkajú len vysokých bitov, zvyčajne znamenajú, že jedno pole bolo nahradené hodnotou veľmi inej veľkosti. Hammingova vzdialenosť (celkový počet prepnutých bitov) vyjadruje to isté jedným číslom.

Jedna úprimná výhrada: náhodné dáta sa v ľubovoľnom bajte zhodujú s pravdepodobnosťou 1/256, takže dva nesúvisiace súbory rovnakej veľkosti sa stále zhodujú v zhruba 0,4 % bajtov. Podobnosť 99,98 % s hŕstkou krátkych rozdielnych blokov je zmena úrovne záplaty; podobnosť 0,4 % znamená, že súbory sú jednoducho nesúvisiace.

Časté chyby

„Celý súbor je po prvom rozdiele červený.“ — to je posunový efekt opísaný vyššie, nie skutočné poškodenie. Spustí sa pohľad so zarovnaním blokov: ak hlási jedno vloženie a dve dlhé operácie kopírovania, súbory sa líšia presne o ten vložený kus. „Kontrolné súčty sa zhodujú, ale súbory sa tu líšia.“ — ak sa digesty SHA-256 zhodujú, súbory sa nelíšia; skontroluje sa, či sa na oboch nástrojoch otvorili tie isté súbory. Zhoda CRC-32 naopak nedokazuje nič proti cielenej kolízii. „Podobnosť 0,4 %, ale zmenil som len jednu vec.“ — ak bola úprava vnútri komprimovaného alebo zašifrovaného kontajnera (ZIP, PNG zTXt, zašifrovaný zväzok), jedna logická zmena prepíše celý komprimovaný prúd.

FAQ

Aká je limit veľkosti? — 200 MB na súbor pre rozdiel bajt po bajte, porovnávaný v 1 MB častiach. Pohľad so zarovnaním blokov načíta oba súbory, takže je obmedzený na 64 MB na stranu.
Zistí presunuté kusy? — zarovnávač páruje bloky v poradí; kus presunutý na inú pozíciu sa zobrazí ako odstránenie plus vloženie rovnakého obsahu, čo je správny, hoci trochu hrubý opis.
Dá sa vytvoriť záplata? — nie, je to analytický nástroj; správy CSV a TXT slúžia na dokumentáciu a kontrolu, nie na aplikovanie zmien.
Čo sa stane so súbormi? — nič: žiadny server, žiadne ukladanie, žiadna analytika; keď sa karta zavrie, každý bajt vstupu zmizne.