Comando Linux para encontrar cadenas en archivos binarios o no ascii


39

¿Hay algún comando de Linux para extraer todas las cadenas ASCII de un archivo ejecutable u otro archivo binario? Supongo que podría hacerlo con un grep, pero ¿recuerdo haber oído en alguna parte que tal comando existía?

Respuestas:


72

El comando que estás buscando es strings

Su nombre se explica por sí mismo, recupera cualquier cadena imprimible de un archivo dado.

man strings da:

CUERDAS (1)

NOMBRE de
cadenas : busque las cadenas imprimibles en un objeto u otro archivo binario

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


10

El comando de cadenas es el camino a seguir para este tipo particular de problemas. A veces también tienes que canalizarlo a grep .

Por ejemplo:

strings somebinaryfile | grep textuwanttofind

4

El comando existe, y se llama ... ¡cadenas!


3

El comando od puede hacer esto:

od -c *filename*

3
sí, eso extrae los caracteres ASCII, pero no son realmente las cadenas, per se. Creo que 'cadenas' es más útil para la mayoría de los casos.
user5336

Sí, no sabía sobre ese comando, ¡pero ahora sí! AlberT consiguió mi '+1' :-)
Kyle Brandt el

2

Un problema con el uso de cadenas es que no se ve un entorno que no se puede imprimir y hay que tener cuidado con la longitud mínima de la cadena.

Un problema al usar

od -c ARCHIVO
o
hexdump -C ARCHIVO
es que una secuencia puede ser difícil de encontrar si envuelve una línea.

Algo que me gusta mucho de esto es que ZTreeWin se ejecuta en WINE en Linux: puede hacer mucho con él, pero la búsqueda en cualquier archivo o binarios de edición puede ser particularmente útil.

El increíble paquete ytree está disponible para muchas variantes de Linux y Unix y tiene una buena vista de volcado hexadecimal de cualquier archivo, pero no tiene la búsqueda que tienen ZTreeWin (y su predecesor de 16 bits, XTree).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.