一、什么是十六进制(二进制)文件?
十六进制文件是以二进制形式存储数据的文件,其内容用十六进制数值表示。它们广泛用于程序代码、配置数据、图像、音频、视频等多种数据类型的存储场景。相比二进制,十六进制以更紧凑和直观的方式呈现数据,使开发者和分析人员能够更方便地观察和分析底层数据结构。
十六进制文件内容格式
十六进制文件的表示通常包括以下几部分:
- 偏移地址:每行数据的起始地址,通常用十六进制显示,指示该数据在文件中的位置。
- 十六进制数据:文件中的实际字节数据,以十六进制形式呈现,每字节(8 位)以两位十六进制数表示。
- ASCII 表示(可选):将十六进制数据对应的 ASCII 字符显示在右侧;不可打印字符通常用
.
表示,方便理解内容。
示例
以下是十六进制文件的一种典型表示:
00000000 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 0A |Hello World!.|
0000000d
- 偏移地址:
00000000
表示数据从文件的起始位置读取。 - 十六进制数据:
48 65 6C 6C 6F 20 57 6F 72 6C 64 21 0A
是文件的字节内容。 - ASCII 表示:右侧的
Hello World!
是数据的 ASCII 表示,其中0A
为换行符。
二、常用十六进制编辑器
1. xxd
xxd
是一款功能强大且轻量的十六进制工具,预装在大多数 Linux 系统中。它支持将文件内容转换为十六进制显示,同时支持将十六进制表示还原为二进制数据。
常用选项
xxd [filename]
:以十六进制形式查看文件内容。-r
:将十六进制数据还原为原始二进制。-p
:以纯十六进制输出(无偏移地址和 ASCII)。-s [offset]
:从指定偏移量开始读取文件。-l [length]
:限制读取的字节长度。
示例
xxd file.bin # 查看文件内容的十六进制表示
xxd -r file.hex file.bin # 将十六进制文件还原为二进制
效果等同于 CyberShef 的from hexdump
xxd -p file.bin # 仅输出文件的十六进制字节
2. hexdump
hexdump
是经典的十六进制查看工具,功能灵活,支持格式化输出和偏移量控制。
常用选项
hexdump [filename]
:默认以十六进制显示文件内容。-C
:以十六进制和 ASCII 字符同时显示文件内容。-n [length]
:限制读取的字节数。-s [offset]
:从指定偏移量读取文件。
示例
hexdump file.bin # 查看文件内容
hexdump -C file.bin # 同时显示十六进制和 ASCII
hexdump -n 32 file.bin # 仅查看文件的前 32 字节
3. hd
hd
是 hexdump
的简化版,更直观且易用,适合快速查看文件内容。
常用选项
无需额外参数,直接运行即可:
hd file.bin # 查看文件内容的十六进制表示
4. bvi
bvi
是基于 vi
的十六进制编辑器,继承了 vi
的操作方式,支持精准修改文件的二进制内容。
常用操作
- 启动编辑:
bvi file.bin
- 操作命令:
:w
保存修改。:q
退出编辑。h/j/k/l
移动光标。- 在十六进制区域直接输入数据进行修改。
5. hexedit
hexedit
是终端下的另一款易用十六进制编辑器,界面简洁直观,支持快速修改文件内容。
常用操作
- 启动编辑:
hexedit file.bin
- 操作说明:
- 使用方向键移动光标。
- 在十六进制区域输入内容以修改数据。
- 按
Ctrl+x
保存并退出。
6. ht
ht
是功能全面的十六进制编辑器,支持文件的结构化查看、反汇编和数据分析。
常用操作
- 启动编辑:
ht file.bin
- 界面导航:
- 使用方向键移动光标。
- 按
F3
保存修改。 - 按
Esc
进入主菜单,切换视图(如 ASCII、二进制)。
工具对比与选择
工具名称 | 功能特点 | 适用场景 |
---|---|---|
xxd | 轻量级,支持十六进制查看和还原 | 快速查看和转换文件内容 |
hexdump | 输出灵活,支持偏移和长度控制 | 查看文件内容 |
hd | 简单直观 | 快速查看 |
bvi | 基于 vi 的强大编辑功能 | 精确修改二进制文件 |
hexedit | 界面简洁,操作直观 | 快速编辑文件内容 |
ht | 高级功能,支持反汇编 | 深度分析和文件编辑 |
总结
Linux 提供了多种命令行十六进制工具,可以满足不同场景的需求。对于仅需快速查看文件内容的用户,xxd
和 hexdump
是理想选择;而对于需要修改或深入分析的用户,bvi
、hexedit
和 ht
提供了更强大的功能。根据具体任务选择合适工具,有助于更高效地处理二进制文件。