Skip to main content

Mostrar caracteres imprimíveis de um arquivo com seqüências

Bradesco Explica – Navegador Exclusivo Bradesco (Abril 2025)

Bradesco Explica – Navegador Exclusivo Bradesco (Abril 2025)
Anonim

Você já tentou abrir um arquivo em um editor apenas para descobrir que ele contém conteúdo binário ilegível?

O comando "strings" do Linux torna possível visualizar os caracteres legíveis em qualquer arquivo.

O principal objetivo de usar o comando "strings" é descobrir que tipo de arquivo você está vendo, mas também pode usá-lo para extrair texto. Por exemplo, se você tem um arquivo de um programa proprietário que salva arquivos em um formato binário estranho, você pode usar "strings" para extrair o texto que você colocou no arquivo.

Exemplo de uso do comando Strings

Uma ótima maneira de demonstrar o poder do comando strings é criar um documento usando o LibreOffice Writer.

Basta abrir o LibreOffice Writer, digitar algum texto e salvá-lo no formato padrão ODT.

Agora abra uma janela de terminal (pressione CTRL, ALT e T ao mesmo tempo) e use o comando cat para exibir o arquivo da seguinte maneira:

cat yourfilename.odt | Mais

(Substitua o seu nome de arquivo.odt pelo nome do arquivo que você criou)

O que você verá é uma parede inteira de texto ilegível.

Pressione a barra de espaço para percorrer o arquivo. Esporadicamente ao longo do arquivo, você verá alguns dos textos que você digitou.

O comando strings pode ser usado para exibir apenas as partes que são legíveis por humanos.

Em sua forma mais simples, você pode executar o seguinte comando:

strings yourfilename.odt | Mais

Como antes, uma parede de texto aparecerá, mas apenas o texto que você pode ler como um humano. Se você tiver sorte, poderá ver o seu texto.

O que você poderá ver é fundamental, no entanto, está na primeira linha:

mimetypeapplication / vnd.oasis.opendocument.text

Sabemos que o tipo de arquivo é um arquivo ODT do LibreOffice Writer por 2 motivos:

  1. Nós criamos o arquivo
  2. A extensão é .ODT

Imagine que você não criou o arquivo ou encontrou o arquivo em um disco recuperado e o arquivo não tinha uma extensão.

Recuperação do Windows, muitas vezes, recuperar arquivos com nomes como 0001, 0002, 0003, etc O fato de que os arquivos foram recuperados é ótimo, mas tentando descobrir o que os tipos desses arquivos foram um pesadelo.

Usando strings você tem uma chance de trabalhar com o tipo de arquivo. Saber que um arquivo é um arquivo opendocument.text significa que você pode salvá-lo com a extensão ODT e abri-lo no LibreOffice writer.

Caso você não saiba que um arquivo ODT é basicamente um arquivo compactado. Se você renomear yourfilename.odt para yourfilename.zip, poderá abri-lo em uma ferramenta de arquivamento e até descompactar o arquivo.

Comportamentos alternativos

Por padrão, o comando strings retorna todas as strings em um arquivo, mas você pode alternar o comportamento para que ele retorne sequências de caracteres de seções de dados carregadas e inicializadas em um arquivo.

o que isso significa, exatamente? Ninguém parece saber.

Faz sentido supor que você está usando strings para tentar descobrir o tipo de arquivo ou procurar um texto específico em um arquivo.

Se, ao executar o comando strings usando o comportamento padrão, você não obtiver a saída que esperava, tente executar um dos seguintes comandos para ver se faz alguma diferença:

strings -d yourfilenamestrings --data yourfilename

A página de manual informa que o comando acima pode ajudar a reduzir a quantidade de lixo retornada das seqüências de caracteres.

O comando "strings" pode ser configurado para funcionar em ordem inversa, de modo que a opção menos d seja o comportamento padrão. Se este for o caso em seu sistema, você poderá retornar todos os dados usando o seguinte comando:

strings -a yourfilename

Saída de formatação

Você pode obter o texto dentro da saída para exibir o nome do arquivo ao lado de cada linha de texto.

Para isso, execute um dos seguintes comandos:

strings -f yourfilenamestrings --print-file-name yourfilename

A saída será agora algo parecido com isto:

yourfilename: um pedaço de textoyourfilename: outro pedaço de texto

Como parte da saída, você também pode exibir o deslocamento de onde o texto aparece em um arquivo. Para fazer isso, execute o seguinte comando:

strings -o yourfilename

A saída será algo como isto:

16573 seu

Texto 17024

O offset é na verdade o deslocamento octal, embora dependendo de como as strings foram compiladas para o seu sistema, ele poderia facilmente ser o hex ou o offset decimal também.

Uma maneira mais precisa de obter o deslocamento desejado é usar os seguintes comandos:

strings -t d yourfilenamestrings -t o seu nome de arquivostrings -t h yourfilename

O menos t significa retornar o deslocamento e o caractere que segue determina o tipo de deslocamento. (isto é, d = decimal, o = octal, h = hex).

Por padrão, o comando strings imprime cada nova string em uma nova linha, mas você pode definir o delimitador de sua escolha. Por exemplo, para usar um símbolo de pipe ("|") como o delimitador, execute o seguinte comando:

strings -s "|" yourfilename

Ajustar o limite de strings

O comando strings, por padrão, procura por uma sequência de 4 caracteres imprimíveis em uma linha. Você pode ajustar o padrão para que ele retorne somente uma string com 8 caracteres imprimíveis ou 12 caracteres imprimíveis.

Ao ajustar esse limite, você pode adaptar a saída para obter o melhor resultado possível. Ao procurar por uma string que é muito longa, você corre o risco de omitir o texto útil, mas fazendo com que seja muito curto, você pode acabar com muito mais lixo devolvido.

Para ajustar o limite de strings, execute o seguinte comando:

strings -n 8 yourfilename

No exemplo acima, mudei o limite para 8.Você pode substituir 8 pelo número de sua escolha.

Você também pode usar o seguinte comando para fazer a mesma coisa:

strings --bytes = 8 seu nome de arquivo

Incluir espaço em branco

Por padrão, o comando strings inclui espaços em branco, como uma guia ou espaço, como um caractere imprimível. Portanto, se você tiver uma string que seja lida como "o gato sentado no colchão", o comando strings retornará todo o texto.

Novos caracteres de linha e retornos de carro não são considerados caracteres imprimíveis por padrão.

Para obter strings para reconhecer novos caracteres de linha e retornos de carro como um caractere imprimível, execute strings da seguinte maneira:

strings -w yourfilename

Alterar a codificação

Existem 5 opções de codificação disponíveis para uso com strings:

  • s = byte de 7 bits (usado para ASCII, ISO 8859)
  • S = byte de 8 bits
  • b = bigendian de 16 bits
  • l = 16 bitendian

O padrão é o byte de 7 bits.

Para alterar a codificação, execute o seguinte comando:

strings -e s yourfilenamestrings --encoding = s yourfilename

No comando acima, eu especifiquei o padrão "s", que significa 7 bits. Simplesmente substitua o "s" pela letra de codificação de sua escolha.

Alterar o nome da descrição do arquivo binário

Você pode alterar o comportamento das strings para que use uma biblioteca de descritores de arquivos binários diferente da fornecida para o seu sistema.

Essa opção é uma para os especialistas. Se você tiver outra biblioteca para usar, poderá fazê-lo executando o seguinte comando strings:

strings -T bfdname

Opções de leitura de um arquivo

Se você for usar as mesmas opções a cada vez, não precisará especificar todas as opções sempre que executar o comando, pois isso leva tempo.

O que você pode fazer é criar um arquivo de texto usando nano e especificar as opções dentro desse arquivo.

Para testar isso em um terminal, execute o seguinte comando:

nano stringsopts

No arquivo, digite o seguinte texto:

-f -o -n 3 -s "|"

Salve o arquivo pressionando CTRL e O e saia pressionando CTRL e X.

Para executar os comandos strings com estas opções, execute o seguinte comando:

strings @stringsopts yourfilename

As opções serão lidas a partir dos stringsopts do arquivo e você deverá ver o nome do arquivo antes de cada string, o deslocamento e o "|" como um separador.

Conseguindo ajuda

Se você quiser ler mais sobre strings você pode executar o seguinte comando para obter ajuda.

cordas - ajuda

Alternativamente, você também pode ler a página de manual:

cordas de homem

Descubra qual versão das cordas que você está executando

Para encontrar a versão das strings que você está executando, execute um dos seguintes comandos:

cordas -vcordas -Vstrings --version