Comando do Linux para encontrar seqüências de caracteres no arquivo binário ou não ascii

39

Existe algum comando linux para extrair todas as seqüências ascii de um arquivo executável ou outro arquivo binário? Suponho que poderia fazê-lo com um grep, mas lembro-me de ouvir em algum lugar que esse comando existia?

Ethan Heilman
fonte

Respostas:

72

O comando que você está procurando é strings

Seu nome é bastante auto-explicativo, recupera qualquer sequência imprimível de um determinado arquivo.

man strings dá:

STRINGS (1)

NAME
strings - encontre as strings imprimíveis em um objeto ou outro arquivo binário

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

drAlberT
fonte
10

O comando strings é o caminho a seguir para esse tipo específico de problemas. Às vezes, você também precisa enviá-lo para grep .

Por exemplo:

strings somebinaryfile | grep textuwanttofind
luis.espinal
fonte
4

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

Marca
fonte
3

O comando od pode fazer isso:

od -c *filename*
Kyle Brandt
fonte
3
sim, isso extrai os caracteres ASCII, mas não são realmente as strings, por si só. Eu acho que 'strings' é mais útil para a maioria dos casos.
User5336 7/08/09
Ya, não sabia sobre esse comando, mas eu sei agora! Albert tenho o meu '+1' :-)
Kyle Brandt
2

Um problema com o uso de strings é que você não vê os imprimíveis ao redor e precisa ter cuidado com o comprimento mínimo das strings.

Um problema ao usar

od -c FILE
ou
hexdump -C FILE
é difícil encontrar uma sequência se quebra uma linha.

Algo de que gosto muito é o ZTreeWin em execução no WINE no Linux - você pode fazer muito com ele, mas a pesquisa em qualquer arquivo ou edição de binários pode ser particularmente útil.

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

qeff
fonte