Porovnání binárních souborů — bajt po bajtu, zarovnání bloků a analýza na úrovni bitů
Binární porovnání souborů
Přetáhněte dva soubory a tato stránka je porovná bajt po bajtu přímo ve vašem prohlížeči: každý odlišný posun, hex rozdíl s okolním kontextem, mapu hustoty rozdílů a analýzu na úrovni bitů, která ukazuje, které bity se změnily. Samostatný režim se zarovnáním bloků zjistí vložení a smazání uprostřed souboru — případ, který prostý rozdíl bajtů nedokáže zarovnat. Výsledky lze exportovat do TXT a CSV. Nic se nikam nenahrává. Pro úpravu bajtů místo porovnání použijte hex editor; pro text nástroj Porovnání textu.
1. Vyberte dva soubory
SOUBOR A Sem přetáhněte první soubor, nebo klikněte a vyberte Až 200 MB. Zůstává na tomto počítači.
SOUBOR B Sem přetáhněte druhý soubor, nebo klikněte a vyberte Porovnáno s souborem A.
Hexadecimální kontext kolem každého rozdílu: — sousední rozdíly bližší než 16 bajtů se zobrazují jako jeden blok.
2. Verdikt
Shrnutí porovnání se zobrazí, jakmile jsou oba soubory vybrány a porovnány.
Hustota rozdílů (červená: rozdílné bajty, oranžová: bajty, které má jen jeden soubor):
0x0
Analýza na úrovni bitů — které bitové pozice se změnily (u každého rozdílného bajtu, A XOR B):
3. Rozdíly — hex pohled
| červeně = soubor A, zeleně = soubor B, shodné řádky jsou vypsány jen jednou
Loading…
Rozdílové bloky
Tabulka rozdílů po bajtech
4. Pohled se zarovnáním bloků (zjišťuje vložení a smazání)
Rozdíl bajt po bajtu zarovnává posun N v jednom souboru s posunem N ve druhém. Pokud byly bajty vloženy nebo smazány uprostřed jednoho souboru, vše za tímto místem se posune a prostý rozdíl hlásí celý konec jako odlišný. Tento režim hašuje bloky po 1 KB, páruje je mezi soubory a výsledek hlásí jako operace kopírování / vložení / smazání — tak vidí změnu delta nástroje jako xdelta. Je dostupný, když oba soubory mají 64 MB nebo méně.
5. Export
Soukromí: oba soubory se čtou vestavěným FileReaderem prohlížeče a porovnávají se v této kartě — žádný server, žádné nahrávání, žádné úložiště. Velké soubory se porovnávají po částech 1 MB, takže ani vstupy 200 MB se nikdy celé nedrží v paměti najednou (pokud nespustíte pohled se zarovnáním bloků, ten načítá oba soubory během práce).
Co je porovnání binárních souborů?
Binární porovnání srovnává dva soubory od bajtu 0 dopředu a hlásí každý posun, kde se bajty liší — prohlížečový ekvivalent klasického příkazu cmp -l. Nástroje pro porovnání textu to nedokážou: buď se zaseknou na netisknutelných bajtech, nebo soubor tiše přeinterpretují v nějakém znakovém kódování. Binární porovnání bere oba soubory přesně tak, jak jsou, jako pole bajtů, což je přesně to, co chcete u firmwaru, výpisů disků, databázových souborů, šifrovaných bloků nebo jakéhokoli souboru, jehož formát neznáte.
Na tři otázky se odpovídá ve třech hloubkách. „Jsou stejné?“ je otázka kontrolního součtu — nástroj ji zodpoví nejrychleji, ale jen ano nebo ne. „Kde se liší?“ je rozdíl bajt po bajtu na této stránce: posuny, hodnoty a to, které bity se převrátily. „Jaký druh změny to je?“ přidává pohled se zarovnáním bloků — zda jde o úpravu na místě, vložený kus, nebo smazaný kus.
Rozdíl bajt po bajtu oproti zarovnání bloků — proč dva pohledy?
Situace
Rozdíl bajt po bajtu říká
Pohled se zarovnáním bloků říká
Pole bylo přepsáno na místě (stejná velikost souboru)
několik rozptýlených rozdílných posunů
totéž, plus „vše ostatní se zkopíruje beze změny“
1 KB bylo vloženo na posun 2000 souboru B
vše od 2000 dál „se liší“
zkopírovat 0–2000, vložit 1 KB, zkopírovat zbytek
Blok byl smazán uprostřed souboru B
vše od tohoto místa dál „se liší“
zkopírovat až k mezeře, smazat N bajtů, zkopírovat zbytek
Soubor B je soubor A s jinou hlavičkou na začátku
celé soubory „se liší“
smazat hlavičku, pak jedna dlouhá kopie — tedy konstantní posun
Rozdíl bajt po bajtu je vždy správný — tyto bajty se na těch posunech skutečně liší. Posouvá se až interpretace, jakmile byly bajty vloženy nebo smazány, přesně jako když přidání řádku na začátek textového souboru změní všechna následující čísla řádků.
Jak čte analýza na úrovni bitů
U každého rozdílného bajtu stránka počítá A XOR B a sčítá, které bitové pozice jsou nastaveny. Tento histogram je překvapivě výpovědní: rozdíly soustředěné v bitu 0 (nejméně významném bitu každého bajtu) jsou otiskem steganografie LSB, kde se zpráva skryje lehkým posunem nejnižšího bitu pixelů nebo vzorků zvuku. Rozdíly rovnoměrně rozložené přes všech osm pozic znamenají, že byly přepsány celé hodnoty. Rozdíly dotýkající se jen vysokých bitů obvykle znamenají, že jedno pole bylo nahrazeno hodnotou velmi jiné velikosti. Hammingova vzdálenost (celkový počet převrácených bitů) totéž kvantifikuje jedním číslem.
Jedno poctivé upozornění: u náhodných dat se v daném bajtu shodují s pravděpodobností 1/256, takže dva nesouvisející soubory stejné velikosti se shodují přibližně na 0,4 % bajtů. Podobnost 99,98 % s hrstkou krátkých bloků rozdílů je změna na úrovni záplaty; podobnost 0,4 % znamená, že soubory jsou prostě nesouvisející.
Časté chyby
„Po prvním rozdílu je červený celý soubor.“ — to je výše popsaný efekt posunu, ne skutečné poškození. Spusťte pohled se zarovnáním bloků: pokud ohlásí jeden vložený úsek a dvě dlouhé operace kopírování, soubory se liší právě o tento vložený úsek. „Kontrolní součty se shodují, ale soubory se tady liší.“ — pokud se shodují výtahy SHA-256, soubory se nelíší; ověřte, že jste v obou nástrojích otevřeli tytéž soubory. Shoda CRC-32 naopak nic nedokazuje proti záměrné kolizi. „Podobnost 0,4 %, ale změnil jsem jen jednu věc.“ — pokud byla vaše úprava uvnitř komprimovaného nebo šifrovaného kontejneru (ZIP, PNG zTXt, šifrovaný svazek), jediná logická změna přepíše celý komprimovaný proud.
Časté dotazy
Jaký je limit velikosti? — 200 MB na soubor pro rozdíl bajt po bajtu, porovnává se po částech 1 MB. Pohled se zarovnáním bloků načítá oba soubory, takže je omezen na 64 MB na stranu. Zachytí přesunuté kusy? — zarovnávač páruje bloky v pořadí; kus přesunutý na jinou pozici se ukáže jako smazání plus vložení téhož obsahu, což je správný, i když trochu tupý popis. Umí vytvořit záplatový soubor? — ne, je to analytický nástroj; zprávy CSV a TXT slouží k dokumentaci a kontrole, ne k aplikování změn. Co se stane s mými soubory? — nic: žádný server, žádné úložiště, žádná analytika; zavřete kartu a všechny bajty vstupu jsou pryč.