Linux二进制文件查看工具:xxd与hexdump详解
在日常开发工作中我们经常需要查看二进制文件的内容比如分析程序的可执行文件、调试网络数据包、检查文件格式等。直接使用文本编辑器打开二进制文件会显示乱码这时候就需要专门的二进制查看工具。本文将详细介绍 Linux 系统中两个强大的二进制查看命令xxd 和 hexdump通过实际示例展示它们的各种用法和适用场景。无论你是系统管理员、安全研究员还是嵌入式开发者掌握这些工具都能让你更深入地理解文件结构和数据存储方式。本文将涵盖从基础用法到高级技巧的完整内容帮助你在实际工作中快速定位问题。1. 二进制文件查看基础概念1.1 什么是二进制文件二进制文件是以二进制格式存储数据的文件与文本文件相对。文本文件只包含可打印字符字母、数字、标点等而二进制文件可以包含任何字节值0-255。常见的二进制文件包括可执行程序、图像、音频、视频、数据库文件等。1.2 为什么需要查看二进制文件查看二进制文件的主要目的包括调试程序分析可执行文件的代码段和数据段文件格式分析了解特定文件格式的结构数据恢复从损坏的文件中提取有用信息安全分析检测恶意代码或分析网络数据包嵌入式开发查看固件或内存映像1.3 十六进制表示法的优势二进制查看工具通常以十六进制格式显示文件内容这是因为十六进制比二进制更紧凑一个字节只需两个十六进制数字表示便于与ASCII对照每行可以同时显示十六进制和对应的ASCII字符行业标准调试器、反汇编器等工具都采用这种表示法2. xxd 命令详解2.1 xxd 命令基本介绍xxd 是一个功能强大的十六进制转储工具可以将文件内容以十六进制格式显示同时也支持将十六进制转储还原为二进制文件。它是 vim 编辑器的一部分在大多数 Linux 发行版中默认安装。2.2 基本使用方法最简单的用法是直接查看文件内容# 查看文件的十六进制内容 xxd filename # 示例查看 /bin/ls 的前几行 xxd /bin/ls | head -5输出格式通常包含三列偏移量、十六进制数据和ASCII字符。偏移量表示当前行在文件中的起始位置以字节为单位。2.3 常用选项详解2.3.1 显示控制选项# 每行显示指定字节数默认16字节 xxd -c 8 filename # 每行显示8字节 xxd -c 32 filename # 每行显示32字节 # 从指定偏移量开始显示 xxd -s 100 filename # 从第100字节开始 xxd -s 100 filename # 跳过前100字节 xxd -s -100 filename # 显示最后100字节 # 限制显示长度 xxd -l 64 filename # 只显示前64字节2.3.2 格式控制选项# 分组显示默认每组2字节 xxd -g 1 filename # 每组1字节 xxd -g 4 filename # 每组4字节 xxd -g 8 filename # 每组8字节 # 大写字母显示 xxd -u filename # 二进制格式显示很少使用 xxd -b filename2.3.3 特殊用途选项# 生成C语言数组格式 xxd -i filename # 示例生成C数组 echo hello test.txt xxd -i test.txt输出结果unsigned char test_txt[] { 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x0a }; unsigned int test_txt_len 6;2.4 反向操作从十六进制转储恢复文件xxd 的一个重要特性是能够将十六进制转储还原为原始文件# 生成十六进制转储 xxd original_file hex_dump.txt # 从转储文件恢复原始文件 xxd -r hex_dump.txt recovered_file # 验证文件一致性 diff original_file recovered_file3. hexdump 命令详解3.1 hexdump 命令概述hexdump 是另一个常用的二进制文件查看工具比 xxd 功能更丰富支持多种输出格式和自定义显示方式。它属于 util-linux 软件包在大多数 Linux 系统中默认安装。3.2 基本使用方法# 基本用法 hexdump filename # 规范格式显示最常用 hexdump -C filename-C 选项规范格式会同时显示偏移地址十六进制十六进制字节每行16字节ASCII字符表示3.3 常用选项详解3.3.1 显示控制选项# 限制显示长度 hexdump -n 100 filename # 显示前100字节 hexdump -n 100 -s 50 filename # 从50字节开始显示100字节 # 跳过指定字节数 hexdump -s 100 filename # 跳过前100字节3.3.2 输出格式选项hexdump 支持多种数字格式显示# 不同进制显示 hexdump -b filename # 八进制单字节 hexdump -c filename # 字符格式 hexdump -d filename # 十进制双字节 hexdump -o filename # 八进制双字节 hexdump -x filename # 十六进制双字节3.4 高级格式控制hexdump 最强大的功能是通过 -e 选项自定义输出格式# 自定义格式示例 hexdump -e 16/1 %02x | -e 16/1 %_p \n filename # 解释 # 16/1 %02x - 每字节以十六进制显示共16字节 # | - 分隔符 # 16/1 %_p - 每字节以字符显示不可打印字符显示为点 # \n - 换行更复杂的格式示例# 显示偏移量十六进制ASCII hexdump -e %07.7_ax 8/1 %02x 8/1 %02x | -e 16/1 %_p \n filename4. 实际应用案例4.1 分析可执行文件# 查看ELF文件头 xxd -l 64 /bin/ls hexdump -C -n 64 /bin/ls通过分析输出可以识别ELF魔数7f 45 4c 46、文件类型ELF32/ELF64等信息。4.2 检查文件类型签名很多文件格式有特定的魔数magic number# 查看PNG图片文件头 echo -e \x89PNG\r\n\x1a\n test.png xxd -l 8 test.png # 查看PDF文件头 echo %PDF-1.5 test.pdf xxd -l 8 test.pdf4.3 分析网络数据包# 保存网络数据包并分析 tcpdump -c 1 -w packet.pcap xxd packet.pcap | head -204.4 调试嵌入式系统数据# 查看固件文件 xxd firmware.bin | grep -A5 -B5 特定模式 # 分析传感器数据 hexdump -C sensor_data.bin5. VIM 与 xxd 结合使用5.1 在 VIM 中查看二进制文件VIM 配合 xxd 可以实现在编辑器中查看和编辑二进制文件# 以二进制模式打开文件 vim -b filename # 在VIM中转换为十六进制显示 # 输入命令模式执行 :%!xxd5.2 编辑二进制文件在 VIM 的十六进制模式下直接修改十六进制数值修改ASCII字符部分执行:%!xxd -r转换回二进制格式保存文件重要提醒编辑二进制文件有风险务必先备份原文件。5.3 实用技巧# 在VIM中设置快捷键 # 在 ~/.vimrc 中添加 noremap F8 :%!xxdCR noremap F9 :%!xxd -rCR6. 转义字符与二进制数据6.1 理解转义字符在编程中转义字符用于表示不可打印字符// C语言中的转义字符示例 char *newline \n; // 换行符 (0x0a) char *tab \t; // 制表符 (0x09) char *null_byte \0; // 空字符 (0x00)6.2 十六进制和八进制转义// 十六进制转义 char *str1 \x48\x65\x6c\x6c\x6f; // Hello // 八进制转义 char *str2 \110\145\154\154\157; // Hello // 混合使用 char *complex Line1\x0aLine2\x0a; // 两行文本6.3 在 shell 中创建测试数据# 使用printf创建包含特定字节的文件 printf \x48\x65\x6c\x6c\x6f\x0a hello.bin xxd hello.bin # 创建包含不可打印字符的文件 printf Test\x00Data\xff\xfe test.bin hexdump -C test.bin7. 性能比较与选择建议7.1 xxd 与 hexdump 对比特性xxdhexdump安装来源vim 包util-linux 包反向操作支持 (-r)不支持格式灵活性一般很强 (-e)输出美观度较好优秀 (-C)学习曲线简单中等7.2 使用场景建议选择 xxd 当需要将十六进制转储还原为二进制文件生成C语言数组格式的数据简单的二进制文件查看需求与VIM配合编辑二进制文件选择 hexdump 当需要高度自定义的输出格式查看大型文件时要求美观的输出需要多种数字格式显示八进制、十进制等进行复杂的二进制数据分析7.3 性能考虑对于大文件两个命令的性能差异不大但可以通过以下方式优化# 只查看文件部分内容提高速度 xxd -l 4096 large_file.bin hexdump -C -n 4096 large_file.bin # 结合grep快速搜索模式 xxd file.bin | grep 特定模式 hexdump -C file.bin | grep 模式8. 常见问题与解决方案8.1 权限问题# 如果文件不可读 sudo xxd /root/protected_file.bin # 或者改变文件权限 chmod r filename.bin8.2 文件编码问题# 检查文件是否包含BOM标记 xxd -l 3 utf8_file.txt # EF BB BF 表示UTF-8 BOM # 查看文本文件的二进制表示 echo Hello 中文 test.txt xxd test.txt8.3 大文件处理技巧# 分页查看 xxd large_file.bin | less # 只查看特定区域计算偏移量 xxd -s 0x1000 -l 0x100 large_file.bin # 保存感兴趣的部分到新文件 xxd -s 0x1000 -l 0x100 large_file.bin segment.hex xxd -r segment.hex segment.bin8.4 调试脚本示例#!/bin/bash # 二进制文件分析脚本 FILE$1 OFFSET${2:-0} LENGTH${3:-256} echo 文件信息 file $FILE echo 大小: $(stat -c%s $FILE) 字节 echo echo 十六进制查看 (偏移: $OFFSET, 长度: $LENGTH) xxd -s $OFFSET -l $LENGTH $FILE echo echo ASCII 字符串 strings -n 4 $FILE | head -209. 高级技巧与最佳实践9.1 自动化分析脚本#!/bin/bash # 高级二进制文件分析工具 analyze_binary() { local file$1 echo 基本文件信息 file $file ls -lh $file echo echo 文件头分析 xxd -l 64 $file echo echo 字符串提取 strings -n 8 $file | head -30 echo echo 熵分析 (检测加密/压缩) ent $file 2/dev/null || echo 安装ent工具进行熵分析 } # 使用示例 analyze_binary $19.2 结合其他工具使用# 结合od命令八进制转储 od -x filename # 十六进制输出 od -c filename # 字符输出 # 结合file命令识别文件类型 file unknown_file.bin # 结合strings提取可读文本 strings binary_file | grep -i keyword # 结合binutils工具集 objdump -h executable_file # 查看段信息 readelf -h executable_file # ELF文件头信息9.3 安全注意事项备份原文件编辑二进制文件前务必备份权限管理不要随意修改系统二进制文件病毒扫描分析未知文件前进行安全扫描法律合规只分析自己有权限访问的文件9.4 生产环境使用建议# 在脚本中使用xxd进行数据验证 validate_file() { local file$1 local expected_checksum$2 actual_checksum$(xxd $file | md5sum | cut -d -f1) if [ $actual_checksum $expected_checksum ]; then echo 文件验证成功 return 0 else echo 文件验证失败 return 1 fi } # 二进制数据提取函数 extract_binary_section() { local input_file$1 local output_file$2 local start_offset$3 local length$4 xxd -s $start_offset -l $length $input_file temp.hex xxd -r temp.hex $output_file rm temp.hex }通过系统学习 xxd 和 hexdump 的使用方法你可以在日常工作中更有效地分析二进制文件快速定位问题。这些工具虽然简单但在调试、逆向工程、数据恢复等场景中发挥着重要作用。

相关新闻

基于语义分割的智能弹幕避障技术实践

基于语义分割的智能弹幕避障技术实践

1. 项目背景与核心价值弹幕作为现代视频平台的标志性交互方式,在提升用户参与感的同时也带来了内容遮挡的顽疾。传统解决方案往往采用粗暴的"弹幕避让"策略,导致画面有效区域被压缩。这个毕业设计项目创新性地将计算机视觉中的语义分割技术引入…

2026/7/26 8:04:46阅读更多 →
Kaggle房价预测实战:从特征工程到PyTorch模型优化

Kaggle房价预测实战:从特征工程到PyTorch模型优化

1. 项目概述作为一名长期从事推荐系统开发的工程师,我发现在实际业务中,房价预测这类结构化数据的处理能力往往被低估。这次我想分享两个Kaggle经典项目——"预测房价"和"加州房价预测"的完整实现过程,这不仅是深度学习的…

2026/7/26 8:04:46阅读更多 →
C++实现Hangman猜词游戏:从设计到实战的完整指南

C++实现Hangman猜词游戏:从设计到实战的完整指南

1. 项目概述:为什么选择用C实现Hangman?如果你正在学习C,并且厌倦了书本上那些控制台输入输出的“Hello World”或者简单的计算器程序,那么亲手实现一个Hangman(猜词游戏)绝对是个绝佳的选择。这不仅仅是一…

2026/7/26 8:04:46阅读更多 →
Docker Swarm服务部署与镜像管理最佳实践

Docker Swarm服务部署与镜像管理最佳实践

1. Docker Swarm服务部署与镜像管理核心逻辑在容器编排领域,服务部署和镜像管理是两大支柱性功能。Docker Swarm通过声明式API将这两个核心功能紧密结合,形成了一套高效的工作流体系。当我们在Swarm集群中执行docker service create命令时,实…

2026/7/26 9:21:07阅读更多 →
C++内存管理:new与栈对象的核心差异与选择策略

C++内存管理:new与栈对象的核心差异与选择策略

1. 从一道经典面试题说起: new 与栈对象的抉择 最近在带新人,发现很多刚接触C的朋友,甚至一些工作一两年的开发者,对 new 这个关键字的使用场景和背后的代价依然模糊不清。面试时也常遇到这样的问题:“说说在C里用…

2026/7/26 9:21:07阅读更多 →
C++ istream深度解析:从状态管理到性能优化实战

C++ istream深度解析:从状态管理到性能优化实战

1. 项目概述:为什么需要深入理解istream?在C的世界里,输入输出(I/O)是程序与外界交互的基石。无论是从键盘读取用户指令,从文件加载配置数据,还是解析网络传输的字节流,都离不开I/O流…

2026/7/26 9:21:07阅读更多 →
传统技术转移机构如何转型对接元宇宙领域的数字化创新需求?

传统技术转移机构如何转型对接元宇宙领域的数字化创新需求?

核心要点: 元宇宙产业催生大量数字化创新成果,但传统技术转移机构存在信息不对称、评估标准缺失等堵点,难以实现高效成果转化。构建以AI大模型与科创知识图谱为底座的数智化平台,可打通“需求挖掘-成果评价-产学研对接”全链条。科…

2026/7/26 9:21:07阅读更多 →
基于YOLOv5的手势验证码实现与优化实践

基于YOLOv5的手势验证码实现与优化实践

1. 项目背景与核心价值 手势验证码作为人机验证的重要方式,在各类互联网服务中广泛应用。传统验证码容易被自动化工具破解,而基于人体姿态的交互式验证需要真实用户的肢体参与,显著提升了安全性。这个项目通过YOLO算法实现从数据采集到模型部…

2026/7/26 9:21:07阅读更多 →
如何快速掌握RePKG:Wallpaper Engine资源提取终极指南

如何快速掌握RePKG:Wallpaper Engine资源提取终极指南

如何快速掌握RePKG:Wallpaper Engine资源提取终极指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 在Wallpaper Engine的精彩壁纸世界中,你是否曾想要提取…

2026/7/26 9:19:07阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →