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);