hexdump以16进制查看文件

hexdump是一个用于以可读格式显示二进制数据的工具,常用于查看文件的十六进制内容和ASCII表示。规范输出包括十六进制偏移、数据和ASCII字符列,帮助程序员解读文件内容。文章还介绍了如何使用hexdump的选项,如-C用于规范格式,-s指定偏移量,-n限制显示字节数。
摘要由CSDN通过智能技术生成

1.简介

在计算机科学中,一个 0 或 1 存储的数据称为一个位(bit,代表 binary digit,即二进制数);连续 8 位称为一个字节。

hexdump 可以以可读的格式显示任何类型的二进制数据。

2.规范输出

某种特定格式的二进制文件输出格式称为规范输出,如:

[nosee@instance-4 ~]$ hexdump -C day1
00000000  09 09 4a 61 6e 75 61 72  79 09 32 30 32 32 09 09  |..January.2022..|
00000010  0a 53 75 09 4d 6f 09 54  75 09 57 65 09 54 68 09  |.Su.Mo.Tu.We.Th.|
00000020  46 72 09 53 61 0a 09 09  09 09 09 09 20 31 0a 20  |Fr.Sa....... 1. |
00000030  32 09 20 33 09 20 34 09  20 35 09 20 36 09 20 37  |2. 3. 4. 5. 6. 7|
00000040  09 20 38 0a 20 39 09 31  30 09 31 31 09 31 32 09  |. 8. 9.10.11.12.|
00000050  31 33 09 31 34 09 31 35  0a 31 36 09 31 37 09 31  |13.14.15.16.17.1|
00000060  38 09 31 39 09 32 30 09  32 31 09 32 32 0a 32 33  |8.19.20.21.22.23|
00000070  09 32 34 09 32 35 09 32  36 09 32 37 09 32 38 09  |.24.25.26.27.28.|
00000080  32 39 0a 33 30 09 33 31  09 09 09 09 09 09 0a 68  |29.30.31.......h|
00000090  61 68 61 0a 68 61 68 61  0a e6 96 b0 e5 95 8a ef  |aha.haha........|
000000a0  bc 81 ef bc 81 ef bc 81  ef bc 81 ef bc 81 0a 0a  |................|
000000b0  68 61 68 68 61 0a                                 |hahha.|
000000b6
[nosee@instance-4 ~]$ 

其中,左边是十六进制的偏移,中间是十六进制的数据,右边是数据的ASCII字符。

对于二进制文件而言,文件中没有行,因此行号没有意义。作为替代,我们使用偏移(offset)标记每个位置。偏移就是一个数字,告诉离文件开头有多少字节。偏移不属于数据的内容,是 hexdump 程序加上去的,为了方便程序员阅读。

其中,第一个字节的偏移是 0;第二个字节偏移是 1;以此类推。(记住,1字节=8位=2个十六进制数字)

在大多数二进制文件中,有些字节包含的是实际 ASCII 字符。通过查看最右边的一栏可以方便地识别这些字节。根据约定,没有对应可显示 ASCII 字符的字节一律通过用一个.(点号)字符表示。(如上面的例子,最前面的4a,二进制是01001010,十进制是74,在ASCII码中就是字符J )

二进制文件中的大多数字节都不是字符(有一些只是碰巧会对应于某个字符),而是机器指令、数值数据等。

3.hexdump 语法

hexdump — ASCII, decimal, hexadecimal, octal dump.

语法:
hexdump [-bcCdovx] [-e format_string] [-f format_file] [-n length] [-s offset] file …
hd [-bcdovx] [-e format_string] [-f format_file] [-n length] [-s offset] file …

其中,hd 可以相当于是 hexdump -C。

常用选项:

-C,(大写C) 以规范格式显示一个二进制文件
-s offset,(skip over 略过) 设置初始偏移量指定在文件开头略过多少字节, offset 可以使用任何进制表示的数字。(如,-s 0x120 表示从偏移0x120处开始显示数据)
n length,(number of bytes 字节数量) 设置显示字节数, length 为十进制数。 (如,-n 100表示只显示100个字节的数据)
常用组合语法:hexdump -C [-s offset] [-n length] [file…]

例:

[nosee@instance-4 ~]$ hexdump -C -s 0x120 -n 100 /usr/bin/ls 
00000120  01 00 00 00 04 00 00 00  00 70 01 00 00 00 00 00  |.........p......|
00000130  00 70 01 00 00 00 00 00  00 70 01 00 00 00 00 00  |.p.......p......|
00000140  10 89 00 00 00 00 00 00  10 89 00 00 00 00 00 00  |................|
00000150  00 10 00 00 00 00 00 00  01 00 00 00 06 00 00 00  |................|
00000160  90 03 02 00 00 00 00 00  90 13 02 00 00 00 00 00  |................|
00000170  90 13 02 00 00 00 00 00  58 12 00 00 00 00 00 00  |........X.......|
00000180  48 25 00 00                                       |H%..|
00000184
[nosee@instance-4 ~]$ hd -s 0x120 -n 100 /usr/bin/ls 
00000120  01 00 00 00 04 00 00 00  00 70 01 00 00 00 00 00  |.........p......|
00000130  00 70 01 00 00 00 00 00  00 70 01 00 00 00 00 00  |.p.......p......|
00000140  10 89 00 00 00 00 00 00  10 89 00 00 00 00 00 00  |................|
00000150  00 10 00 00 00 00 00 00  01 00 00 00 06 00 00 00  |................|
00000160  90 03 02 00 00 00 00 00  90 13 02 00 00 00 00 00  |................|
00000170  90 13 02 00 00 00 00 00  58 12 00 00 00 00 00 00  |........X.......|
00000180  48 25 00 00                                       |H%..|
00000184

注意:十六进制查看文件时,注意区分大小端

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值