有一个很好的 CLIbinutils
实用程序,可以以类似的方式解释二进制文件并输出清晰的字符串cat
。它被称为strings
.
如果您尝试使用cat
二进制文件,您会看到一堆乱码文本和外来符号。可能还得reset
你的外壳。这有时甚至是不可能的
就像 一样cat
,基本用法很简单:
strings ./example.bin
就我个人而言,为了快速阅读,我喜欢:
strings -aws ' ' ./example.bin | fold -sw $COLUMNS ; echo
如果您想在真实文件上测试它,您可以尝试目录中的某些内容/bin
,例如:
strings -aws ' ' /bin/true | fold -sw $COLUMNS ; echo
我的问题:是否有类似、快速且简单的方法来编辑这些字符串?
答案1
是的。 vim -b filename
。表示-b
二进制文件。请参阅 vim 的手册页。
-b Binary mode. A few options will be set that makes it
possible to edit a binary or executable file.
bvi
也适合。
$ bvi /bin/ls
00000000 7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00 02 00 3E 00 01 00 00 00 .ELF..............>.....
00000018 A0 49 40 00 00 00 00 00 40 00 00 00 00 00 00 00 38 E7 01 00 00 00 00 00 .I@[email protected].......
00000030 00 00 00 00 40 00 38 00 09 00 40 00 1D 00 1C 00 06 00 00 00 05 00 00 00 [email protected]...@.............
00000048 40 00 00 00 00 00 00 00 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00 @.......@.@.....@.@.....
00000060 F8 01 00 00 00 00 00 00 F8 01 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ........................
答案2
我偶然发现了这篇关于二进制数据操作的好文章: 在 Bash 中操作二进制数据
它主要解释了一个非常方便的工具,称为xxd
例如,要转储 ASCII 格式的二进制文件,您将执行以下操作:
xxd -b myfile.bin
要转换短字符串,您可以使用旧的bc
:
$ echo "obase=16; ibase=2; 1010" | bc
A
另一种可以考虑的方法:
$ base64 < binary.file > text.file
数据库和奥巴塞定义输入和输出数字的转换基数。输入和输出的默认基数都是 10。