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?
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:
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 binarioSINOSSI
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]
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
Il comando od può fare questo:
od -c *filename*
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 FILEo
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).