Comando Linux per trovare stringhe in file binari o non ascii


39

Esiste un comando linux per estrarre tutte le stringhe ASCII da un file eseguibile o altro file binario? Immagino di poterlo fare con un grep, ma ricordo di aver sentito da qualche parte che un tale comando esisteva?

Risposte:


72

Il comando che stai cercando è strings

Il suo nome è abbastanza autoesplicativo, recupera qualsiasi stringa stampabile da un determinato file.

man strings dà:

STRINGS (1)


Stringhe NAME : trova le stringhe stampabili in un file oggetto o altro binario

SINOSSI
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]


10

Il comando stringhe è la strada da percorrere per questo particolare tipo di problemi. A volte devi anche convogliarlo per grep .

Per esempio:

strings somebinaryfile | grep textuwanttofind


3

Il comando od può fare questo:

od -c *filename*

3
sì, questo estrae i caratteri ASCII, ma in realtà non sono le stringhe. Penso che le "stringhe" siano più utili per la maggior parte dei casi.
user5336

Ya, non sapevo di quel comando, ma ora lo so! AlberT ha ottenuto il mio "+1" :-)
Kyle Brandt il

2

Un problema con l'uso delle stringhe è che non vedi i non stampabili circostanti e devi stare attento con la lunghezza minima della stringa.

Un problema durante l'utilizzo

od -c FILE
o
hexdump -C FILE
è che una sequenza può essere difficile da trovare se avvolge una linea.

Qualcosa che mi piace molto per questo è ZTreeWin in esecuzione su WINE su Linux: puoi fare molto con esso, ma la ricerca in qualsiasi file o la modifica dei file binari può essere particolarmente utile.

Il fantastico pacchetto ytree è disponibile per molte varianti Linux e Unix e ha una buona vista dump esadecimale di qualsiasi file ma non ha la ricerca di ZTreeWin (e il suo predecessore a 16 bit, XTree).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.