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"'

posted @ 2013-11-25 11:28  only_eVonne  阅读(1768)  评论(0编辑  收藏  举报