Guardare all'interno di un file binario/eseguibile per afferrare stringhe leggibili dall'uomo non è il tipo di lavoro che fanno tutti, ma cosa succede se ti viene chiesto di farlo? Aprire il file in un editor e cercare manualmente le cose non è una soluzione elegante. Quindi che si fa? Sì, hai indovinato:esiste un'utilità da riga di comando che fa questo per te.
Lo strumento in questione è denominato Stringhe e in questo tutorial discuteremo le basi di questo comando usando alcuni esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi in questo articolo sono stati testati su una macchina Ubuntu 16.04 LTS.
Comando Linux Strings
Il comando Stringhe fondamentalmente stampa le stringhe di caratteri stampabili nei file. Di seguito è riportata la sua sintassi:
strings [OPTIONS] FILENAME
Ed ecco come lo descrive la pagina man dello strumento:
For each file given, GNU strings prints the printable character
sequences that are at least 4 characters long (or the number given with
the options below) and are followed by an unprintable character.
Depending upon how the strings program was configured it will default
to either displaying all the printable sequences that it can find in
each file, or only those sequences that are in loadable, initialized
data sections. If the file type in unrecognizable, or if strings is
reading from stdin then it will always display all of the printable
sequences that it can find.
For backwards compatibility any file that occurs after a command line
option of just - will also be scanned in full, regardless of the
presence of any -d option.
strings is mainly useful for determining the contents of non-text
files.
Di seguito sono riportati alcuni esempi in stile Domande e risposte che dovrebbero darti una buona idea su come funziona il comando Stringhe.
Q1. Come utilizzare il comando stringhe?
L'utilizzo di base è abbastanza semplice:basta passare il nome del file come input ed eseguire il comando.
Tieni presente che poiché Strings viene utilizzato principalmente per estrarre informazioni da file binari/eseguibili, utilizzeremo uno di questi file in tutti i nostri esempi.
Ad esempio:
strings test
Ecco l'output prodotto da questo comando sul mio sistema:
Q2. Come forzare un limite di caratteri personalizzato?
Come spiegato all'inizio, il comportamento predefinito dello strumento Stringhe consiste nel stampare solo sequenze di caratteri che contengano almeno 4 caratteri. Tuttavia, se lo desideri, puoi modificare questo limite utilizzando l'opzione della riga di comando -n (che richiede di passare un numero che indica il nuovo limite).
Ad esempio, se vuoi impostare il limite su 2, ecco come puoi farlo:
strings -n 2 test
Quindi ora puoi vedere anche due e tre stringhe di caratteri nell'output.
T3. Come fare in modo che le stringhe stampino l'offset delle sequenze di caratteri?
Se si desidera che le stringhe visualizzino anche gli offset delle sequenze di caratteri visualizzate in output, è possibile farlo utilizzando l'opzione della riga di comando -t, che richiede di fornire un input di carattere singolo che specifichi la radice dell'offset - 'o' per ottale, 'x' per esadecimale o 'd' per decimale.
Ad esempio:
strings -t d test
Ed ecco l'output che ha prodotto sul mio sistema:
Quindi puoi vedere che le stringhe in output sono ora precedute dai rispettivi offset.
Q4. Come fare in modo che le stringhe eseguano la scansione dell'intero file?
A seconda di come è stato configurato Strings, potrebbe scansionare o meno l'intero file di input. Tuttavia, se vuoi essere assolutamente sicuro che lo strumento legga il file completo (e non solo le sezioni di dati caricabili e inizializzate), usa l'opzione della riga di comando -a.
Ad esempio:
strings -a test
Al contrario, se si desidera che le stringhe visualizzino solo le stringhe delle sezioni di dati inizializzate e caricate nel file, utilizzare l'opzione della riga di comando -d.
strings -d test
Q5. Come cambiare il separatore?
Come avrai osservato, per impostazione predefinita, il separatore utilizzato da Strings è una nuova riga. Tuttavia, se lo desideri, puoi avere un separatore personalizzato utilizzando l'opzione della riga di comando -s.
Ad esempio:
strings -s [[[]]] test
Conclusione
Il comando Strings è uno strumento estremamente utile se ti interessa cercare file binari/eseguibili per informazioni utili. Abbiamo discusso alcune importanti opzioni della riga di comando qui. Quindi esercitati e, una volta terminato, vai alla pagina man dello strumento per ulteriori informazioni.