Como amosar os caracteres imprimibles dun ficheiro co comando Cadea

Xa intentou abrir un ficheiro nun editor só para descubrir que contén contido binario ilexível?

O comando "cadea" de Linux permítelle ver os caracteres lexibles por humanos dentro de calquera ficheiro.

O principal obxectivo de usar o comando "cadea" é determinar que tipo de arquivo está mirando pero tamén pode usalo para extraer texto. Por exemplo, se ten un arquivo dun programa propietario que garda ficheiros nun formato binario estraño pode usar "cadeas" para extraer o texto que inseriu no ficheiro.

Exemplo de uso do comando de cadea

Unha boa forma de demostrar o poder do comando cadea é crear un documento usando LibreOffice Writer.

Simplemente abre LibreOffice Writer e introduce algún texto e gárdao no formato ODT estándar .

Agora abra unha xanela de terminal (prema CTRL, ALT e T ao mesmo tempo) e despois use o comando cat para mostrar o ficheiro como segue:

cat yourfilename.odt | máis

(Substitúe a túa nome de ficheiro.odt co nome do ficheiro que creaches)

O que verás é todo un muro de texto ilexible.

Prema a barra espaciadora para desprazarse polo ficheiro. Esporádicamente ao longo do ficheiro verá parte do texto que introduciu.

O comando de cadea pode ser usado para mostrar só as partes que son lexibles.

Na súa forma máis sinxela pode executar o seguinte comando:

cadea yourfilename.odt | máis

Como antes, aparecerá un muro de texto, pero só texto que podes ler como humano. Se tes sorte, poderás ver o teu texto.

O que poderás ver que é a clave, con todo, está en primeira liña:

mimetypeapplication / vnd.oasis.opendocument.text

Sabemos que o tipo de ficheiro é un ficheiro ODT de LibreOffice Writer por 2 razóns:

  1. Creamos o ficheiro
  2. A extensión é .ODT

Imaxina que non creou o ficheiro ou atopou o ficheiro nun disco recuperado e que o ficheiro non tiña unha extensión.

A recuperación de Windows moitas veces recupere ficheiros con nomes como 0001, 0002, 0003, etc. O feito de que os arquivos fosen recuperados é excelente, pero tratando de determinar que tipo de arquivos eran un pesadelo.

Usando cadeas ten probabilidades de loitar contra o tipo de ficheiro. Sabendo que un ficheiro é un ficheiro opendocument.text significa que podes gardalo coa extensión ODT e abrilo no escritor de LibreOffice.

No caso de que ignoras que un ficheiro ODT é basicamente un arquivo comprimido. Se cambia o nome da túa nome de usuario. A túa nome de ficheiro .zip pode abrilo nunha ferramenta de arquivo e mesmo descomprimir o ficheiro.

Comportamentos alternativos

De xeito predeterminado, o comando de cadea devolve todas as cadeas dun ficheiro, pero pode cambiar o comportamento para que devolva cadeas de seccións de datos inicializadas e cargas nun ficheiro.

Que significa isto exactamente? Ninguén parece saber.

Ten sentido asumir que está a usar as cadeas para probar e descubrir o tipo de ficheiro ou buscar texto específico nun ficheiro.

Se ao executar o comando de cadea empregando o comportamento predeterminado non obtén a saída que esperaba, entón intente executar un dos seguintes comandos para ver se fai a diferenza:

cadeas -de o teu nome de ficheiro

cadeas --data o teu nome de ficheiro

A páxina de manual indica que o comando anterior pode axudar a reducir a cantidade de lixo de cadeas.

O comando "cadea" pódese configurar para traballar en reversa para que o modificador d minus sexa o comportamento predeterminado. Se este é o caso no seu sistema, pode devolver todos os datos empregando o seguinte comando:

cadeas -a túa nome de ficheiro

Formateando a saída

Pode obter o texto dentro da saída para mostrar o nome do ficheiro xunto a cada liña de texto.

Para facelo executar un dos seguintes comandos:

cadeas -de teu nome de ficheiro

cadeas --print-file-name yourfilename

A saída agora verá algo así:

o teu nome de ficheiro: un fragmento de texto

Nome de ficheiro: outra peza de texto

Como parte da saída tamén pode amosar o desprazamento de onde aparece ese texto nun ficheiro. Para facelo, execute o seguinte comando:

cadeas -ou o teu nome de ficheiro

A saída verase así:

16573 o teu

Texto 17024

A compensación é realmente a compensación octal, aínda que dependendo de como se compilaron as cadeas para o seu sistema, podería ser tamén o hexágono ou o desprazamento decimal tamén.

Unha forma máis precisa de obter o desprazamento que quere é usar os seguintes comandos:

cadeas -td yourfilename

cadeas - ao teu nome de ficheiro

cadeas: o teu nome de ficheiro

O minus t significa devolver a compensación eo carácter que segue determina o tipo de desprazamento. (é dicir, d = decimal, o = octal, h = hex).

Por defecto o comando de cadea imprime cada nova cadea nunha nova liña, pero pode configurar o delimitador que escolla. Por exemplo, para usar un símbolo de tubo ("|") como o delimitador executar o seguinte comando:

cadeas -s "|" o teu nome de ficheiro

Axustar o límite de cadea

O comando cadea por defecto busca unha cadea de 4 caracteres imprimibles seguidos. Pode axustar o valor predeterminado para que só devolve unha cadea con 8 caracteres imprimibles ou 12 caracteres imprimibles.

Ao axustar este límite pode adaptar a saída para obter o mellor resultado posible. Ao buscar unha cadea que sexa demasiado longa, arrisca a omitir o texto útil, pero ao facelo demasiado curto pode acabar con máis lixo devolto.

Para axustar o límite de cadea executar o seguinte comando:

cadeas -n 8 o teu nome de ficheiro

No exemplo anterior cambiou o límite a 8.

Pode substituír 8 co número que elixas.

Tamén pode usar o seguinte comando para facer o mesmo:

cadeas --bytes = 8 o nome do teu ficheiro

Incluír espazos en branco

Por omisión, o comando cadea inclúe espazo en branco, como unha lapela ou espazo como un carácter imprimible. Polo tanto, se ten unha cadea que di como "o gato sentouse na alfombra", entón o comando cadea devolverá todo o texto.

Non se considera que os caracteres de liña nova e os retorno de carro sexan caracteres imprimibles por defecto.

Para que as cadeas recoñezan os novos caracteres de liña e os retornos de carro como cadeas de caracteres de caracteres imprimibles do seguinte xeito:

cadeas-en nome de ti

Cambiar a codificación

Hai 5 opcións de codificación dispoñibles para usar con cadeas:

O byte predeterminado é de 7 bits.

Para cambiar a codificación execútase o seguinte comando:

cadeas -es o teu nome de ficheiro

cadeas --encoding = s yourfilename

No comando anterior, especificarei o "s" predeterminado que significa 7 bytes de bit. Simplemente substitúe o "s" coa letra de codificación que elixas.

Cambiar o Nome de descrición do ficheiro binario

Pode cambiar o comportamento das cadeas para que use unha biblioteca de ficheiros binario distinta diferente da proporcionada para o seu sistema.

Este cambio é un para os expertos. Se tes outra biblioteca para usar, entón podes facelo executando o seguinte comando de cadeas:

cadeas -T bfdname

Opcións de lectura dun ficheiro

Se vai utilizar as mesmas opcións cada vez, entón non quere ter que especificar todos os interruptores cada vez que execute o comando porque leva tempo.

O que podes facer é crear un ficheiro de texto usando nano e especificar as opcións dentro dese ficheiro.

Para probalo dentro dun terminal executar o seguinte comando:

nano stringsopts

No ficheiro escriba o seguinte texto:

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

Garda o ficheiro premendo CTRL e O e saia presionando CTRL e X.

Para executar os comandos das cadeas con estas opcións, execute o seguinte comando:

cadeas @stringsopts yourfilename

As opcións serán lidas desde as secuencias de ficheiros e debería ver o nome do ficheiro antes de cada cadea, o desprazamento e o "|" como separador.

Obter axuda

Se desexa ler máis sobre as cadeas, pode executar o seguinte comando para obter axuda.

cadeas - axuda

Alternativamente, tamén pode ler a páxina de manual:

cadeas de home

Descubra cal versión das cordas está executando

Para atopar a versión das cadeas que está executando executar un dos seguintes comandos:

cordas -v

cordas -V

cadeas --versión