Comando equivalente para grep arquivos binários

21

Eu tenho um monte de binários e sei que dentro desses binários há cadeias de caracteres que eu quero encontrar.

Eu quero fazer um:

grep -lir "the string I am looking for"

e obtenha uma lista de todos os binários dentro de um diretório específico que contenha essa cadeia, mas grep -lir aparentemente não está trabalhando com esses arquivos.

Existe um comando que pode fazer esse tipo de pesquisa no terminal?

    
por SpaceDog 23.07.2015 / 19:42

3 respostas

20

Com o GNU grep , você pode usar - uma opção para fazer com que ele trate os arquivos binários como arquivos de texto:

grep -ali -- string file

Se a sua versão do grep não for compatível com -a , você poderá usar ack . Com o ack 1.x, você precisa incluir a opção -a , com o ack 2.x, você não inclui, pois ao pesquisar, por padrão, não incluir arquivo de texto (somente arquivo não-texto ignorado quando você não especificou nenhum arquivo ).

    
por 23.07.2015 / 19:52
21

O comando strings extrairá todos os dados ascii de um arquivo, se você, em seguida, grep sua saída, você pode procurar por seus dados:

strings <filename> | grep "search text"
    
por 23.07.2015 / 23:05
8

Sua pergunta é sobre encontrar arquivos binários que contenham um padrão (e já temos respostas muito boas!). Complementarmente, podemos gostar de obter as ocorrências.

Eu geralmente uso

grep -aPo '.{0,20}pattern.{0,20}'  binfile

para obter um contexto de 20 caracteres.

    
por 23.07.2015 / 23:22

Tags