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


39

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

Ответы:


72

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

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

man strings дает:

НИТИ (1)

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

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


10

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

Например:

strings somebinaryfile | grep textuwanttofind


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).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.