Linux hexdump 命令实战示例

LinuxBeginner
立即练习

介绍

在本实验中,我们将探索 Linux 的 hexdump 命令,这是一个用于查看和操作二进制数据的强大工具。hexdump 命令允许你以人类可读的十六进制格式显示文件或任何其他二进制数据的内容。我们将从介绍 hexdump 命令的基本用法开始,然后深入探讨如何自定义输出以满足你的需求。本实验旨在提供实际示例,帮助你更好地理解在 Linux 环境中处理二进制数据。

Linux 命令速查表

hexdump 命令介绍

在本步骤中,我们将探索 Linux 中的 hexdump 命令,这是一个用于查看和操作二进制数据的强大工具。hexdump 命令允许你以人类可读的十六进制格式显示文件或任何其他二进制数据的内容。

让我们从一个文件上运行基本的 hexdump 命令开始:

hexdump ~/project/example.txt

示例输出:

00000000  48 65 6c 6c 6f 2c 20 77  6f 72 6c 64 21 0a        |Hello, world!.|
0000000e

输出显示了文件内容的十六进制表示,右侧是对应的 ASCII 字符。

hexdump 命令提供了多种选项来自定义输出格式。例如,你可以使用 -C(canonical,规范)选项以更易读的格式显示输出:

hexdump -C ~/project/example.txt

示例输出:

00000000  48 65 6c 6c 6f 2c 20 77  6f 72 6c 64 21 0a        |Hello, world!.|
0000000e

在这种格式中,十六进制值以 2 字节为一组显示,右侧是对应的 ASCII 字符。

你还可以使用 hexdump 命令查看设备或任何其他二进制数据源的内容。例如,要查看 /dev/urandom 设备(随机数据源)的前 10 个字节,可以运行:

hexdump -n 10 /dev/urandom

示例输出:

a5 e9 f6 c0 f3 b1 8e 7a 4a 3d

在下一步中,我们将探索 hexdump 命令的更高级用法,并学习如何进一步自定义输出。

使用 hexdump 查看二进制数据

在本步骤中,我们将学习如何使用 hexdump 命令更详细地查看和分析二进制数据。

首先,让我们创建一个二进制文件用于操作:

dd if=/dev/urandom of=~/project/binary_file.bin bs=1024 count=1

该命令生成一个 1KB 的二进制文件,其中填充了随机数据。

现在,让我们使用 hexdump 查看二进制文件的内容:

hexdump -C ~/project/binary_file.bin

示例输出:

00000000  b5 7f 04 3c 91 82 f7 06  dc 2b 8e 8e 5e 2e 6e 1b  |...<.....+..^.n.|
00000010  7a 9a 8e 4e 3a 5e 8e 2d  9b 3e 7d 0a 0d 5d 2e 8f  |z..N:^.-.:}..]..|
00000020  6d 17 a5 8a 1d 6f 9f 3d  44 f2 8e 3f 9a 8f 3a 5b  |m....o.=D..?..:[|
00000030  e1 73 2f 7e 5f 8f 04 a3  1e 4a 9e 8c 8f 9a 8e 4e  |.s/~_....J.....N|

-C 选项以规范格式显示输出,将十六进制值以 2 字节为一组显示,并在右侧显示对应的 ASCII 字符。

你还可以使用 hexdump 命令查看二进制文件的特定部分。例如,要仅查看前 16 个字节,可以使用 -n(字节数)选项:

hexdump -C -n 16 ~/project/binary_file.bin

示例输出:

00000000  b5 7f 04 3c 91 82 f7 06  dc 2b 8e 8e 5e 2e 6e 1b  |...<.....+..^.n.|

此外,你可以使用 hexdump 命令以不同的格式查看文件,例如规范格式(-C)、单字节字符数据的规范显示(-c)或 32 位整数格式(-x)。

在下一步中,我们将探索如何进一步自定义 hexdump 输出,以满足你的特定需求。

自定义 hexdump 输出

在最后一步中,我们将探索如何自定义 hexdump 命令的输出,以满足你的特定需求。

hexdump 命令提供了多种选项来控制输出的格式。让我们从使用 -v(verbose,详细)选项开始,以显示更多信息:

hexdump -v -C ~/project/binary_file.bin

示例输出:

00000000  b5 7f 04 3c 91 82 f7 06  dc 2b 8e 8e 5e 2e 6e 1b  |...<.....+..^.n.|
00000010  7a 9a 8e 4e 3a 5e 8e 2d  9b 3e 7d 0a 0d 5d 2e 8f  |z..N:^.-.:}..]..|
00000020  6d 17 a5 8a 1d 6f 9f 3d  44 f2 8e 3f 9a 8f 3a 5b  |m....o.=D..?..:[|
00000030  e1 73 2f 7e 5f 8f 04 a3  1e 4a 9e 8c 8f 9a 8e 4e  |.s/~_....J.....N|

-v 选项在最左侧列中显示文件偏移量(数据在文件中的位置)。

你还可以使用 -x 选项以 32 位十六进制格式显示输出:

hexdump -x ~/project/binary_file.bin

示例输出:

00000000  3c7f04b5  06f78291  8e2b0cdc  1b6e2e5e
00000010  8e3a9a7a  0a7d3e9b  8f2e5d0d  8a17a56d
00000020  3d9f6f1d  3f8ef244  5b3a8f9a  8c9e4a1e
00000030  8f04a37f  4e8e9a8f  73e1

在这种格式中,数据以 32 位十六进制值显示,这对于在较低级别分析二进制数据非常有用。

最后,让我们尝试使用 -d 选项以 16 位十进制格式显示输出:

hexdump -d ~/project/binary_file.bin

示例输出:

00000000  48879  32403  62353  56076  56462  24670  31259  14623
00000016  31610  15677  13010  21869  8207  37243  17694  14350
00000032  15995  17215  17787  17498  28509  17742

-d 选项以 16 位十进制值显示数据,这有助于将二进制数据解释为数值。

通过使用这些自定义选项,你可以根据特定需求调整 hexdump 输出,并更深入地理解你正在处理的二进制数据。

总结

在本实验中,我们探索了 Linux 的 hexdump 命令,这是一个用于查看和操作二进制数据的强大工具。我们学习了如何使用基本的 hexdump 命令以人类可读的十六进制格式显示文件内容,以及如何使用 -C(canonical,规范)等选项自定义输出。我们还了解了如何使用 hexdump 查看设备和其他二进制数据源的内容。最后,我们通过创建一个二进制文件并使用 hexdump 检查其内容,练习了更详细地查看和分析二进制数据。

Linux 命令速查表