GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membandingkan file biner di Linux?

Ini akan mencetak offset dan byte dalam hex:

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

Atau lakukan $1-1 agar cetak offset pertama dimulai dari 0.

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

Sayangnya, strtonum() khusus untuk GAWK, jadi untuk versi lain dari awk—mis., mawk—Anda perlu menggunakan fungsi konversi oktal ke desimal. Misalnya,

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)}'

Rusak agar mudah dibaca:

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)
          }'

Sebagai ~dukun menunjukkan:

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

Dan kemudian

 % diff b1.hex b2.hex

atau

 % vimdiff b1.hex b2.hex

diff + xxd

Coba diff dalam kombinasi substitusi proses zsh/bash berikut:

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

Dimana:

  • -y menampilkan perbedaan secara berdampingan (opsional).
  • xxd adalah alat CLI untuk membuat output hexdump dari file biner.
  • Tambahkan -W200 ke diff untuk keluaran yang lebih luas (200 karakter per baris).
  • Untuk warna, gunakan colordiff seperti yang ditunjukkan di bawah ini.

colordiff + xxd

Jika Anda sudah colordiff , dapat mewarnai diff keluaran, misalnya:

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

Keluaran sampel:

vimdiff + xxd

Anda juga dapat menggunakan vimdiff , mis.

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

Petunjuk:

  • jika file terlalu besar, tambahkan batas (misalnya -l1000 ) untuk setiap xxd

Linux
  1. 10 cara untuk menganalisis file biner di Linux

  2. Cara mengenkripsi file dengan gocryptfs di Linux

  3. Cara Mengganti Nama File di Linux

  1. Cara Membuat Zip Banyak File di Linux

  2. Bagaimana membedakan biner dari file teks di linux

  3. Bagaimana cara melakukan perbedaan biner pada dua file berukuran identik di Linux?

  1. Bagaimana saya menyesuaikan dekorasi jendela Linux saya

  2. Cara menemukan file di Linux

  3. Bagaimana membandingkan tiga file di Linux menggunakan alat diff3