¿Alguna vez ha intentado abrir un archivo en un editor solo para descubrir que contiene contenido binario ilegible?
El comando de "cadenas" de Linux permite ver los caracteres legibles por humanos en cualquier archivo.
El propósito principal de usar el comando "cadenas" es determinar qué tipo de archivo está viendo, pero también puede usarlo para extraer texto. Por ejemplo, si tiene un archivo de un programa propietario que guarda los archivos en un formato binario extraño, puede usar "cadenas" para extraer el texto que ingresa en el archivo.
Ejemplo de uso del comando de cadenas
Una excelente manera de demostrar el poder del comando de cadenas es crear un documento utilizando LibreOffice Writer.
Simplemente abra LibreOffice Writer e ingrese un texto y luego guárdelo en el formato ODT estándar.
Ahora abra una ventana de terminal (presione CTRL, ALT y T al mismo tiempo) y luego use el comando cat para mostrar el archivo de la siguiente manera:
gato tu nombre de archivo.odt | Más
(Reemplace el yourfilename.odt con el nombre del archivo que creó)
Lo que verás es todo un muro de texto ilegible.
Presiona la barra espaciadora para desplazarte por el archivo. Esporádicamente a lo largo del archivo, verá parte del texto que ha ingresado.
El comando de cadenas se puede usar para mostrar solo las partes que son legibles por humanos.
En su forma más simple puedes ejecutar el siguiente comando:
cuerdas yourfilename.odt | Más
Como antes, aparecerá una pared de texto, pero solo texto que puede leer como humano. Si tienes suerte, podrás ver tu texto.
Lo que podrás ver que es clave, sin embargo, está en la primera línea:
mimetypeapplication / vnd.oasis.opendocument.text
Sabemos que el tipo de archivo es un archivo ODT de LibreOffice Writer por 2 razones:
- Creamos el archivo
- La extensión es .ODT
Imagina que no creaste el archivo o que lo encontraste en un disco recuperado y que el archivo no tenía una extensión.
La recuperación de Windows a menudo recuperaría archivos con nombres como 0001, 0002, 0003, etc. El hecho de que los archivos se hayan recuperado es excelente, pero tratar de averiguar qué tipo de archivos eran una pesadilla.
Al usar cadenas, tiene la posibilidad de resolver el tipo de archivo. Saber que un archivo es un archivo opendocument.text significa que puede guardarlo con la extensión ODT y abrirlo en el escritor LibreOffice.
En caso de que no sepas, un archivo ODT es básicamente un archivo comprimido. Si cambia el nombre de su nombre de archivo.odt a su nombre de archivo.zip, puede abrirlo en una herramienta de archivo e incluso descomprimir el archivo.
Conductas alternativas
De forma predeterminada, el comando de cadenas devuelve todas las cadenas dentro de un archivo, pero puede cambiar el comportamiento para que devuelva cadenas de las secciones de datos cargadas inicializadas en un archivo.
Que significa exactamente? Nadie parece saberlo.
Tiene sentido suponer que está utilizando cadenas para intentar encontrar el tipo de archivo o buscar un texto específico en un archivo.
Si al ejecutar el comando de cadenas utilizando el comportamiento predeterminado no obtiene la salida que esperaba, intente ejecutar uno de los siguientes comandos para ver si hay una diferencia:
La página del manual indica que el comando anterior puede ayudar a reducir la cantidad de basura devuelta por las cadenas. El comando "cadenas" se puede configurar para que funcione de manera inversa, de modo que el interruptor menos d sea el comportamiento predeterminado. Si este es el caso de su sistema, puede devolver todos los datos con el siguiente comando: Puede obtener el texto dentro de la salida para mostrar el nombre del archivo junto a cada línea de texto. Para hacer esto ejecuta uno de los siguientes comandos: La salida ahora se verá algo como esto: Como parte de la salida, también puede mostrar el desplazamiento de dónde aparece ese texto en un archivo. Para ello ejecuta el siguiente comando: La salida se verá algo como esto: El desplazamiento es en realidad el desplazamiento octal, aunque dependiendo de cómo se hayan compilado las cadenas para su sistema, también podría ser fácilmente el desplazamiento hexadecimal o decimal. Una forma más precisa de obtener el desplazamiento que desea es usar los siguientes comandos: El signo menos t significa devolver el desplazamiento y el carácter que sigue determina el tipo de desplazamiento. (es decir, d = decimal, o = octal, h = hex). De forma predeterminada, el comando de cadenas imprime cada nueva cadena en una nueva línea, pero puede configurar el delimitador de su elección. Por ejemplo, para usar un símbolo de tubería ("|") como delimitador, ejecute el siguiente comando: El comando de cadenas de forma predeterminada busca una cadena de 4 caracteres imprimibles en una fila. Puede ajustar el valor predeterminado para que solo devuelva una cadena con 8 caracteres imprimibles o 12 caracteres imprimibles. Al ajustar este límite, puede adaptar la salida para obtener el mejor resultado posible. Al buscar una cadena que es demasiado larga, se arriesga a omitir texto útil, pero al hacerla demasiado corta podría terminar con mucho más correo basura devuelto. Para ajustar el límite de cadena ejecute el siguiente comando: En el ejemplo anterior he cambiado el límite a 8.Puede reemplazar 8 con el número de su elección. También puedes usar el siguiente comando para hacer lo mismo: De forma predeterminada, el comando de cadenas incluye espacios en blanco como una pestaña o espacio como un carácter imprimible. Por lo tanto, si tiene una cadena que dice "el gato se sentó en el tapete", el comando de cadenas devolverá todo el texto. Los nuevos caracteres de línea y los retornos de carro no se consideran caracteres imprimibles de forma predeterminada. Para que las cadenas reconozcan nuevas líneas de caracteres y retornos de carro como caracteres imprimibles, ejecute las cadenas de la siguiente manera: Hay 5 opciones de codificación disponibles para usar con cadenas: El valor predeterminado es byte de 7 bits. Para cambiar la codificación ejecuta el siguiente comando: En el comando anterior, he especificado la "s" predeterminada, que significa 7 bytes de bit. Simplemente reemplace la "s" con la letra de codificación de su elección. Puede cambiar el comportamiento de las cadenas para que utilice una biblioteca de descriptores de archivos binarios diferente a la que se proporciona para su sistema. Este interruptor es uno de los expertos. Si tiene otra biblioteca para usar, puede hacerlo ejecutando el siguiente comando de cadenas: Si va a usar las mismas opciones cada vez, no querrá tener que especificar todos los modificadores cada vez que ejecute el comando porque esto lleva tiempo. Lo que puede hacer es crear un archivo de texto usando nano y especificar las opciones dentro de ese archivo. Para probar esto dentro de un terminal ejecute el siguiente comando: En el archivo ingrese el siguiente texto: Guarde el archivo presionando CTRL y O y salga presionando CTRL y X. Para ejecutar los comandos de cadenas con estas opciones, ejecute el siguiente comando: Las opciones se leerán desde el archivo stringsopts y debería ver el nombre del archivo antes de cada cadena, el desplazamiento y la "|" como separador Si desea leer más sobre cadenas, puede ejecutar el siguiente comando para obtener ayuda. Alternativamente también puede leer la página del manual: Para encontrar la versión de las cadenas que está ejecutando, ejecute uno de los siguientes comandos:cuerdas -d tu nombre de archivo
cuerdas - datos tu nombre de archivocuerdas -un nombre de archivo
Salida de formato
cuerdas -f tu nombre de archivo
cadenas - nombre de archivo de impresión nombre de archivosu nombre de archivo: un pedazo de texto
Nombre de archivo: otra pieza de textocuerdas -o tu nombre de archivo
16573 tu
17024 texto
cuerdas -t d tu nombre de archivo
cuerdas - tu nombre de archivocuerdas -t h tu nombre de archivocuerdas -s "|" tu nombre de archivo
Ajustar el límite de cadena
cuerdas -n 8 tu nombre de archivo
cuerdas --bytes = 8 tu nombre de archivo
Incluir espacios en blanco
cuerdas -w nombre de tu archivo
Cambiar la codificación
cuerdas - es tu nombre de archivo
cadenas --codificación = s tu nombre de archivo Cambiar el nombre de archivo binario Descripción
cuerdas -T bfdname
Opciones de lectura de un archivo
nano stringsopts
-f -o -n 3 -s "|"
cuerdas @stringsopts tu nombre de archivo
Obteniendo ayuda
cuerdas - ayuda
cuerdas de hombre
Averigüe qué versión de cadenas está ejecutando
cuerdas -v
cuerdas -Vcuerdas --version