【发布时间】:2010-12-18 10:18:14
【问题描述】:
我想查看当前目录中文件的内容,但从命令行以二进制形式显示。我怎样才能做到这一点?
【问题讨论】:
我想查看当前目录中文件的内容,但从命令行以二进制形式显示。我怎样才能做到这一点?
【问题讨论】:
【讨论】:
sudo xxd /dev/diskn | less 现在是我的新宠。
xxd file > hex_dump_of_file.txt
hexdump -C yourfile.bin
当然,除非你想编辑它。大多数 linux 发行版默认都有hexdump(但显然不是全部)。
【讨论】:
vi your_filename
点击esc
输入 :%!xxd 可查看十六进制字符串,输入 n :%!xxd -r 可返回正常编辑。
【讨论】:
:%!xxd 在我的文件中添加了不需要的字符,即新行?
作为后备,总是有od -xc filename
【讨论】:
如果你想打开二进制文件(在 CentOS 7 中):
strings <binary_filename>
【讨论】:
sudo apt-get install bless
Bless 是一个 GUI 工具,可以查看、编辑、搜索等等。 它的重量很轻。
【讨论】:
$ echo -n 'Hello world!' | hd
00000000 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 |Hello world!|
0000000c
【讨论】:
您可以打开 emacs(在终端模式下,例如使用 emacs -nw),然后使用 Hexl 模式:M-x hexl-mode。
https://www.gnu.org/software/emacs/manual/html_node/emacs/Editing-Binary-Files.html
【讨论】:
要将文件转换为二进制代码(十六进制表示),我们说:
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
【讨论】:
要以十六进制格式在一行中获取所有输出:
xxd -p yourfile.bin | tr -d '\n'
【讨论】:
你可以使用 hexdump 二进制文件
sudo apt-get install hexdump
hexdump -C yourfile.bin
【讨论】: