Escaneie o arquivo de imagem ou o disco por padrão e retorne sua localização

2

Digamos que eu tenha um dispositivo de bloco ou um arquivo de imagem. E digamos que eu também tenha uma seqüência de bytes ou uma string ou algum padrão de pesquisa. Como posso obter as posições das ocorrências de tal padrão ou string? Existem ferramentas para isso?

    
por Melab 28.02.2016 / 05:57

2 respostas

1

Uma solução simples seria usar

grep -aob "string to find" /dev/blockdev
  • o comutador "a" trata o arquivo como texto, então ele exibe a saída, o comutador "o" limita a saída ao deslocamento e à string que você está procurando, então você não obtém lixo binário e o "b" switch diz para imprimir o byte offset também.
por 28.02.2016 / 09:33
0

Esta questão tem várias respostas, dependendo do que você deseja pesquisar exatamente.

Se você deseja encontrar todas as strings de caracteres dentro de um arquivo binário, o comando é strings : from o Manual ,

strings(1)

Name

strings - print the strings of printable characters in files.

.... For each file given, GNU strings prints the printable character sequences that are at least 4 characters long (or the number given with the options below) and are followed by an unprintable character. By default, it only prints the strings from the initialized and loaded sections of object files; for other types of files, it prints the strings from the whole file.

Se você estiver interessado em pesquisar um arquivo binário para uma seqüência binária , use bgrep (não nos repos, AFAIK):

bgrep is a utility for searching for occurrences of binary strings within binary files. As its name suggests, its interface and design is modeled after the ubiquitous “grep” command, used to search for occurrences of text patterns in text files.

Como alternativa, você pode usar o seguinte truque:

cat YourFile | hexdump -C | grep YourPattern

Isso usa hexdump : novamente do Manual ,

hexdump(1)

Name

hexdump - ascii, decimal, hexadecimal, octal dump

Eu uso o conveniente formato -C :

-C Canonical hex+ASCII display. Display the input offset in hexadecimal, followed by sixteen space-separated, two column, hexadecimal bytes, followed by the same sixteen bytes in %_p format enclosed in ''|'' characters.

enquanto algumas pessoas preferem o formato -c :

-c One-byte character display. Display the input offset in hexadecimal, followed by sixteen space-separated, three column, space-filled, characters of input data per line.

    
por 28.02.2016 / 08:50