Comando Linux para encontrar Strings no arquivo binário ou não ascii

34

Existe algum comando linux para extrair todas as strings ascii de um executável ou outro arquivo binário? Eu suponho que eu poderia fazer isso com um grep, mas eu me lembro de ouvir em algum lugar que tal comando existia?

    
por Ethan Heilman 07.08.2009 / 16:20

5 respostas

64

O comando que você está procurando é strings

Seu nome é bastante autoexplicativo, ele recupera qualquer string imprimível de um determinado arquivo.

man strings dá:

STRINGS(1)

NAME
strings - find the printable strings in a object, or other binary, file

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

    
por 07.08.2009 / 16:22
6

O comando strings é o caminho a seguir para este tipo específico de problemas. Às vezes você também precisa enviar para grep .

Por exemplo:

strings somebinaryfile | grep textuwanttofind
    
por 02.03.2010 / 16:14
4

O comando existe e é chamado .... strings!

    
por 07.08.2009 / 16:22
3

O comando od pode fazer isso:

od -c *filename*
    
por 07.08.2009 / 16:22
2

Um problema com o uso de strings é que você não vê as não imprimíveis adjacentes e precisa ter cuidado com o tamanho mínimo da string.

Um problema usando

od -c FILE
ou
hexdump -C FILE
é que uma sequência pode ser difícil de encontrar se ela envolver uma linha.

Algo que eu gosto muito para isso é ZTreeWin rodando no WINE no Linux - você pode fazer muito com mas a busca em qualquer arquivo ou edição de binários pode ser particularmente útil.

O incrível pacote ytree está disponível para muitas variantes Linux e Unix e tem uma boa visualização Hex dump de qualquer arquivo, mas não tem a pesquisa que o ZTreeWin (e seu antecessor de 16 bits, o XTree) tem.

    
por 28.06.2016 / 15:19