• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
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

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

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

關注本站

  • 電子郵件
  • Facebook

公益

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

Copyright © 2021 · Office Guide