GNU/Linux >> Znalost Linux >  >> Linux

Jak porovnám binární soubory v Linuxu?

Toto vytiskne offset a bajty v hexadecimálním formátu:

cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}'

Nebo proveďte $1-1 aby první vytištěný ofset začínal na 0.

cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}'

Bohužel strtonum() je specifický pro GAWK, takže pro jiné verze awk – např. mawk – budete muset použít funkci převodu z osmičkového na desítkové. Například,

cmp -l file1.bin file2.bin | mawk 'function oct2dec(oct,     dec) {for (i = 1; i <= length(oct); i++) {dec *= 8; dec += substr(oct, i, 1)}; return dec} {printf "%08X %02X %02X\n", $1, oct2dec($2), oct2dec($3)}'

Přerušeno kvůli čitelnosti:

cmp -l file1.bin file2.bin |
    mawk 'function oct2dec(oct,    dec) {
              for (i = 1; i <= length(oct); i++) {
                  dec *= 8;
                  dec += substr(oct, i, 1)
              };
              return dec
          }
          {
              printf "%08X %02X %02X\n", $1, oct2dec($2), oct2dec($3)
          }'

Jako ~kvak upozornil:

 % xxd b1 > b1.hex
 % xxd b2 > b2.hex

A pak

 % diff b1.hex b2.hex

nebo

 % vimdiff b1.hex b2.hex

diff + xxd

Zkuste diff v následující kombinaci substituce procesu zsh/bash:

diff -y <(xxd foo1.bin) <(xxd foo2.bin)

Kde:

  • -y zobrazuje rozdíly vedle sebe (volitelné).
  • xxd je nástroj CLI pro vytvoření hexdump výstupu binárního souboru.
  • Přidejte -W200 na diff pro širší výstup (200 znaků na řádek).
  • Pro barvy použijte colordiff jak je uvedeno níže.

colordiff + xxd

Pokud máte colordiff , může zbarvit diff výstup, např.:

colordiff -y <(xxd foo1.bin) <(xxd foo2.bin)

Ukázkový výstup:

vimdiff + xxd

Můžete také použít vimdiff , např.

vimdiff <(xxd foo1.bin) <(xxd foo2.bin)

Rady:

  • jsou-li soubory příliš velké, přidejte limit (např. -l1000 ) pro každý xxd

Linux
  1. 10 způsobů, jak analyzovat binární soubory na Linuxu

  2. Jak šifrovat soubory pomocí gocryptfs na Linuxu

  3. Jak přejmenovat soubory v Linuxu

  1. Jak porovnat tři soubory v Linuxu pomocí nástroje diff3

  2. Jak komprimovat více souborů v systému Linux

  3. Jak rozeznat binární soubory od textových souborů v linuxu

  1. Jak si přizpůsobím výzdobu oken v Linuxu

  2. Jak najít soubory v Linuxu

  3. Jak provedu binární rozdíl na dvou stejně velkých souborech pod Linuxem?