如何从 bash 查看二进制文件?
Posted
技术标签:
【中文标题】如何从 bash 查看二进制文件?【英文标题】:How to view files in binary from bash? 【发布时间】:2010-12-18 10:18:14 【问题描述】:我想查看当前目录中文件的内容,但从命令行以二进制形式显示。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:xxd
处理二进制和十六进制。
斌:
xxd -b file
十六进制:
xxd file
【讨论】:
sudo xxd /dev/diskn | less
现在是我的新宠。
...它预装在 Mac OS X 和 Linux 上。
与“hexdump”相比,它的优势在于它还可以在侧面显示 ASCII 格式,从而更容易识别我要查看的位置。
并将输出转储到 ASCII 文本文件以供阅读和搜索:xxd file > hex_dump_of_file.txt
补充:xxd 不仅适用于 linux shell。我认为它带有vim。我在 windows 上安装了 vim,我发现我也可以在 windows 中使用 xxd。【参考方案2】:
hexdump -C yourfile.bin
当然,除非你想编辑它。大多数 linux 发行版默认都有hexdump
(但显然不是全部)。
【讨论】:
我喜欢这个想法,但和其他建议一样,它只输出十六进制。显然这比二进制要紧凑得多,但我正在处理非常小的文件,所以首选二进制。十六进制是我能够查看文件的唯一方式吗? 那么文件有多小?任何超过几个字节的东西,无论如何你都会开始失去理智。十六进制对大多数事情来说更有意义。如果您对十六进制感到不舒服,只需找到您感兴趣的字节并使用十六进制计算器进行转换。 我需要确保我的文件正确压缩并且我不知道它应该是什么样的十六进制(每个单元的大小是 7 位),所以我必须处理手写数字。 你有什么方法可以从二进制文件中查看文本吗?我可以获得 HEX 代码,但我应该如何将其解码为普通的人类文本? hexdump -C data.bin 的输出怎么样 | hexdump -C【参考方案3】:vi your_filename
点击esc
输入 :%!xxd
可查看十六进制字符串,输入 n :%!xxd -r
可返回正常编辑。
【讨论】:
我发现:%!xxd
在我的文件中添加了不需要的字符,即新行?【参考方案4】:
作为后备,总是有od -xc filename
【讨论】:
【参考方案5】:如果你想打开二进制文件(在 CentOS 7 中):
strings <binary_filename>
【讨论】:
IMO 这是所有答案中最简单最优雅的。我希望我可以多次投票。 最佳答案。这会将二进制文件转换为 JSON 文件。不是所有的英雄都穿斗篷,这是真的 它不会将其转换为 JSON 文件。它只在对象中找到可打印的字符串并显示给您。它根本不会将二进制文件转换为文本或任何格式。【参考方案6】:sudo apt-get install bless
Bless 是一个 GUI 工具,可以查看、编辑、搜索等等。 它的重量很轻。
【讨论】:
是的。我发现这比 Vim 更容易。 小心,它带有单声道【参考方案7】:$ echo -n 'Hello world!' | hd
00000000 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 |Hello world!|
0000000c
【讨论】:
hd 是“hexdump -C”的别名...? @JAR.JAR.beans 确实如此。我使用它是因为它更容易记住。 因为它默认存在于某些系统(Debian)上。【参考方案8】:见Improved Hex editing in the Vim Tips Wiki。
【讨论】:
【参考方案9】:您可以打开 emacs(在终端模式下,例如使用 emacs -nw
),然后使用 Hexl 模式:M-x hexl-mode
。
https://www.gnu.org/software/emacs/manual/html_node/emacs/Editing-Binary-Files.html
【讨论】:
【参考方案10】:Hexyl 格式很好:sudo apt install hexyl
【讨论】:
【参考方案11】:要将文件转换为二进制代码(十六进制表示),我们说:
xxd filename #
例如:
xxd hello.c #
要查看二进制文件中的所有内容和代码,我们可以使用readelf
和objdump
、hexdump
等命令。...
例如,如果我们想查看所有转换二进制文件(可执行文件、共享库、目标文件)的所有内容,我们说:
hexdump binaryfilename
例如
hexdump /bin/bash
但 readelf 是分析 elf(可执行和链接格式)文件的最佳实用程序。所以如果我们说:
readelf -a /bin/bash
二进制文件 bash 中的所有内容都会显示给我们,我们也可以为 readelf 提供不同的标志来分别查看 elf 文件的所有部分和头,例如,如果我们只想查看我们的 elf 头说:
readelf -h /bin/bash
用于读取文件的所有段:
readelf -l /bin/bash
用于读取文件的所有部分:
readelf -S /bin/sh
但再次作为总结,对于读取像“hello.c”这样的普通文件和像linux中路径/bin/bash中的bash这样的二进制文件,我们说:
xxd hello.c
readelf -a /bin/bash
【讨论】:
【参考方案12】:要以十六进制格式在一行中获取所有输出:
xxd -p yourfile.bin | tr -d '\n'
【讨论】:
【参考方案13】:你可以使用 hexdump 二进制文件
sudo apt-get install hexdump
hexdump -C yourfile.bin
【讨论】:
这只是***.com/a/1765339/12573645的副本以上是关于如何从 bash 查看二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章
bash 脚本如何在不使用 uudecode 的情况下写出二进制文件?