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.