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.
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:
Pruebas del sistema de archivos: examina los resultados de llamadas al sistema como stat()
Números mágicos: busca bytes específicos en ubicaciones particulares que identifican formatos
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!