Команда Linux для поиска строк в двоичном или не ascii файле

39

Есть ли команда Linux для извлечения всех строк ascii из исполняемого файла или другого двоичного файла? Полагаю, я мог бы сделать это с помощью grep, но я помню, что где-то слышал, что такая команда существовала?

Этан Хейлман
источник

Ответы:

72

Команда, которую вы ищете strings

Его имя не требует пояснений, оно извлекает любую печатаемую строку из заданного файла.

man strings дает:

НИТИ (1)

NAME
strings - найти строки для печати в объекте или другом двоичном файле

СИНТАКСИС
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]

drAlberT
источник
10

Команда strings - это способ решения проблем данного типа. Иногда вы также должны передать это grep .

Например:

strings somebinaryfile | grep textuwanttofind
luis.espinal
источник
4

Команда существует и называется .... строк!

отметка
источник
3

Команда od может сделать это:

od -c *filename*
Кайл Брандт
источник
3
да, это извлекает символы ASCII, но это не совсем строки, как таковые. Я думаю, что «строки» более полезны для большинства случаев.
user5336
Я не знал об этой команде, но я знаю сейчас! AlberT получил мой «+1» :-)
Кайл Брандт
2

Проблема с использованием строк заключается в том, что вы не видите окружающих, не пригодных для печати, и вы должны быть осторожны с минимальной длиной строки.

Проблема с использованием

od -c ФАЙЛ
или
hexdump -C ФАЙЛ
в том, что последовательность может быть трудно найти, если она переносит строку.

Для этого мне очень нравится ZTreeWin, работающий в WINE под Linux - с ним можно многое сделать, но поиск в любом файле или редактирование двоичных файлов может быть особенно полезным.

Потрясающий пакет ytree доступен для многих вариантов Linux и Unix и имеет хорошее представление Hex-дампа для любого файла, но не имеет поиска, который есть у ZTreeWin (и его 16-битного предшественника, XTree).

Qeff
источник