Mostra i caratteri stampabili di un file con stringhe

Hai mai provato ad aprire un file in un editor solo per scoprire che contiene contenuto binario illeggibile?

Il comando "stringhe" di Linux rende possibile visualizzare i caratteri leggibili dall'uomo all'interno di qualsiasi file.

Lo scopo principale dell'utilizzo del comando "stringhe" è capire che tipo di file stai guardando, ma puoi anche usarlo per estrarre il testo. Ad esempio, se hai un file da un programma proprietario che salva i file in uno strano formato binario, puoi usare "stringhe" per estrarre il testo che hai inserito nel file.


Esempio di utilizzo del comando Strings

Un ottimo modo per dimostrare la potenza del comando stringhe è creare un documento utilizzando LibreOffice Writer.

Basta aprire LibreOffice Writer e inserire del testo, quindi salvarlo nel formato ODT standard.

Ora apri una finestra di terminale (premi CTRL, ALT e T allo stesso tempo) e quindi utilizzare il comando cat per visualizzare il file come segue:

gatto yourfi

(Sostituisci yourfilename.odt con il nome del file che hai creato)

Quello che vedrai è un intero muro di testo illeggibile.

Premere la barra spaziatrice per scorrere il file. Sporadicamente in tutto il file vedrai parte del testo che hai inserito.

Il comando stringhe può essere utilizzato per visualizzare solo le parti leggibili dall'uomo.

Nella sua forma più semplice puoi eseguire il seguente comando:

stringhe yourfi

Come prima, apparirà un muro di testo, ma solo testo che puoi leggere come umano. Se sei fortunato, potrai vedere il tuo testo.

Quello che potrai vedere che è fondamentale, tuttavia, è sulla prima riga:

mimetypeapplication / vnd.oasis.

Sappiamo che il tipo di file è un file ODT di LibreOffice Writer per 2 motivi:

  1. Abbiamo creato il file
  2. L'estensione è .ODT

Immagina di non aver creato il file o di averlo trovato su un disco ripristinato e il file non ha un'estensione.

Il ripristino di Windows spesso recuperava file con nomi come 0001, 0002, 0003, ecc. Il fatto che i file siano stati recuperati è fantastico, ma cercare di capire quali fossero i tipi di quei file era un incubo.

Usando le stringhe hai la possibilità di risolvere il tipo di file. Sapere che un file è un file opendocument.text significa che puoi salvarlo con l'estensione ODT e aprirlo in LibreOffice writer.

Nel caso in cui non fossi a conoscenza, un file ODT è fondamentalmente un file compresso. Se rinomini yourfilename.odt in yourfilename.zip, puoi aprirlo in uno strumento di archiviazione e persino decomprimere il file.


Comportamenti alternativi

Per impostazione predefinita, il comando strings restituisce tutte le stringhe all'interno di un file, ma è possibile cambiare il comportamento in modo che restituisca le stringhe dalle sezioni di dati caricate e inizializzate in un file.

Cosa significa esattamente questo? Nessuno sembra saperlo.

Ha senso presumere che si stiano utilizzando stringhe per cercare di scoprire il tipo di file o per cercare un testo specifico in un file.

Se quando esegui il comando stringhe utilizzando il comportamento predefinito non ottieni l'output che speravi, prova a eseguire uno dei seguenti comandi per vedere se fa la differenza:

stringa

or

stringhe: dati nomefile

La pagina di manuale afferma che il comando precedente può aiutare a ridurre la quantità di spazzatura restituita dalle stringhe.

Il comando "stringhe" può essere impostato per funzionare al contrario in modo che l'opzione meno d sia il comportamento predefinito. Se questo è il caso del tuo sistema, puoi restituire tutti i dati utilizzando il seguente comando:

stringa


Formattazione dell'output

È possibile ottenere il testo all'interno dell'output per visualizzare il nome del file accanto a ciascuna riga di testo.

A tale scopo, eseguire uno dei seguenti comandi:

stringa

or

stringhe - print-nome-file nomefile

L'output ora sarà simile a questo:

nomefile: un pezzo di testo

or

nomefile: un altro pezzo di testo

Come parte dell'output, puoi anche visualizzare l'offset del punto in cui il testo appare in un file. Per farlo, esegui il seguente comando:

stringa

L'output sarà simile a questo:

L'offset è in realtà l'offset ottale sebbene a seconda di come le stringhe sono state compilate per il tuo sistema potrebbe facilmente essere anche l'offset esadecimale o decimale.

Un modo più accurato per ottenere l'offset desiderato è utilizzare i seguenti comandi:

stringhe -td nomefile
stringhe-al nomefile
stringhe -th nomefile

Il meno t significa restituire l'offset e il carattere che segue determina il tipo di offset. (cioè d = decimale, o = ottale, h = esadecimale).

Per impostazione predefinita, il comando stringhe stampa ogni nuova stringa su una nuova riga ma puoi impostare il delimitatore di tua scelta. Ad esempio, per utilizzare un simbolo pipe ("|") come delimitatore, eseguire il seguente comando:

stringhe -s "| &


Regola il limite delle corde

Il comando stringhe per impostazione predefinita cerca una stringa di 4 caratteri stampabili in una riga. È possibile regolare l'impostazione predefinita in modo che restituisca solo una stringa con 8 caratteri stampabili o 12 caratteri stampabili.

Regolando questo limite è possibile adattare l'output per ottenere il miglior risultato possibile. Cercando una stringa troppo lunga rischi di omettere testo utile, ma rendendola troppo corta potresti ritrovarti con molta più spazzatura restituita.

Per regolare il limite di stringhe eseguire il seguente comando:

stringhe

Nell'esempio precedente, ho modificato il limite in 8. Puoi sostituire 8 con il numero che preferisci.

Puoi anche usare il seguente comando per fare la stessa cosa:

stringhe - byte & #


Includi spazi vuoti

Per impostazione predefinita, il comando stringhe include uno spazio vuoto come una tabulazione o uno spazio come carattere stampabile. Quindi se hai una stringa che si legge come "il gatto seduto sul tappeto", il comando stringhe restituirà l'intero testo.

I caratteri di nuova riga e i ritorni a capo non sono considerati caratteri stampabili per impostazione predefinita.

Per fare in modo che le stringhe riconoscano i nuovi caratteri di riga e i ritorni a capo come caratteri stampabili, eseguire le stringhe nel modo seguente:

stringa

Modifica la codifica

Sono disponibili 5 opzioni di codifica da utilizzare con le stringhe:

  • s = byte a 7 bit (utilizzato per ASCII, ISO 8859)
  • S = byte a 8 bit
  • b = 16 bit bigendian
  • l = 16 bit littleendian

L'impostazione predefinita è un byte a 7 bit.

Per modificare la codifica eseguire il seguente comando:

stringhe -es nomefile
stringhe --encoding = s nomefile

Nel comando precedente, ho specificato la "s" di default che significa byte a 7 bit. Sostituisci semplicemente la "s" con la lettera di codifica che preferisci.

Modificare il nome della descrizione del file binario

È possibile modificare il comportamento delle stringhe in modo che utilizzino una libreria di descrittori di file binari diversa da quella fornita per il sistema.

Questo interruttore è per gli esperti. Se hai un'altra libreria da usare, puoi farlo eseguendo il seguente comando string:

st

Opzioni di lettura da un file

Se intendi utilizzare le stesse opzioni ogni volta, non devi specificare tutte le opzioni ogni volta che esegui il comando perché richiede tempo.

Quello che puoi fare è creare un file di testo usando nano e specificare le opzioni all'interno di quel file.

Per provarlo all'interno di un terminale, esegui il seguente comando:

Nel file inserisci il seguente testo:

-f -o -n

Salvare il file premendo CTRL e O e uscire premendo CTRL e X.

Per eseguire i comandi delle stringhe con queste opzioni eseguire il comando seguente:

stringhe @strings

Le opzioni verranno lette dal file stringsopts e dovresti vedere il nome del file prima di ogni stringa, l'offset e il carattere "|" come separatore.

Come ottenere assistenza

Se vuoi saperne di più sulle stringhe puoi eseguire il seguente comando per ottenere aiuto.

In alternativa, puoi anche leggere la pagina di manuale:

Scopri quale versione di stringhe stai eseguendo

Per trovare la versione delle stringhe in esecuzione, eseguire uno dei seguenti comandi:

stringhe -v
stringhe -V
stringhe - versione


Pagine utili:

Informazioni sul formato .ost

Lascia un commento