hexdump—Linux系统的二进制文件查看工具
hexdump
无参:
相当于 hexdump -x
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0002 003e 0001 0000 0410 0040 0000 0000
-b 每一字节以八进制显示,一行共16个字节,一行开始以十六进制显示偏移值;
0000000 177 105 114 106 002 001 001 000 000 000 000 000 000 000 000 000
-c 每一字节以ASCII字符显示,其余同上;
0000000 177 E L F 002 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0
-C 每一字节以16进制显示,一行共16个字节,尾部附加16个相应的ASCII字符;
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
-n 只解释指定长度字节
单位:默认十进制,0x或0X开头则为16进制,0开头则为8进制
默认为字节,b则为512字节,k则为1024字节,m则为1048576字节
-d 双字节十进制显示
-o 双字节八进制显示
-v 去除中间显示的“*”字符
-x 双字节十六进制显示
当以上的参数不满足要求时,那么需要加入格式化参数:
hexdump –e ‘”%06_ax”16/1”%02X”’
解释:
-e 格式化参数
%06_ax 0:用前导零而不是空格填充显示字段宽度
6:显示字段宽度最小值为6
_ax:偏移量以16进制表示,输入文件的偏移量累积计算
16/1 格式化字符串运用16次,每次格式化字符串只运用到一个字节
%02X 0:用前导零而不是空格填充字段宽度
2:显示字段宽度最小值为2
X:默认操作字节数是4,但是也可以指定为1、2、4,并以十六进制显示
\n 换行
例:
"%06.6_ao " 12/1 "%3_u "
"\t\t" "%_p "
"\n"
输入文件偏移量累积计算;以八进制显示文件偏移量,最小显示宽度6,最大显示宽度6
以%3_u字符串格式处理12次,每次处理1个字节;接着显示\t\t,以%_p字符串格式处理一次,每次处理1个字节;接着换行。
echo hello | hexdump -v -e '/1 "%02X "' ; echo
-v不显实*
-e 格式化字符串
以%02X格式串处理1次,一次处理1个字节
echo hello | hexdump -e '8/1 "%02X ""\t"" "' -e '8/1 "%c""\n"'
以%02X格式串处理8次,一次处理1个字节,添加\t,接着把处理过的文件再处按%c格式处理8次,一次处理1个字节,添加换行;
写了个脚本,方便查阅ASCII字符表
#! /bin/sh
ASCII="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
echo $ASCII | hexdump -v -e '"%02_ad "'\
-e '1/1 "%1c "'\
-e '1/1 "hex=%02X "'\
-e '1/1 "dec=%3d "'\
-e '1/1 "oct=%03o\n"'