🔎 File: El Detective de Tipos de Archivos en Unix

Definición

file es una utilidad de Unix/Linux que examina el contenido de archivos y realiza una serie de pruebas para determinar su tipo, independientemente de la extensión del nombre de archivo. Identifica formatos de archivos, codificaciones, y proporciona información detallada sobre su estructura.


📋 Tabla de Contenidos


🧠 ¿Qué es file?

file es una herramienta fundamental en sistemas Unix/Linux que:

  • Identifica el tipo de archivo analizando su contenido, no su extensión
  • Reconoce miles de formatos de archivo diferentes
  • Detecta archivos de texto y su codificación
  • Identifica ejecutables y su arquitectura
  • Reconoce formatos de imagen, audio, video y documentos
  • Proporciona información sobre estructura de datos comprimidos y archivos

Es una de las primeras herramientas que cualquier administrador de sistemas o analista de seguridad utiliza para investigar archivos desconocidos.


🖥️ Sintaxis básica

file [opciones] [archivo...]

Ejemplo básico

file documento.txt

Muestra información sobre el tipo de archivo de documento.txt


⚙️ Opciones principales

OpciónDescripción
-b, --briefModo breve: muestra solo el tipo sin el nombre del archivo
-i, --mimeMuestra el tipo MIME del archivo
-z, --uncompressIntenta examinar dentro de archivos comprimidos
-L, --dereferenceSigue enlaces simbólicos
-f archivo, --files-from=archivoLee los nombres de archivos a analizar desde un archivo
-m archivo, --magic-file=archivoUsa un archivo de definiciones “magic” personalizado
-k, --keep-goingNo se detiene al primer acierto, continúa buscando

🚀 Ejemplos prácticos

1. Análisis básico de un archivo

file documento.txt

Resultado: documento.txt: ASCII text

2. Obtener información MIME

file --mime-type imagen.jpg

Resultado: imagen.jpg: image/jpeg

3. Analizar un directorio completo

file *

Analiza todos los archivos en el directorio actual

4. Examinar archivos comprimidos

file -z archivo.tar.gz

Muestra información sobre el archivo comprimido y su contenido

5. Formato breve sin nombre de archivo

file -b ejecutable

Resultado: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked...


🔍 Casos de uso comunes

Análisis de seguridad

file es una herramienta crucial para identificar tipos de archivos sospechosos:

  • Detectar ejecutables camuflados con extensiones falsas
  • Identificar shellcodes y payloads maliciosos
  • Verificar la integridad de archivos descargados

En análisis forense

file -i archivo_desconocido

Identifica el tipo MIME para ayudar en la clasificación de evidencias

En administración de sistemas

find /ruta -type f -exec file {} \; | grep "text"

Encuentra todos los archivos de texto en una jerarquía de directorios

En desarrollo y debugging

file ejecutable

Verifica si un ejecutable está compilado para la arquitectura correcta


🔧 Funcionamiento interno

file utiliza tres tipos de pruebas en secuencia:

  1. Pruebas del sistema de archivos: examina los resultados de llamadas al sistema como stat()
  2. Números mágicos: busca bytes específicos en ubicaciones particulares que identifican formatos
  3. Pruebas de lenguaje: para archivos de texto, intenta determinar el lenguaje de programación

El comando consulta un archivo de “firmas” llamado magic (generalmente en /usr/share/file/magic) que contiene patrones para reconocer miles de tipos de archivos diferentes.

Archivo Magic

El archivo magic contiene miles de patrones organizados jerárquicamente, con más de 6000 definiciones en sistemas modernos.


💡 Tips avanzados

Técnicas especializadas

file puede utilizarse de formas creativas en flujos de trabajo avanzados:

Analizar entrada estándar

cat archivo | file -

Analiza datos desde stdin

Crear un archivo de tipos personalizado

file -C -m mimagia

Compila un archivo magic personalizado para casos especiales

Análisis recursivo de directorios

find . -type f -exec file {} \; | sort

Analiza todos los archivos recursivamente

Filtrar por tipo específico

file * | grep "JPEG"

Encuentra todas las imágenes JPEG en el directorio actual


⚠️ Limitaciones y alternativas

Limitaciones

  • Puede dar falsos positivos con archivos muy pequeños
  • No siempre detecta correctamente formatos personalizados o nuevos
  • La información detallada varía según la versión y el sistema

Alternativas y complementos

  • exiftool: Para metadatos detallados de imágenes y otros archivos
  • binwalk: Análisis más profundo de firmware y archivos binarios
  • trid: Identificador de tipos de archivos alternativo
  • libmagic: La biblioteca subyacente que puede usarse en scripts personalizados

Para recordar

file es una herramienta indispensable para:

  • Identificar rápidamente tipos de archivos sin depender de extensiones
  • Verificar qué contiene realmente un archivo
  • Diagnosticar problemas con archivos corruptos
  • Clasificar archivos desconocidos

¡Una herramienta simple pero poderosa que debe estar en el arsenal de cualquier usuario de Linux!