hexdump 是什么
hexdump 是 util-linux 提供的字节转储工具,把文件内容按可选格式打印成十六进制与文本对照。-C 输出规范的十六进制加 ASCII 视图,-n 限制字节数、-s 指定起始偏移。看文件头魔数、看磁盘镜像分区表、核对二进制协议报文头时最常用,是排查「文件到底是什么」的底层手段。
基本信息
| 所属 | util-linux(CentOS/Ubuntu 默认安装) |
|---|---|
| 语法 | hexdump [选项] [文件] |
| 关键选项 | -C 规范视图、-n 字节数、-s 起始偏移、-v 不折叠重复行 |
| 默认格式 | 两字节一组,按本机字节序显示,直接读容易误判 |
典型使用场景
- 判断文件真实类型:看开头的魔数字节
- 排查二进制协议报文头与自定义二进制字段
- 确认文本文件是否含不可见字符或 UTF-8 BOM
- 对比两个二进制文件指定区段是否一致
- 从大文件指定偏移处抽一段精确查看
- 校验磁盘分区起始扇区是否符合 4K 对齐
常用示例
常用示例
hexdump -C -n 64 disk.img # 规范视图看前 64 字节
hexdump -C file.bin | head -20 # 从头看,配合 head 截断输出
hexdump -C file.bin | tail -5 # 看文件尾部字节
hexdump -s 1024 -n 32 -C file.bin # 从 1024 偏移看 32 字节
hexdump -C -v big.bin | head # -v 不折叠重复行
hexdump -e '1/1 "%02x "' f.bin | head # 自定义格式,逐字节十六进制
xxd file.bin | head # 另一常用工具,偏移与 ASCII 更紧凑
file disk.img && ls -l disk.img # 先确认类型与大小再决定怎么看-C 视图逐段读法
| 输出片段 | 含义 | 正常/异常 |
|---|---|---|
| 首列偏移 | 十六进制字节偏移量 | 应与 -s 起始值对齐 |
| 中部十六进制 | 数据字节,每 8 字节空格分组 | 最后一行不足 16 字节会缺位 |
| 右侧字符区 | 同样字节的 ASCII 显示 | 不可打印字符显示为点 |
| 下方一行偏移 | 表示重复行被折叠 | 需要完整输出时加 -v |
hexdump 的默认格式按两字节一组并依本机字节序显示,直接读很容易把字节顺序看反,因此看二进制内容时一律加 -C,得到规范的十六进制加文本视图。
对大文件直接跑转储会输出几万行,终端被刷爆甚至会话卡住。务必配合 -n、head、tail,或先重定向到文件再慢慢查看。
几个常见魔数:ELF 文件以 7f 45 4c 46 开头,PNG 以 89 50 4e 47 开头,ZIP 以 50 4b 03 04 开头。看文件头几个字节,就能快速判断真实类型,比只看扩展名可靠。