如何在linux / bash中提取二进制文件的文本部分?

时间:2016-08-08 15:25:11

标签: linux bash sed grep

我有一个二进制文件。如果我用vi打开它,它会显示人类可读文本和二进制字符的序列。仅使用bash提取人类可读部分的最佳方法是什么?

我在想,也许我们可以通过grep或sed模式做到这一点?

$ cat file1.bin | grep '????'  > newfile.txt

3 个答案:

答案 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部分。该部分以外的内容并不总是很有用。