Como usar o comando strings no Linux

Conteúdo

Terminal Linux em um laptop

Você quer ver o texto dentro de um arquivo binário ou de dados? El Linux strings O comando extrai esses trechos de texto, chamado “correntes”, para você.

O Linux está repleto de comandos que podem parecer soluções para problemas. a strings O comando definitivamente cai nesse campo. Qual é o seu objetivo? Existe algum ponto em um comando que lista strings imprimíveis de um arquivo binário?

Vamos dar um passo para trás. Arquivos binários, como arquivos de programa, pode conter strings de texto legíveis por humanos. Mas, Como você pode vê-los? Se você usar cat o less você provavelmente vai acabar com uma janela de terminal travada. Os programas projetados para trabalhar com arquivos de texto não funcionam bem se caracteres não imprimíveis forem inseridos por meio deles..

A maioria dos bytes em um arquivo binário não são legíveis por humanos e não podem ser impressos na janela do terminal de uma forma que faça sentido. Não há caracteres ou símbolos padrão para representar valores binários que não correspondem a caracteres alfanuméricos, pontuação ou espaços em branco. Em conjunto, estes são conhecidos como personagens “Imprimível”. O resto são personagens “não imprimível”.

Por isso, tentar visualizar ou pesquisar strings de texto em um arquivo binário ou de dados é um obstáculo. E é aí que strings entre. Extrair strings imprimíveis de arquivo então outros comandos podem usar as strings sem ter que lidar com caracteres não imprimíveis.

Usando o comando strings

Não há nada complicado nisso strings comando, e seu uso básico é muito fácil. Fornecemos o nome do arquivo que desejamos strings para pesquisar na linha de comando.

Aqui, vamos usar strings em um arquivo binário, um arquivo executável, chamado “tagarelice”. Nós escrevemos strings, um espaço, “tagarelice” e pressione Enter.

jibber de cordas

Strings são extraídos do arquivo e listados na janela do terminal.

Definir o comprimento mínimo do acorde

Por padrão, strings irão procurar por strings de quatro caracteres ou mais. Para determinar um comprimento mínimo mais curto ou mais longo, Use o -n (Comprimento mínimo) opção.

Observe que quanto menor o comprimento mínimo, maiores são as chances de você ver mais lixo.

Alguns valores binários têm o mesmo valor numérico que o valor que um caractere imprimível representa. Se dois desses valores numéricos estiverem próximos um do outro no arquivo e você especificar um comprimento mínimo de dois, esses bytes serão relatados como uma string.

Perguntar strings para usar dois como o comprimento mínimo, use o seguinte comando.

strings -n 2 tagarelice

Agora temos duas strings de letras incluídas nos resultados. Observe que os espaços são contados como um caractere imprimível.

Tubulação da corda através de Less

Devido ao comprimento da saída strings, vamos canalizá-lo less. A seguir, podemos percorrer o arquivo procurando o texto de interesse.

jibber de cordas | menos

A lista agora é apresentada a nós em less, com o topo da lista exibido primeiro.

Use strings com arquivos de objeto

Regularmente, os arquivos-fonte do programa são compilados em arquivos-objeto. Eles estão vinculados a arquivos de biblioteca para criar um arquivo executável binário. Temos o arquivo do objeto jibber em mãos, então vamos dar uma olhada dentro desse arquivo. Observe a extensão do arquivo “.o”.

jibber.o | menos

O primeiro conjunto de stringséenvolvido na coluna oito se tiverem mais de oito caracteres. Se eles foram ajustados, um personagem aparece “H” na coluna nove. Você pode reconhecer essas strings como instruções SQL.

Percorrer a saída revela que este formato não é usado em todo o arquivo.

É interessante ver as diferenças nas strings de texto entre o arquivo objeto e o executável finalizado.

Pesquise em áreas específicas do arquivo

Os programas compilados têm diferentes áreas dentro deles que são usadas para armazenar texto. Por padrão, strings procura em todo o arquivo por texto. É como se você usasse o -a (todo o mundo) opção. Para strings para pesquisar apenas em seções de dados carregados e inicializados no arquivo, use o -d opção (dados).

strings -d jibber | menos

A menos que você tenha um bom motivo para fazer isso, você também pode usar as configurações padrão e pesquisar o arquivo inteiro.

Impressão offset de corrente

Podemos ter strings imprime o deslocamento do início do arquivo em que cada string está. Para fazer isso, usar el -o (compensação) opção.

strings -o parse_phrases | menos

O deslocamento ocorre em Octal.

Para que o deslocamento seja exibido em uma base numérica diferente, como decimal o hexadecimal, Use o -t (raiz) opção. A opção radix deve ser seguida por d (decimal), x (hexadecimal), o o (Octal). Usando -t o é o mesmo que usar -o.

strings -t d parse_phrases | menos

Os deslocamentos agora são impressos em decimais.

strings -t x parse_phrases | menos

Os deslocamentos agora são impressos em hexadecimal.

Incluindo espaços em branco

strings considera os caracteres de tabulação e espaço como parte das strings que encontra. Outros caracteres de espaço em branco, como novas linhas e retornos de carro, não são tratados como se fizessem parte das cadeias. a -w Opção (espaço em branco) faz com que as strings tratem todos os caracteres de espaço em branco como se fossem parte da string.

strings -w add_data | menos

Podemos ver a linha em branco na saída, qual é o resultado do retorno do carro (invisível) e os novos caracteres de linha no final da segunda linha.

Não estamos limitados a arquivos

Podemos usar strings com qualquer coisa, ou pode produzir, um fluxo de bytes.

Com este comando, podemos olhar através do memória de acesso aleatório (RAM) do nosso computador.

Precisamos usar sudo porque estamos acessando / dev / mem. Este é um arquivo de dispositivo de personagem que contém uma imagem da memória principal do seu computador.

strings sudo / dev / mem | menos

A lista não é o conteúdo completo da sua RAM. São apenas as cordas que podem ser puxadas dele.

RELACIONADO: Que significa “tudo é um arquivo” en Linux?

Pesquise vários arquivos ao mesmo tempo

Os curingas podem ser usados ​​para escolher grupos de arquivos para pesquisar. a * personagem representa vários personagens, e ele ? caractere representa qualquer caractere único. Além disso, você pode optar por fornecer muitos nomes de arquivo na linha de comando.

Usaremos um caractere curinga e pesquisaremos todos os arquivos executáveis ​​no diretório / bin. Porque a lista conterá resultados de muitos arquivos, nós vamos usar o -f opção (nome do arquivo). Isto irá imprimir o nome do arquivo no início de cada linha. Então podemos ver em qual arquivo cada string foi encontrada.

Estamos canalizando os resultados por meio de grepe procurando por cordas que contenham a palavra “Direitos autorais”.

strings -f / bin / * | grep Copyright

Recebemos uma lista ordenada de declarações de direitos autorais para cada arquivo no diretório / bin, com o nome do arquivo no início de cada linha.

cordas desembaraçadas

As cordas não têm mistério; é um comando típico do Linux. Ele faz algo muito específico e muito bem.

É outra engrenagem no Linux e realmente ganha vida quando funciona com outros comandos.. Quando você vê como você pode alternar entre arquivos binários e outras ferramentas como grep, comece a apreciar a funcionalidade deste comando um pouco escuro.

setTimeout(função(){
!função(f,b,e,v,n,t,s)
{E se(f.fbq)Retorna;n = f.fbq = função(){n.callMethod?
n.callMethod.apply(n,argumentos):n.queue.push(argumentos)};
E se(!f._fbq)f._fbq = n;n.push = n;n.loaded =!0;n.version = ’2.0′;
n.queue =[];t = b.createElement(e);t.async =!0;
t.src = v;s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, documento,'roteiro',
‘Https://connect.facebook.net/en_US/fbevents.js ’);
fbq('iniciar', ‘335401813750447’);
fbq('acompanhar', ‘PageView’);
},3000);

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.