hexdump
是 Linux 中一个强大的二进制文件查看工具,可以用于查看文件的十六进制、ASCII 或其他格式的转储内容。以下是常见用法及示例:
1. 查看文件头部(前 N 个字节)
语法
hexdump -n <字节数> -C <文件名>
示例:查看前 32 个字节
hexdump -n 32 -C file.bin
-n 32
:仅读取前 32 个字节。-C
:以经典格式显示(左侧十六进制,右侧 ASCII)。
输出示例
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 a0 10 40 00 00 00 00 00 |..>.......@.....|
2. 查看文件尾部(最后 N 个字节)
需要结合 tail
截取文件尾部内容,再通过管道传递给 hexdump
:
语法
tail -c <字节数> <文件名> | hexdump -C
示例:查看最后 64 个字节
tail -c 64 file.bin | hexdump -C
tail -c 64
:截取文件的最后 64 个字节。- 通过管道传递给
hexdump
解析。
3. 跳过前 M 字节后查看 N 字节
语法
hexdump -s <跳过字节数> -n <读取字节数> -C <文件名>
示例:跳过前 1024 字节,读取后续 64 字节
hexdump -s 1024 -n 64 -C file.bin
4. 自定义显示格式
语法
使用 -e
参数指定格式字符串:
hexdump -e '<格式字符串>' <文件名>
示例 1:每行显示 16 字节,十六进制 + ASCII
hexdump -e '16/1 "%02x " " | "' -e '16/1 "%_p" "\n"' file.bin
16/1 "%02x "
:每字节显示为 2 位十六进制,共 16 字节。" | "
:分隔符。16/1 "%_p"
:显示可打印 ASCII 字符,不可打印字符显示为.
。
示例 2:仅显示十六进制字节值
hexdump -v -e '/1 "%02x "' file.bin
-v
:禁用重复行压缩。/1 "%02x "
:每字节显示为 2 位十六进制,以空格分隔。
5. 显示文件全部内容
语法
hexdump -C <文件名>
-C
:经典模式(十六进制 + ASCII)。
输出示例
00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 0a |Hello World!.|
0000000d
6. 高级用法
直接查看内存映射设备
hexdump -C /dev/mem -s 0x1000 -n 16
- 查看内存地址
0x1000
处的 16 字节。
显示十进制字节值
hexdump -e '/1 "%3d "' -e '/1 "%_p\n"' file.bin
- 将字节以十进制数值显示,并附加 ASCII 字符。
总结
- 头部字节:
hexdump -n <N> -C <文件>
- 尾部字节:
tail -c <N> <文件> | hexdump -C
- 跳过字节:
hexdump -s <M> -n <N> -C <文件>
- 格式控制:灵活使用
-e
参数自定义输出。
根据需求选择参数组合,可高效分析二进制文件的结构!