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:
- Nós criamos o arquivo
- 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:
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: 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: A saída será agora algo parecido com isto: 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: A saída será algo como isto: 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: 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: 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: 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: 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: Existem 5 opções de codificação disponíveis para uso com strings: O padrão é o byte de 7 bits. Para alterar a codificação, execute o seguinte comando: 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. 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: 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: No arquivo, digite o seguinte texto: 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: 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. Se você quiser ler mais sobre strings você pode executar o seguinte comando para obter ajuda. Alternativamente, você também pode ler a página de manual: Para encontrar a versão das strings que você está executando, execute um dos seguintes comandos:strings -d yourfilename
strings --data yourfilenamestrings -a yourfilename
Saída de formatação
strings -f yourfilename
strings --print-file-name yourfilenameyourfilename: um pedaço de texto
yourfilename: outro pedaço de textostrings -o yourfilename
16573 seu
Texto 17024
strings -t d yourfilename
strings -t o seu nome de arquivostrings -t h yourfilenamestrings -s "|" yourfilename
Ajustar o limite de strings
strings -n 8 yourfilename
strings --bytes = 8 seu nome de arquivo
Incluir espaço em branco
strings -w yourfilename
Alterar a codificação
strings -e s yourfilename
strings --encoding = s yourfilename Alterar o nome da descrição do arquivo binário
strings -T bfdname
Opções de leitura de um arquivo
nano stringsopts
-f -o -n 3 -s "|"
strings @stringsopts yourfilename
Conseguindo ajuda
cordas - ajuda
cordas de homem
Descubra qual versão das cordas que você está executando
cordas -v
cordas -Vstrings --version