Linux命令在二进制或非ascii文件中查找字符串


39

是否有任何Linux命令从可执行文件或其他二进制文件中提取所有ascii字符串?我想我可以用grep做到这一点,但是我还记得听到某处存在这样的命令吗?

Answers:


72

您正在寻找的命令是 strings

它的名字很容易解释,它从给定文件中检索任何可打印的字符串。

man strings 给出:

STRINGS(1)

NAME
字符串 -查找对象或其他二进制文件中的可打印字符串

概要
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]


10

字符串命令去为这种特殊类型的问题的方式。有时,您还必须将其传送到grep

例如:

strings somebinaryfile | grep textuwanttofind

4

该命令确实存在,并且被称为....字符串!


3

od命令可以执行以下操作:

od -c *filename*

3
是的,它确实提取了ASCII字符,但实际上并不是字符串。我认为“字符串”在大多数情况下更有用。
user5336 2009年

是的,不知道该命令,但是我现在就知道了!AlberT得到了我的“ +1” :-)
Kyle Brandt

2

使用字符串的问题是您看不到周围的不可打印内容,因此必须注意最小的字符串长度。

使用有问题

od -c文件
要么
hexdump -C文件
是一个序列是否要换行可能很难找到。

我最喜欢的是在Linux上的WINE中运行的ZTreeWin-您可以执行很多操作,但是在任何文件中搜索或编辑二进制文件都特别有用。

令人敬畏的ytree软件包可用于许多Linux和Unix变体,并且具有任何文件的十六进制转储视图,但是却没有ZTreeWin(及其16位前身XTree)所具有的搜索功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.