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 的使用方法你可以在日常工作中更有效地分析二进制文件快速定位问题。这些工具虽然简单但在调试、逆向工程、数据恢复等场景中发挥着重要作用。

相关新闻

Billu_bOx2.7靶机渗透实战:从信息收集到Root权限提升完整解析

Billu_bOx2.7靶机渗透实战:从信息收集到Root权限提升完整解析

1. 项目概述:一次从零到Root的实战演练 最近在安全圈里,Billu_bOx2.7这个靶机又火了起来。它被很多朋友称为“Web渗透的经典综合试卷”,原因无他,这个靶机几乎囊括了从信息收集到权限提升的完整攻击链,而且每个环节都设…

2026/7/26 8:07:03 阅读更多 →
AI自动生成系统架构图的技术实践与优化

AI自动生成系统架构图的技术实践与优化

1. 项目背景与核心价值 去年在为一个金融客户做系统重构时,我连续熬了三个通宵画架构图。那些不断返工的UML图表和永远对不齐的Visio箭头,让我开始思考:为什么不能让AI理解我的设计意图,自动生成专业级架构图?经过半年…

2026/7/26 8:07:02 阅读更多 →
Selenium八大定位器详解:从原理到实战的自动化测试基石

Selenium八大定位器详解:从原理到实战的自动化测试基石

1. 项目概述:为什么定位器是Selenium自动化的灵魂 如果你刚开始接触Selenium自动化,可能会觉得写脚本就是模拟点击、输入、提交。但很快你就会发现,脚本运行失败,十有八九是因为它“找不到”页面上的元素了。按钮明明在那里&#…

2026/7/26 8:06:02 阅读更多 →

最新新闻

DPO技术如何优化AIGC图像生成审美表现

DPO技术如何优化AIGC图像生成审美表现

1. 项目概述:DPO技术如何重塑AIGC审美维度最近在调试Stable Diffusion模型时发现一个有趣现象:同样的提示词,经过DPO(Direct Preference Optimization)调优后的模型产出图像,在构图和色彩协调性上明显优于传…

2026/7/26 8:27:09 阅读更多 →
大语言模型集成前必问的6个关键问题:从业务场景到技术落地的系统评估

大语言模型集成前必问的6个关键问题:从业务场景到技术落地的系统评估

在技术团队考虑引入大语言模型(LLM)时,很多决策者容易被其强大的生成能力吸引,却忽略了前期评估的重要性。盲目集成LLM可能导致项目偏离实际需求、资源浪费甚至技术债堆积。本文基于多个落地案例,梳理出六个关键评估问…

2026/7/26 8:27:09 阅读更多 →
用“舞台换景”讲清 Docker 的 Restart 与 Recreate

用“舞台换景”讲清 Docker 的 Restart 与 Recreate

最近更新一个 Docker 服务时,我遇到了一个问题。 镜像拉取成功,容器也重新启动了,整个过程没有任何报错: docker compose pull app docker compose restart app可打开页面一看,显示的仍然是 V1。 第一反应通常是&#…

2026/7/26 8:27:09 阅读更多 →
本地大模型不是“买卡就跑”!20年SRE亲授:如何用cgroups+Prometheus+自研成本看板,实现每token推理成本实时下钻监控

本地大模型不是“买卡就跑”!20年SRE亲授:如何用cgroups+Prometheus+自研成本看板,实现每token推理成本实时下钻监控

更多请点击: https://kaifayun.com 第一章:本地大模型成本分析的底层逻辑与认知误区 本地部署大模型的成本远不止显卡采购价——它由硬件摊销、电力消耗、散热基建、运维人力、模型量化适配损耗及隐性机会成本共同构成。许多团队误将“单卡推理吞吐量”…

2026/7/26 8:26:09 阅读更多 →
数组作为函数参数为什么要多传一个长度_Day10

数组作为函数参数为什么要多传一个长度_Day10

数组作为函数参数为什么要多传一个长度?——Day10 学习记录,从数组传参到日历打印 学完函数之后,我开始用函数封装各种功能。但很快就遇到了问题——把数组传给函数后,用 sizeof 计算长度,结果根本不是数组的大小。 后…

2026/7/26 8:26:09 阅读更多 →
windows网络适配器驱动开发-开发 WiFiCx 客户端驱动程序(八)

windows网络适配器驱动开发-开发 WiFiCx 客户端驱动程序(八)

电源策略更改对于电源管理,客户端驱动程序使用 NETPOWERSETTINGS 对象 ,例如其他类型的 NetAdapterCx 客户端驱动程序。为了在系统处于工作状态(S0)状态时支持设备闲置,驱动程序调用 WdfDeviceAssignS0IdleSettings 并…

2026/7/26 8:26:09 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻