一、[强烈推荐]:使用vim查看、编辑二进制文件

vim打开二进制文件,在【底行模式】下输入如下命令查看二进制文件内容。

step1:使用vim打开二进制文件(vim -b xxx)

vim -b 文件

step2:将内容转化为16进制

想要修改二进制文件内容,需要将文件修改为16进制以后再进行修改。命令如下:

:%!xxd

备注:也可以指定每行显示的字节数,默认是每行显示16个字节。例如:每行显示12个字节【:%!xxd -c 12】

step3:将当前文本转化回文本格式

:%!xxd -r

注意:修改完文件内容以后,一定要将文件内容转回文本格式,否则二进制文件可能无法使用。不过就算忘记转化回文本格式就保存退出了,再进来重新转化一次也可以。

step4:保存退出

:wq



二、hexdump命令

hexdump [选项] [文件]
==============================================================
其中,选项可以如下:
选项释义:
常用:
-C        输出规范的十六进制和ASCII码。
-n length 只格式化输出length个字节。
-s addr   从偏移量开始输出。

不常用:
-b 单字节八进制显示。
-c 单字节字符显示。
-d 双字节十进制显示。
-o 双字节八进制显示。
-x 双字节十六进制显示。
-e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:'a/b "format1" "format2"'

示例1:组合选项效果展示【-C -n 16 -s 0x10】

-n 16   :只显示16个字节
-s 0x10 :从0x10地址开始打印

$ hexdump -C -n 16 -s 0x10 od_cmd_test.txt
00000010  42 43 44 45 0a 31 32 33  34 35 36 37 38 39 30 61  |BCDE.1234567890a|
00000020

$ hexdump -C od_cmd_test.txt
00000000  31 32 33 34 35 36 37 38  39 30 61 62 63 64 65 41  |1234567890abcdeA|
00000010  42 43 44 45 0a 31 32 33  34 35 36 37 38 39 30 61  |BCDE.1234567890a|
00000020  62 63 64 65 41 42 43 44  45 0a 31 32 33 34 35 36  |bcdeABCDE.123456|
00000030  37 38 39 30 61 62 63 64  65 41 42 43 44 45 0a     |7890abcdeABCDE.|
0000003f

示例2:单个选项效果展示

$ hexdump -C od_cmd_test.txt
00000000  31 32 33 34 35 36 37 38  39 30 61 62 63 64 65 41  |1234567890abcdeA|
00000010  42 43 44 45 0a 31 32 33  34 35 36 37 38 39 30 61  |BCDE.1234567890a|
00000020  62 63 64 65 41 42 43 44  45 0a 31 32 33 34 35 36  |bcdeABCDE.123456|
00000030  37 38 39 30 61 62 63 64  65 41 42 43 44 45 0a     |7890abcdeABCDE.|
0000003f

$ hexdump -c od_cmd_test.txt
0000000   1   2   3   4   5   6   7   8   9   0   a   b   c   d   e   A
0000010   B   C   D   E  \n   1   2   3   4   5   6   7   8   9   0   a
0000020   b   c   d   e   A   B   C   D   E  \n   1   2   3   4   5   6
0000030   7   8   9   0   a   b   c   d   e   A   B   C   D   E  \n
000003f

$ hexdump -x od_cmd_test.txt
0000000    3231    3433    3635    3837    3039    6261    6463    4165
0000010    4342    4544    310a    3332    3534    3736    3938    6130
0000020    6362    6564    4241    4443    0a45    3231    3433    3635
0000030    3837    3039    6261    6463    4165    4342    4544    000a
000003f

$ hexdump -s 0x8 od_cmd_test.txt
0000008 3039 6261 6463 4165 4342 4544 310a 3332
0000018 3534 3736 3938 6130 6362 6564 4241 4443
0000028 0a45 3231 3433 3635 3837 3039 6261 6463
0000038 4165 4342 4544 000a
000003f




3、od命令

Linux命令行下可以使用od命令查看文件内容。

od命令可以使用上述hexdump命令替代,而且hexdump命令更为强大、灵活。

命令格式如下:

od  [选项]  [文件]
==============================================================
其中,选项可以如下:(备注:【选项可以组合】,为了便于观看将选项竖着写)
选项释义:               释义:
-abcdfhilovx
-t <输出格式acodx>       #显示格式,如:-tcx1
-A <每行偏移量显示进制>    #od显示第一列数字含义为:每行字符个数,默认16进制显示,每行16个字符,可以改为d:10进制递增
-w <每列字符数>           #设置每行显示的数字个数,会影响第一列(偏移量)的值
-j <字符数目>            #跳过指定字节数,等价于--skip-bytes=字节数
-N <字符数目>            #一直显示到设置的字符数目为止
--endian={big|little}   #指定大小端方式

==============================================================
-t 附加参数含义解释:(如:-tcx2等)
a          #默认字符输出,忽略高位
c          #使用ascii字符输出
o[size]    #八进制,每个数字表示size个字节
d[size]    #十进制,每个数字表示size个字节
x[size]    #十六进制,每个数字表示size个字节,如x1,每个数字显示为1个字节

【参数组合】

$ od -Ad -tcx1 -w8 -j16 od_cmd_test.txt
0000016   B   C   D   E  \n   1   2   3
         42  43  44  45  0a  31  32  33
0000024   4   5   6   7   8   9   0   a
         34  35  36  37  38  39  30  61
0000032   b   c   d   e   A   B   C   D
         62  63  64  65  41  42  43  44
0000040   E  \n   1   2   3   4   5   6
         45  0a  31  32  33  34  35  36
0000048   7   8   9   0   a   b   c   d
         37  38  39  30  61  62  63  64
0000056   e   A   B   C   D   E  \n
         65  41  42  43  44  45  0a
0000063

【-A参数】

注意观察第一列数据递增方式,(默认十六进制递增)

每行偏移个数(偏移量):十六进制递增:
$ od -A x od_cmd_test.txt
000000 031061 032063 033065 034067 030071 061141 062143 040545
000010 041502 042504 030412 031462 032464 033466 034470 060460
000020 061542 062544 041101 042103 005105 031061 032063 033065
000030 034067 030071 061141 062143 040545 041502 042504 000012
00003f

每行偏移个数(偏移量):十进制递增:
$ od -A d od_cmd_test.txt
0000000 031061 032063 033065 034067 030071 061141 062143 040545
0000016 041502 042504 030412 031462 032464 033466 034470 060460
0000032 061542 062544 041101 042103 005105 031061 032063 033065
0000048 034067 030071 061141 062143 040545 041502 042504 000012
0000063

【-t参数】

$ od -tcx1 od_cmd_test.txt
0000000   1   2   3   4   5   6   7   8   9   0   a   b   c   d   e   A
         31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  41
0000020   B   C   D   E  \n
         42  43  44  45  0a
0000025

【-j参数】

$ od -j 16 od_cmd_test.txt
0000020 041502 042504 030412 031462 032464 033466 034470 060460
0000040 061542 062544 041101 042103 005105 031061 032063 033065
0000060 034067 030071 061141 062143 040545 041502 042504 000012
0000077
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐