Porovnanie binárnych súborov — rozdiely bajt po bajte, zarovnanie blokov a analýza na úrovni bitov
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.
1. Výber dvoch súborov
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.
2. Verdikt
Súhrn porovnania sa zobrazí tu, keď sa vyberú a porovnajú oba súbory.
Hustota rozdielov (červená: odlišné bajty, oranžová: bajty, ktoré má len jeden súbor):
0x0
Analýza na úrovni bitov — ktoré pozície bitov sa zmenili (u každého odlišného bajtu, A XOR B):
3. Rozdiely — hexadecimálny pohľad
| červená = súbor A, zelená = súbor B, identické riadky sa vypíšu raz
Loading…
Bloky rozdielov
Tabuľka rozdielov bajt po bajte
4. Pohľad so zarovnaním blokov (zisťuje vloženia a odstránenia)
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.
5. Export
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ácia
Rozdiel 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 posunov
to isté, plus „všetko ostatné sa skopíruje“
1 KB bolo vložené na posun 2000 súboru B
vš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 B
vš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čiatku
celé 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.