hexdump 是 Linux 系統分析二進制文件結構的瑞士軍刀。它能以十六進制、八進制、十進制、ASCII 碼等多種視圖呈現文件字節內容,支援自定義格式化輸出,是逆向工程、協議分析、文件格式驗證的核心工具。本文系統講解核心參數、輸出模式解讀、實戰分析技巧,助您洞悉二進制黑盒。

| 參數 | 顯示模式 | 行寬 | 特點 | 典型場景 |
|---|---|---|---|---|
-b | 八進制位元組 | 16 字節/行 | 偏移量十六進制,純數值 | 位級別標誌位檢查 |
-c | ASCII 字符 | 16 字節/行 | 可打印字符直觀,控制字符轉義 | 文本片段提取、字符串搜尋 |
-C | 經典十六進制 + ASCII | 16 字節/行 | 左側十六進制,右側 ASCII 對照 (|...|) | 通用首選,文件頭識別、結構對齊 |
-d | 十進制雙字節 (2 字節) | 8 個單位/行 | 無符號十進制,小端序 | 數值型數據快速讀取 |
-o | 八進制雙字節 | 8 個單位/行 | 無符號八進制 | 舊系統文件格式分析 |
-x | 十六進制雙字節 | 8 個單位/行 | 無符號十六進制,小端序 | 16 位字長數據結構 |
-n N | 限制解析長度 | - | 單位默認字節,支援 0x/0 前綴指定進制 | 大文件定位頭部/特定偏移 |
-v | 顯示全部 (不折疊重複行) | - | 默認折疊連續相同行為 * | 完整導出、差異對比 |
-e '格式字符串' | 自定義格式化 | - | 支援多格式串疊加,類 printf 語法 | 專用報表、結構化導出 |
$ hexdump -C -n 32 /bin/ls
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF...........|
00000010 02 00 3e 00 01 00 00 00 c0 13 40 00 00 00 00 00 |..>.......@....|
三欄結構:
| 包裹,可打印字符顯示,不可打印顯示 . (|.ELF...........|)文件頭識別:7f 45 4c 46 = ELF 魔數,確認為 Linux 可執行文件。
格式字符串語法:'格式單元 解釋單元',支援 %_p (指針地址)、%_u (無符號十進制) 等擴展。
hexdump -e '4/4 "%08x " "\n"' data.bin
# 輸出:每行 4 個 4 字節十六進制數,空格分隔,換行
# 結構:struct { uint32_t id; char name[16]; float score; }
hexdump -e '"ID: " 1/4 "%u" " Name: " 16/1 "%_p" " Score: " 1/4 "%f" "\n"' record.bin
hexdump -C -n 16 unknown.bin | head -5
# 常見魔數:
# 7f ELF → ELF 可執行文件
# 89 50 4E 47 → PNG 圖片
# FF D8 FF → JPEG 圖片
# 4D 5A → Windows PE (exe/dll)
# 25 50 44 46 → PDF 文檔
# 50 4B 03 04 → ZIP 壓縮包 (含 JAR/APK/DOCX)
# hexdump 定位偏移
hexdump -C firmware.bin | grep -A2 -B2 "password"
# 精確提取
hexdump -C -s 0x1A2B0 -n 64 firmware.bin
# 生成標準化十六進制流
hexdump -v -e '1/1 "%02x " "\n"' file1 > f1.hex
hexdump -v -e '1/1 "%02x " "\n"' file2 > f2.hex
diff -u f1.hex f2.hex
hexdump -C -n 24 capture.pcap
# 24 字節全局頭:魔數(4) 版本(2+2) 時區(4) 精度(4) 捕獲長度(4) 鏈路類型(4)
# a1 b2 c3 d4 → 微端序 pcap (標準)
# d4 c3 b2 a1 → 大端序 pcap
xxd:vim 內建,支援反向轉換 (xxd -r),編輯二進制首選od:POSIX 標準,支援更多數據類型 (浮點、雙精度)strings:專門提取可打印字符串 (默認 ≥4 字符)binwalk:固件分析神器,自動識別/提取嵌入文件系統radare2 / ghidra:專業逆向工程框架,內建十六進制視圖hexdump 以 -C 為日常主力,-e 為深度分析利器。掌握「魔數識別 → 偏移定位 → 格式化解析 → 結構還原」四步法,配合 diff/strings/xxd 工具鏈,即可破解多數二進制文件結構謎題。記住:二進制不透明,唯有字節誠實。