Linux 命令行十六进制编辑器:高效操作二进制文件

一、什么是十六进制(二进制)文件?

十六进制文件是以二进制形式存储数据的文件,其内容用十六进制数值表示。它们广泛用于程序代码、配置数据、图像、音频、视频等多种数据类型的存储场景。相比二进制,十六进制以更紧凑和直观的方式呈现数据,使开发者和分析人员能够更方便地观察和分析底层数据结构。

十六进制文件内容格式

十六进制文件的表示通常包括以下几部分:

  1. 偏移地址:每行数据的起始地址,通常用十六进制显示,指示该数据在文件中的位置。
  2. 十六进制数据:文件中的实际字节数据,以十六进制形式呈现,每字节(8 位)以两位十六进制数表示。
  3. 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]:限制读取的字节长度。

示例

bash 复制代码
xxd file.bin              # 查看文件内容的十六进制表示  
xxd -r file.hex file.bin  # 将十六进制文件还原为二进制  

效果等同于 CyberShef 的from hexdump

bash 复制代码
xxd -p file.bin          # 仅输出文件的十六进制字节  

2. hexdump

hexdump 是经典的十六进制查看工具,功能灵活,支持格式化输出和偏移量控制。

常用选项
  • hexdump [filename]:默认以十六进制显示文件内容。
  • -C:以十六进制和 ASCII 字符同时显示文件内容。
  • -n [length]:限制读取的字节数。
  • -s [offset]:从指定偏移量读取文件。

示例

bash 复制代码
hexdump file.bin           # 查看文件内容  
hexdump -C file.bin        # 同时显示十六进制和 ASCII  
hexdump -n 32 file.bin     # 仅查看文件的前 32 字节  

3. hd

hdhexdump 的简化版,更直观且易用,适合快速查看文件内容。

常用选项

无需额外参数,直接运行即可:

bash 复制代码
hd file.bin                # 查看文件内容的十六进制表示  

4. bvi

bvi 是基于 vi 的十六进制编辑器,继承了 vi 的操作方式,支持精准修改文件的二进制内容。

常用操作
  • 启动编辑:

    bash 复制代码
    bvi file.bin
  • 操作命令:

    • :w 保存修改。
    • :q 退出编辑。
    • h/j/k/l 移动光标。
    • 在十六进制区域直接输入数据进行修改。

5. hexedit

hexedit 是终端下的另一款易用十六进制编辑器,界面简洁直观,支持快速修改文件内容。

常用操作
  • 启动编辑:

    bash 复制代码
    hexedit file.bin
  • 操作说明:

    • 使用方向键移动光标。
    • 在十六进制区域输入内容以修改数据。
    • Ctrl+x 保存并退出。

6. ht

ht 是功能全面的十六进制编辑器,支持文件的结构化查看、反汇编和数据分析。

常用操作
  • 启动编辑:

    bash 复制代码
    ht file.bin
  • 界面导航:

    • 使用方向键移动光标。
    • F3 保存修改。
    • Esc 进入主菜单,切换视图(如 ASCII、二进制)。

工具对比与选择

工具名称 功能特点 适用场景
xxd 轻量级,支持十六进制查看和还原 快速查看和转换文件内容
hexdump 输出灵活,支持偏移和长度控制 查看文件内容
hd 简单直观 快速查看
bvi 基于 vi 的强大编辑功能 精确修改二进制文件
hexedit 界面简洁,操作直观 快速编辑文件内容
ht 高级功能,支持反汇编 深度分析和文件编辑

总结

Linux 提供了多种命令行十六进制工具,可以满足不同场景的需求。对于仅需快速查看文件内容的用户,xxdhexdump 是理想选择;而对于需要修改或深入分析的用户,bvihexeditht 提供了更强大的功能。根据具体任务选择合适工具,有助于更高效地处理二进制文件。

相关推荐
chennalC#c.h.JA Ptho24 分钟前
lubuntu 系统详解
linux·经验分享·笔记·系统架构·系统安全
冼紫菜25 分钟前
解决 CentOS 7 镜像源无法访问的问题
linux·运维·服务器·centos
几道之旅27 分钟前
分别在windows和linux上使用curl,有啥区别?
linux·运维·windows
季柳东28 分钟前
在虚拟机Ubuntu18.04中安装NS2教程及应用
linux·运维·ubuntu
冼紫菜30 分钟前
如何在 CentOS 7 虚拟机上配置静态 IP 地址并保持重启后 SSH 连接
linux·开发语言·centos·ssh
christine-rr1 小时前
【25软考网工】第六章(4)VPN虚拟专用网 L2TP、PPTP、PPP认证方式;IPSec、GRE
运维·网络·网络协议·网络工程师·ip·软考·考试
oioihoii1 小时前
C++23 views::slide (P2442R1) 深入解析
linux·算法·c++23
乐言3611 小时前
如何用Jmeter实现自动化测试?
运维·jmeter·自动化
hnlucky1 小时前
《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》
运维·数据库·nginx·云原生·容器·kubernetes·mariadb
Jerry&Louis2 小时前
【Ubuntu】neovim & Lazyvim安装与卸载
linux·ubuntu