Aprende cómo funciona depix, una herramienta que le ayuda a recuperar información de capturas de pantalla pixeladas usando Depix.

Cómo recuperar información de capturas de pantalla pixeladas usando Depix con Python

Sí, bueno, ¿por qué intentarías obtener información del texto de una imagen que ha sido pixelada usando un editor de imágenes? Normalmente, estarías asustado si supieras que la información que estás tratando de ocultar podría ser obtenida por alguna persona malintencionada, sin embargo, tal cosa es imposible, ¿verdad? ... ¿¿¿¿¿¿Verdad?????? Hace un par de meses, Sipke Mellema, consultor de seguridad de información demostró que es posible determinar el texto de una imagen que ha sido pixelada a través de un algoritmo determinista.

Depix es una herramienta increíble e innovadora para recuperar datos de capturas de pantalla pixeladas que probablemente podrían asustarte muchísimo. Funciona sobre las imágenes que fueron pixeladas a través de un filtro de caja lineal. Para obtener más información sobre Depix, visita el repositorio oficial en Github aquí.

Cómo usarlo

  1. Debes extraer los bloques pixelados de la captura de pantalla que está pixelada, solo el texto.
  2. Necesitarás una imagen con la misma fuente, tamaño de fuente, color y estilo que se utilizó antes de la pixelación, esto aumentará las posibilidades de obtener algo que tenga sentido. Esta imagen contendrá una secuencia de De Bruijn de todos los caracteres posibles que se pueden reconocer en la imagen pixelada.
  3. Utiliza Depix con las 2 imágenes de entrada que tienes.

Teniendo esto en cuenta, comencemos con el ejemplo más simple para mostrar cómo funciona esta biblioteca. Comienza a clonar el código fuente de Depix con git:

git clone https://github.com/beurtschipper/Depix.git

Debes instalar Pillow antes de usar Depix. Si no está instalado en su sistema, instálelo con las siguientes instrucciones (tenga en cuenta que necesitas Python 3):

python -m pip install --upgrade Pillow

El siguiente comando ejecutará la prueba predeterminada que puede encontrar en el repositorio. Cambia al directorio donde clonaste el código fuente y ejecute el siguiente comando:

python depix.py -p "./images/testimages/testimage3_pixels.png" -s "./images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png" -o output.png

La imagen de entrada, configurada con el parámetro -p será la siguiente (testimage3_pixels.png):

Input Image Pixelized Depix

La versión original de la imagen es la siguiente, por lo que puedes mantener una referencia de lo que debería ser la salida:

Original Unpixelated Image

Luego, especifica la fuente de los caracteres (debruinseq_notepad_Windows10_closeAndSpaced.png) con -s, que es la siguiente imagen:

Characters Map Debruijn Sequence Depix

Entonces, con los parámetros que proporcionamos, la imagen de salida (output.png) creada por Depix será la siguiente:

Unpixelated Image with Depix

Increíble, ¿no? Puedes identificar el texto "Hello from the other side" que solía estar originalmente en la imagen.

Que no es esta herramienta

Depix no es una solución mágica que descubrirá automáticamente el texto que ha sido pixelado por cualquier herramienta en el 100% de los casos. Hay muchos escenarios en los que simplemente no funciona y nunca lo hará (gracias a Dios por el bien de la privacidad de las personas) con la lógica actual, por ejemplo, si en lugar de pixelar la imagen con el script de Python incluido en el repositorio, decide utilizar una herramienta externa, digamos Paint.NET, utilizando una escala de pixelación de 4 a 100, la imagen pixelada será la siguiente:

Paint.net Pixelate Image Depix

Intentar extraer la información de la imagen pixelada con Depix, generaría la misma imagen pixelada, aunque el diccionario de caracteres tenga el mismo estilo de fuente, color, etc., aunque hicimos la captura de pantalla con la misma herramienta e incluso incluyó la misma frase en la imagen de los personajes. Hay otros casos en los que claramente no habrá nada que hacer, por ejemplo, ¿cómo podría extraer la información de una imagen con el mismo texto pero con un tamaño de celda mayor ?:

High Cell Size Pixelation

Ahora lo entiendes, ¿verdad? Depende también del tipo de pixelación que se usó originalmente, algunas herramientas en lugar de usar el patrón seleccionado, simplemente inyectarán píxeles aleatorios en blanco y negro, por lo que no hay un punto de entrada.

Y, por favor, no me malinterpreten, la biblioteca es totalmente impresionante y hace increíblemente bien su trabajo para una temática tan complicada como extraer información de donde no debería haberla. Bajo ciertas condiciones y entornos, seguramente encontrará cómo lograr algo con Depix.


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores