介绍
十六进制转储是数据的十六进制视图。您可能希望在调试程序或对程序进行反向工程时使用十六进制。
例如,许多文件格式都有特定的十六进制字符来表示它们的类型。如果您尝试使用程序读取文件,并且由于某种原因未正确加载文件,则可能是文件格式不符合您的预期。
如果你想看看程序是如何工作的,并且你没有反向设计代码的源代码或软件,你可以查看十六进制转储来尝试找出正在发生的事情。
什么是十六进制?
计算机以二进制思考。每个字符,数字和符号都由二进制或多个二进制值引用。
然而,人类倾向于以小数形式思考。
| 成千上万 | 数以百计 | 十 | 单位 |
| 1 | 0 | 1 | 1 |
作为人类,我们的最小数字被称为单位并代表数字0到9.当我们达到10时,我们将单位列重置为0并将数字1(10)加1。
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
在二进制中,最小数字仅代表0和1.当我们超过1时,我们在2列中放置1,在1列中放置0。如果要表示4,则在4列中放置1并重置2和1列。
因此,为了代表15,你将拥有1111代表1 8,1 4,1和2 1。 (8 + 4 + 2 + 1 = 15)。
如果我们以二进制格式查看数据文件,那将是绝对巨大的,几乎不可能理解。
二进制的下一步是八进制,它使用8作为基数。
| 24 | 16 | 8 | 1 |
| 0 | 1 | 1 | 0 |
在八进制系统中,第一列从0到7,第二列为8到15,第三列为16到23,第四列为24到31,依此类推。虽然通常比二进制更容易阅读,但大多数人更喜欢使用十六进制。
十六进制使用16作为基数。现在这是令人困惑的地方,因为作为人类,我们认为数字为0到9。
那么用于10,11,12,13,14,15的是什么?答案是信件。
- 0 = 0
- 1 = 1
- 2 = 2
- 3 = 3
- 4 = 4
- 5 = 5
- 6 = 6
- 7 = 7
- 8 = 8
- 9 = 9
- 10 = A.
- 11 = B.
- 12 = C.
- 13 = D.
- 14 = E.
- 15 = F.
因此,值100由64表示。您将需要16个列中的6个,这将在单位列中生成100,然后生成100,然后生成100。
文件中的所有字符都将以十六进制值表示。这些值的含义取决于文件本身的格式。文件的格式由十六进制值表示,这些值通常存储在文件的开头。
通过了解文件开头出现的十六进制值序列,您可以手动确定文件所处的格式。在十六进制转储中查看文件可以帮助您查找文件时未显示的隐藏字符加载到普通文本编辑器中。
如何使用Linux创建十六进制转储
要使用Linux创建十六进制转储,请使用hexdump命令。
要将文件显示为十六进制到终端(标准输出),请运行以下命令:
hexdump文件名
例如
hexdump image.png
默认输出将显示行号(十六进制格式),然后每行显示8组4个十六进制值。
例如:
00000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244
您可以提供不同的开关来更改默认输出。例如,指定负b开关将产生8位数偏移,后跟16个三列,零填充,八进制格式的输入数据字节。
hexdump -b image.png
因此,上面的例子现在将表示如下:
00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122
上述格式称为单字节八进制显示。
查看文件的另一种方法是使用减号c开关进行单字节字符显示。
hexdump -c image.png
这再次显示偏移量,但此时间后面是每行输入数据的十六个空格分隔的三列空格填充字符。
其他选项包括Canonical hex + ascii显示,可以使用减C开关显示,双字节十进制显示,可以使用减d开关显示。减号开关可用于显示双字节八进制显示。最后,minux x开关可用于显示双字节十六进制显示。
hexdump -C image.png
hexdump -d image.png
hexdump -o image.png
hexdump -x image.png
如果上述格式均不适合您的需要,请使用减号开关指定格式。
如果您知道数据文件很长并且您只想查看前几个字符以确定其类型,则可以使用-n开关指定要以十六进制显示的文件数量。
hexdump -n100 image.png
上面的命令显示前100个字节。
如果要跳过文件的一部分,可以使用减号开关设置从中开始的偏移量。
hexdump -s10 image.png
如果您不提供文件名,则从标准输入中读取文本。
只需输入以下命令:
hexdump都
然后在标准输入中输入文本并输入quit完成。十六进制将显示在标准输出中。
摘要
hexdump实用程序显然是一个相当强大的工具,您一定要阅读手册页以完全掌握所有功能。
在阅读输出时,您还需要很好地理解您正在寻找的内容。
要查看手册页,请运行以下命令:
男人hexdump




