当需要查看或修改二进制文件的内容,但不确定如何进行时,xxd命令就显得非常有用。xxd是大多数Linux系统上可用的实用工具,它可以生成文件的十六进制表示,甚至可以将十六进制转储恢复为原始的二进制格式。简而言之,xxd允许逐字节地查看任何文件的内容。这对于开发者、系统管理员以及任何从事低级数据分析或故障排除的人来说都非常有益。无论是在逆向工程软件、研究恶意软件,还是只是好奇文件包含什么内容,xxd都提供了一种简单的方法来调查和修改二进制数据。
如果是Linux系统的新手,请查看这篇文章:
本文将介绍xxd命令在Linux中的基础知识,包括如何在Linux系统上安装和设置xxd,以及如何使用xxd命令创建和恢复十六进制转储。
在使用xxd之前,请确保它已经安装在系统上。大多数Linux发行版默认包含xxd作为Vim包的一部分。
# 检查xxd是否已安装
xxd -v
如果尚未安装:
# 在Debian/Ubuntu上安装xxd
sudo apt-get install vim-common
# 在CentOS/RHEL上安装xxd
sudo yum install vim-common
xxd命令用于创建十六进制转储或执行反向操作(即将十六进制转储转换回原始二进制)。以下是一些最常用的选项和标志:
-r
/ -revert
:将十六进制转储恢复为二进制。这可以用来将十六进制转储转换回其原始的二进制形式。-p
/ -ps
/ -postscript
:以纯十六进制转储样式输出,即连续的十六进制数字,没有空格,适合二进制PostScript文件。-i
/ -include
:以C语言包含文件样式输出。这将生成一个C语言数组声明,包含十六进制转储数据。-c
/ -cols
:每行输出指定数量的字节。默认情况下,xxd每行输出16个字节。-g
/ -groupsize
:将十六进制转储的输出按指定字节数分组。例如,xxd -g 1
将每个字节单独分组。-s
/ -seek
:从输入文件的开头开始指定字节偏移。这允许从特定字节开始的部分转储。-l
/ -len
:在输入文件的指定字节长度后停止。这限制了十六进制转储的长度。-a
/ -autoskip
:压缩连续的零字节行。这通过跳过重复的零行来减小十六进制转储的大小。-e
:小端转储。这将输出格式化为小端字节顺序。-u
:使用大写十六进制字母。这将以大写输出十六进制数字A-F,而不是小写。-o
/ -offset
:在显示的文件位置添加偏移量。这个选项在组合多个十六进制转储或可视化特定起始偏移量时很有用。Linux中的xxd命令是一个多功能工具,主要用于创建文件的十六进制转储并将十六进制转储转换回二进制文件。它还可以用来以各种方式操作二进制数据。以下是其使用的全面概述:
十六进制转储以十六进制格式显示文件的二进制数据,这使得人类更容易阅读和理解二进制数据。一个典型的十六进制转储显示:
注意:可以使用dd命令创建一个填充零的二进制文件:
dd if=/dev/zero of=myfile.bin bs=1024 count=1
xxd myfile.bin
此命令生成myfile.bin的十六进制转储。
xxd -r hexfile.txt myfile.bin
此命令从hexfile.txt读取十六进制转储,并将二进制数据写入myfile.bin。
xxd -c 8 myfile.bin
xxd -s 0x100 myfile.bin
此命令从偏移量0x100(十进制为256)开始十六进制转储。
xxd -l 64 myfile.bin
xxd -b myfile.bin
xxd -i myfile.bin > myfile.h
xxd命令是任何需要在Linux系统上检查或修改二进制文件内容的人的强大且灵活的工具。它能够创建十六进制表示并将其恢复为原始二进制形式,这对于开发者、系统管理员以及从事低级数据分析或逆向工程的人来说是必不可少的。
xxd提供了定制输出格式的选项,例如设置每行的字节数、从特定偏移量开始以及生成C样式包含文件,允许对文件数据的表示和操作进行详细控制。无论是诊断软件问题、研究文件结构还是进行安全分析,掌握xxd可以显著提高管理二进制数据的效率和技能。