• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Linux 比較二進位檔案差異指令教學與範例

介紹如何在 Linux 系統下使用 xxd、od、diff、hexdiff 與 binwalk 等指令比較兩個二進位檔案之間的差異處。

xxd 與 diff

在 Linux 中若要比較兩個二進位檔案內容的差異,最基礎的作法就是使用 xxd 將二進位檔案內容轉為十六進位碼,再搭配 diff 來比較兩個檔案的差異:

# 轉為十六進位碼
xxd A.bin > A.hex
xxd B.bin > B.hex

# 以 diff 比較檔案差異
diff A.hex B.hex
16c16
< 000000f0: 3139 3130 3533 3239 3037 362e 3100 0200  19105329076.1...
---
> 000000f0: 3139 3130 3533 3239 3037 362e 3200 0200  19105329076.2...
29c29
< 000001c0: 3239 3037 362e 3100 0800 2000 4441 0800  29076.1... .DA..
---
> 000001c0: 3239 3037 362e 3200 0800 2000 4441 0800  29076.2... .DA..
41c41
< 00000280: 3536 3938 3531 2e35 3130 2000 0e00 5549  569851.510 ...UI
---
> 00000280: 3536 3938 3531 2e35 3030 2000 0e00 5549  569851.500 ...UI
61c61
< 000003c0: 1300 4953 0200 3120                      ..IS..1
---
> 000003c0: 1300 4953 0200 3220                      ..IS..2

如果不想要額外建立兩個十六進位碼的檔案,可以直接用資料流的方式將十六進位碼導入 diff,這樣的效果完全相同,除了不需要建立額外的檔案之外,語法也更簡潔:

# 以 xxd 搭配 diff 比較檔案差異
diff <(xxd A.bin) <(xxd B.bin)

而這裡的 diff 指令亦可替換為彩色的 colordiff:

# 以 xxd 搭配 colordiff 比較檔案差異
colordiff <(xxd A.bin) <(xxd B.bin)
以 <code>colordiff</code> 比較二進位檔案差異
以 colordiff 比較二進位檔案差異

或是使用 vimdiff 也可以:

# 以 xxd 搭配 vimdiff 比較檔案差異
vimdiff <(xxd A.bin) <(xxd B.bin)
以 <code>vimdiff</code> 比較二進位檔案差異
以 vimdiff 比較二進位檔案差異

亦可使用視窗化的 gvimdiff:

# 以 xxd 搭配 gvimdiff 比較檔案差異
gvimdiff <(xxd A.bin) <(xxd B.bin)
以 <code>gvimdiff</code> 比較二進位檔案差異
以 gvimdiff 比較二進位檔案差異

od 與 diff

將二進位檔案轉為十六進位碼的工具有很多,除了 xxd 之外,od 也是很常被使用的工具,使用方式跟 xxd 類似,以下是替換為 od 的範例。

# 以 od 搭配 diff 比較檔案差異
diff <(od A.bin) <(od B.bin)

# 以 od 搭配 colordiff 比較檔案差異
colordiff <(od A.bin) <(od B.bin)

# 以 od 搭配 vimdiff 比較檔案差異
vimdiff <(od A.bin) <(od B.bin)

# 以 od 搭配 gvimdiff 比較檔案差異
gvimdiff <(od A.bin) <(od B.bin)

hexdiff

hexdiff 是一個專門用於比較兩個二進位檔案內容差異的工具,在 Ubuntu Linux 可以用 apt 直接安裝:

# 安裝 hexdiff
sudo apt install hexdiff

使用 hexdiff 比較 A.bin 與 B.bin 兩個二進位檔案內容:

# 比較 A.bin 與 B.bin 二進位檔案內容
hexdiff A.bin B.bin
以 <code>hexdiff</code> 比較二進位檔案差異
以 hexdiff 比較二進位檔案差異

binwalk

binwalk 是一個韌體影像檔分析工具,亦可用於普通的二進位檔案。在 Ubuntu Linux 中可以使用 apt 安裝 binwalk:

# 安裝 binwalk
sudo apt install binwalk

使用 binwalk 比較 A.bin 與 B.bin 兩個二進位檔案內容:

# 比較 A.bin 與 B.bin 二進位檔案內容
binwalk -W file1.bin file2.bin
以 <code>binwalk</code> 比較二進位檔案差異
以 binwalk 比較二進位檔案差異

只顯示有差異的內容:

# 比較 A.bin 與 B.bin 二進位檔案內容(只顯示有差異的內容)
binwalk -Wi file1.bin file2.bin
以 <code>binwalk</code> 比較二進位檔案差異(只顯示有差異的內容)
以 binwalk 比較二進位檔案差異(只顯示有差異的內容)

參考資料:StackExchange、GeeksforGeeks

分類:Linux

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide