Google libera Magika, un sistema para la identificación de tupos de fichero con inteligencia artificial. Pensado para ayudar a diferenciar o detectar de forma precisa los ficheros binarios y textuales.
Magika emplea un modelo de aprendizaje altamente optimizado que le permite hacer la detección precisa en milisegundos.
Puedes probar en versión demo a través de la web o instalarte una librería Python o un ejecutable basadpo en Python (la opción más rápida). Para ello debes dirigirte a:
https://google.github.io/magika
O si prefieres la opción Pytjon:
pip install magika
Con lo que tendrás disponible el comando magika de forma inmediata para usarlo desde la línea de comandos.
Por qué identificar el tipo de archivo es difícil
Desde los inicios de la computación, la detección precisa del tipo de archivos ha sido crucial para determinar cómo procesar los archivos. Linux viene equipado con libmagic y la herramienta file, que desde hace más de 50 años han sido la referencia estándar para la identificación de tipos de archivos. Hoy en día navegadores web, editores de código y numerosas otras aplicaciones se basan en la detección de tipos de archivo para decidir cómo representar un archivo correctamente. Por ejemplo, los editores de código utilizan la detección de tipos de archivo para elegir el esquema de coloración de sintaxis a medida que el desarrollador comienza a escribir en un nuevo archivo.
La detección de tipos de archivos precisa es un problema notoriamente difícil porque cada formato de archivo tiene una estructura diferente, o no tiene estructura en absoluto. Esto es especialmente desafiante para formatos textuales y lenguajes de programación, ya que tienen constructos muy similares. Hasta ahora, libmagic y la mayoría de las herramientas de identificación de tipos de archivo han estado basadas en una colección manual de heurísticas y reglas personalizadas para detectar cada formato de archivo.
Esta aproximación manual consume mucho tiempo y tiende a errores, ya que resulta difícil para los humanos crear reglas generales a mano. En particular en aplicaciones de seguridad, crear detecciones confiables es especialmente desafiante, puesto que los atacantes intentan confundir la detección con cargas útiles diseñadas maliciosamente.
Magika ofrece una calidad de detección superior a otras herramientas existentes al evaluarla en un conjunto de prueba de 1M archivos que abarca más de 100 formatos de archivo.
Y nosotros la hemos probado con varias carpetas repletas de ficheros diversos, como por ejmplo la típica carpeta de descardas y el resultado es:

y estas son las opciones de que dispone:
Options:
-r, --recursive When passing this option, magika scans every file within directories, instead of outputting "directory"
--json Output in JSON format.
--jsonl Output in JSONL format.
-i, --mime-type Output the MIME type instead of a verbose content type description.
-l, --label Output a simple label instead of a verbose content type description. Use --list-output-
content-types for the list of supported output.
-c, --compatibility-mode Compatibility mode: output is as close as possible to file and colors are disabled.
-s, --output-score Output the prediction's score in addition to the content type.
-m, --prediction-mode [best-guess|medium-confidence|high-confidence]
--batch-size INTEGER How many files to process in one batch.
--no-dereference This option causes symlinks not to be followed. By default, symlinks are dereferenced.
--colors / --no-colors Enable/disable use of colors.
-v, --verbose Enable more verbose output.
-vv, --debug Enable debug logging.
--generate-report Generate report useful when reporting feedback.
--version Print the version and exit.
--list-output-content-types Show a list of supported content types.
--model-dir DIRECTORY Use a custom model.
-h, --help Show this message and exit.
A pesar de ser interesante no es todo lo completa que uno desearía. Por ejemplo en el caso de las imágenes no aporta ninguna información tal como resolución, datos EXIF, etc.
Para más información sobre formatos de ficheros consulta nuestro pasado artículo: https://pixeleditions.com/formatos-de-fichero-ebooks-comics-etc/