
Un conjunto de herramientas forenses de imágenes digitales de código abierto
Un conjunto de herramientas forenses de imágenes digitales de código abierto
"El análisis forense de imágenes es la aplicación de la ciencia de la imagen y la experiencia en el dominio para interpretar el contenido de una imagen y/o la imagen en sí misma en asuntos legales. Las subdisciplinas principales del análisis forense de imágenes con aplicaciones para el cumplimiento de la ley incluyen: Fotogrametría, Comparación Fotográfica, Análisis de Contenido y Autenticación de Imágenes." (Grupo de Trabajo Científico sobre Tecnologías de Imagen)
Sherloq es un proyecto de investigación personal sobre la implementación de un entorno completamente integrado para la informática forense de imágenes digitales. No está concebido como una herramienta automática que decida si una imagen es falsificada o no (¡esa herramienta probablemente nunca existirá...!), sino como un compañero para experimentar con varios algoritmos encontrados en los artículos y talleres de investigación más recientes.
Si bien muchas soluciones comerciales tienen precios minoristas elevados y a menudo están reservadas únicamente para las fuerzas del orden y agencias gubernamentales, este conjunto de herramientas pretende ser tanto un marco extensible como un punto de partida para cualquier persona interesada en realizar experimentos en esta aplicación particular del procesamiento de señales digitales.
Creo firmemente que la seguridad por oscuridad es la forma incorrecta de ofrecer cualquier tipo de servicio forense (por ejemplo, "¡Usando este software propietario le garantizo que esta foto es prístina... y usted tiene que confiar en mí!"). Siguiendo la filosofía del código abierto, todos deberían poder probar varias técnicas por sí mismos, adquirir conocimiento y compartirlo con la comunidad... ¡incluso mejor si contribuyen con mejoras en el código! :)
La primera versión fue escrita en 2015 usando C++11 para construir una utilidad de línea de comandos con muchas opciones, pero pronto resultó ser demasiado engorrosa y no muy interactiva. Esa versión se podía compilar con CMake después de instalar las bibliotecas OpenCV, Boost y AlgLib. Este primer prototipo ofrecía alrededor del 80% de las funciones planificadas (consulte a continuación la lista completa).
Si bien también incluía algoritmos novedosos, la versión de 2017 agregó principalmente una GUI multiventana basada en Qt para brindar una mejor experiencia de usuario. Se podían mostrar múltiples análisis en pantalla y se implementó un visor rápido de zoom/desplazamiento para una navegación de imágenes más fácil. Ese proyecto se podía compilar con Qt Creator con Qt 5 y OpenCV 3 y cubría aproximadamente el 70% de las funciones planificadas.
Avance rápido hasta 2020, cuando decidí portar todo a Python (PySide2 + Matplotlib + OpenCV) para un desarrollo e implementación más fáciles. Si bien esta iteración apenas comienza y aún tengo que portar todo el código anterior a la nueva plataforma, creo que esta será la "forma" final del proyecto (siempre que alguien no se ofrezca como voluntario para desarrollar una bonita aplicación web).
Estoy feliz de compartir mi código y ponerme en contacto con cualquier persona interesada en mejorarlo o probarlo, pero tenga en cuenta que este repositorio no está destinado a distribuir un producto final, mi objetivo es solo rastrear públicamente el desarrollo de una herramienta educativa sin pretensiones, ¡así que espere errores, código sin pulir y funciones faltantes! ;)
Esta lista contiene las funciones que el kit de herramientas (con suerte) proporcionará una vez que se alcance la etapa beta (NOTA: ¡las funciones que aparecen en cursiva dentro del programa aún no están implementadas!).