我有一个二进制文件。如果我用vi打开它,它会显示人类可读文本和二进制字符的序列。仅使用bash提取人类可读部分的最佳方法是什么?
我在想,也许我们可以通过grep或sed模式做到这一点?
$ cat file1.bin | grep '????' > newfile.txt
答案 0 :(得分:11)
使用strings
实用程序 - 这正是它的设计目标。
答案 1 :(得分:0)
这是我在未安装“字符串”实用程序的系统中使用的
cat yourfilename | tr -cd "[:print:]"
这将打印文本并一键删除不可打印的字符,这与“ cat -v filename”不同,后者仅打印文本,但需要进行一些后期处理才能删除不需要的内容。请注意,某些二进制数据可能是可打印的,因此您仍然会在这些好东西之间得到一些混乱。我认为如果您可以使用字符串,也可以消除这种混乱。
答案 2 :(得分:0)
如果您使用的是Debian发行版,则可能只用sudo apt install radare2
就可以得到radare2(r2)。
使用apt
,其他发行版上的其他安装程序安装r2后,或者按照在线指南进行安装,即可使用rabin2
来提取二进制文件的文本部分:
$ rabin2 -z your_binary
这通常比“ strings
”更好,因为它仅输出二进制文件的有用的.data
部分。该部分以外的内容并不总是很有用。