Skip to main content

Mostrar los caracteres imprimibles de un archivo con cadenas

BOTON LIMPIAR EN MACROS (Abril 2025)

BOTON LIMPIAR EN MACROS (Abril 2025)
Anonim

¿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:

  1. Creamos el archivo
  2. 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:

cuerdas -d tu nombre de archivocuerdas - datos tu nombre de archivo

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:

cuerdas -un nombre de archivo

Salida de formato

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:

cuerdas -f tu nombre de archivocadenas - nombre de archivo de impresión nombre de archivo

La salida ahora se verá algo como esto:

su nombre de archivo: un pedazo de textoNombre de archivo: otra pieza de texto

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:

cuerdas -o tu nombre de archivo

La salida se verá algo como esto:

16573 tu

17024 texto

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:

cuerdas -t d tu nombre de archivocuerdas - tu nombre de archivocuerdas -t h tu nombre de archivo

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:

cuerdas -s "|" tu nombre de archivo

Ajustar el límite de cadena

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:

cuerdas -n 8 tu nombre de archivo

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:

cuerdas --bytes = 8 tu nombre de archivo

Incluir espacios en blanco

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:

cuerdas -w nombre de tu archivo

Cambiar la codificación

Hay 5 opciones de codificación disponibles para usar con cadenas:

  • s = byte de 7 bits (utilizado para ASCII, ISO 8859)
  • S = byte de 8 bits
  • b = bigendian de 16 bits
  • l = 16 bit littleendian

El valor predeterminado es byte de 7 bits.

Para cambiar la codificación ejecuta el siguiente comando:

cuerdas - es tu nombre de archivocadenas --codificación = s tu nombre de archivo

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.

Cambiar el nombre de archivo binario Descripció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:

cuerdas -T bfdname

Opciones de lectura de un archivo

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:

nano stringsopts

En el archivo ingrese el siguiente texto:

-f -o -n 3 -s "|"

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:

cuerdas @stringsopts tu nombre de archivo

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

Obteniendo ayuda

Si desea leer más sobre cadenas, puede ejecutar el siguiente comando para obtener ayuda.

cuerdas - ayuda

Alternativamente también puede leer la página del manual:

cuerdas de hombre

Averigüe qué versión de cadenas está ejecutando

Para encontrar la versión de las cadenas que está ejecutando, ejecute uno de los siguientes comandos:

cuerdas -vcuerdas -Vcuerdas --version