Com mostrar els caràcters imprimibles d'un fitxer amb el comandament de cadenes

Alguna vegada has intentat obrir un fitxer en un editor només per descobrir que conté un contingut binari il·legible?

L'ordre de les "cadenes" de Linux permet visualitzar els caràcters llegibles per humans de qualsevol fitxer.

El propòsit principal d'utilitzar la comanda "cadenes" és determinar quin tipus de fitxer està mirant, però també podeu utilitzar-lo per extreure text. Per exemple, si teniu un fitxer d'un programa propietari que guarda fitxers en un format binari estrany, podeu utilitzar "cadenes" per extreure el text que heu introduït al fitxer.

Exemple d'ús del comandament de cadenes

Una bona manera de demostrar el poder del comandament de cadenes és crear un document amb LibreOffice Writer.

Simplement obriu l' LibreOffice Writer i introduïu algun text i, a continuació, deseu-lo en el format ODT estàndard .

Ara obriu una finestra de terminal (premeu CTRL, ALT i T alhora) i després utilitzeu l'ordre cat per mostrar el fitxer de la manera següent:

cat yourfilename.odt | més

(Reemplaça el nom del teu nom de fitxer amb el nom del fitxer que heu creat)

El que veurà és un mur sencer de text il·legible.

Premeu la barra espaiadora per desplaçar-vos pel fitxer. Esporàdicament al llarg del fitxer, veureu el text que heu introduït.

L'ordre de cadenes es pot utilitzar per mostrar només les parts que són llegibles per humans.

En la forma més simple, podeu executar el següent comandament:

cadenes yourfilename.odt | més

Com abans, apareixerà un mur de text, però només text que es pot llegir com a humà. Si tens sort, podràs veure el teu text.

No obstant això, el que podreu veure que és clau és a primera línia:

mimetypeapplication / vnd.oasis.opendocument.text

Sabem que el tipus de fitxer és un fitxer ODT de l'LibreOffice Writer per 2 raons:

  1. Hem creat el fitxer
  2. L'extensió és .ODT

Imagineu que no heu creat el fitxer o heu trobat el fitxer en un disc recuperat i el fitxer no tenia una extensió.

La recuperació de Windows sovint recuperaria fitxers amb noms com 0001, 0002, 0003, etc. El fet que els fitxers es recuperessin sigui genial, però intentar esbrinar quins tipus d'aquests fitxers era un malson.

En utilitzar cadenes, teniu una oportunitat de fer front al tipus de fitxer. Sabent que un fitxer és un fitxer opendocument.text, podeu desar-lo amb l'extensió ODT i obrir-lo a l'escriptor de l'LibreOffice.

En cas que no sabeu que un fitxer ODT és bàsicament un fitxer comprimit. Si canvieu el nom de la vostra llista de fitxers a la vostra adreça de cerca de fitxers.zip, podeu obrir-la en una eina d'arxiu i fins i tot descomprimir el fitxer.

Comportament alternatiu

De manera predeterminada, la comanda cadenes retorna totes les cadenes d'un fitxer, però podeu canviar el comportament de manera que retorna cadenes de les seccions de dades inicialitzades i carregades en un fitxer.

Què significa això exactament? Ningú no sap que ho sap.

Té sentit assumir que està utilitzant cadenes per intentar trobar el tipus de fitxer o buscar text específic en un fitxer.

Si al executar l'ordre de cadenes utilitzant el comportament predeterminat no obté la sortida que esperava, llavors intenteu executar una de les ordres següents per veure si fa la diferència:

cadenes-de la vostra filename

cadenes: dades del teu nom

La pàgina de manual indica que l'ordre anterior pot ajudar a reduir la quantitat d'escombraries retornats de les cadenes.

La comanda "cadenes" es pot configurar per a treballar en reversa, de manera que l'opció menys l'interruptor d sigui el comportament predeterminat. Si aquest és el cas del vostre sistema, podeu tornar totes les dades utilitzant l'ordre següent:

cadenes -a vostra filename

Format de sortida

Podeu obtenir el text de la sortida per mostrar el nom del fitxer al costat de cada línia de text.

Per fer-ho, executeu una de les ordres següents:

cadenes-de la vostra filename

cadenes --print-file-name yourfilename

La sortida ara es veurà així:

el teu nom de fitxer: un text

el teu nom de fitxer: una altra peça de text

Com a part de la sortida també es pot mostrar el desplaçament d'on apareix aquest text en un fitxer. Per fer-ho executeu el següent comandament:

cadenes-o el vostre nom de fitxer

La sortida es veurà així:

16573 el vostre

Text 17024

El desplaçament és en realitat el desplaçament octal, encara que depenent de com s'hagin compilat les cadenes per al vostre sistema, podria ser fàcilment el hexadecimal o el desplaçament decimal.

Una forma més precisa d'obtenir el desplaçament que desitgeu és utilitzar les següents ordres:

cadenes -td yourfilename

cadenes - al vostre nom de fitxer

cadenes, el teu nom de fitxer

El menys t significa retornar el desplaçament i el caràcter que segueix determina el tipus de compensació. (és a dir, d = decimal, o = octal, h = hex).

Per defecte, el comandament de cadenes imprimeix cada cadena nova en una nova línia, però podeu configurar el delimitador que trieu. Per exemple, per utilitzar un símbol de canonada ("|"), ja que el delimitador executa l'ordre següent:

cadenes -s "|" el teu nom de nom

Ajusteu el límit de cadena

L'ordre de cadenes per defecte busca una cadena de 4 caràcters imprimibles seguits. Podeu ajustar el valor predeterminat de manera que només retorna una cadena amb 8 caràcters imprimibles o 12 caràcters imprimibles.

En ajustar aquest límit, podeu adaptar la sortida per obtenir el millor resultat possible. Si busqueu una cadena massa llarga, corre el risc d'ometre un text útil però, per fer-ho massa curt, potser acabeu amb una mica més de brossa retornada.

Per ajustar el límit de cadena, executeu el següent comandament:

cadenes -n 8 el teu nom de fitxer

En l'exemple anterior he canviat el límit a 8.

Podeu reemplaçar 8 amb el número que vulgueu.

També podeu utilitzar l'ordre següent per fer el mateix:

cadenes --bytes = 8 nom de fitxer

Inclou espais en blanc

Per defecte, la comanda string conté espais en blanc, com ara una pestanya o un espai com a caràcter imprimible. Per tant, si teniu una cadena que diu "el gat estava assegut a la catifa", l'ordre de les cadenes tornaria tot el text.

Els caràcters de línia nova i els retorns de carro no es consideren caràcters imprimibles de manera predeterminada.

Per obtenir les cadenes per reconèixer nous caràcters de línia i retorns de carro com a cadenes d'execució de caràcters imprimibles de la següent manera:

cadenes-en nom teu

Canvieu la codificació

Hi ha 5 opcions de codificació disponibles per al seu ús amb cadenes:

El valor predeterminat és el byte de 7 bits.

Per canviar la codificació, executeu el següent comandament:

cadenes -és el teu nom de fitxer

cadenes --encoding = s yourfilename

A l'ordre anterior, he especificat el valor predeterminat "s" que significa 7 bit byte. Simplement reemplaça la "s" amb la lletra de codificació de la teva elecció.

Canvieu el nom de la descripció del fitxer binari

Podeu canviar el comportament de les cadenes perquè utilitzi una biblioteca de descàrregues de fitxers binària diferent de la que s'ofereix al vostre sistema.

Aquest canvi és un per als experts. Si teniu una altra biblioteca a utilitzar, podeu fer-ho executant les següents cadenes:

cadenes-T bfdname

Opcions de lectura d'un fitxer

Si utilitzeu les mateixes opcions cada vegada, no voleu que hàgiu d'especificar tots els commutadors cada vegada que executeu l'ordre perquè triga el temps.

El que podeu fer és crear un fitxer de text mitjançant nano i especificar les opcions dins d'aquest fitxer.

Per provar-ho en un terminal, executeu el següent comandament:

nano stringsopts

Al fitxer introduïu el text següent:

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

Deseu el fitxer prement CTRL i O i sortiu prement CTRL i X.

Per executar les ordres de cadenes amb aquestes opcions, executeu el següent comandament:

cadenes @stringsopts yourfilename

Les opcions seran llegides a partir dels fitxers de cadena de fitxers i hauríeu de veure el nom de fitxer abans de cada cadena, el desplaçament i el "|" com a separador.

Obtenció d'ajuda

Si voleu llegir més sobre cadenes, podeu executar l'ordre següent per obtenir ajuda.

cadenes - ajuda

També podeu llegir la pàgina del manual:

cadenes d'home

Esbrineu quina versió de cadenes s'està executant

Per trobar la versió de les cadenes que executeu executeu una de les ordres següents:

cadenes -v

cadenes -V

cadenes --versió