Capturar pantallas con Greenshot, Shutter u otras herramientas y pixelar texto sensible suele estar a la orden del día. No es difícil encontrar en informes o incluso en posts en Internet pantallazos con esta información "ofuscada", incluso contraseñas. ¿Y si hubiera una herramienta que pudiera "despixelar" y descubrir ese texto en claro?
Lo habéis adivinado, Sipke Mellema ha diseñado un algoritmo y publicado una herramienta en Github para ver en claro el texto pixelado. Básicamente este algoritmo se parece bastante en su base a otros que despixelan imágenes: la técnica consiste en pixelar caracteres similares y verificar si coinciden. En su imagen de ejemplo podemos encontrar la fuente de notepad de Windows:
Esa captura de pantalla se usa como una imagen de búsqueda para bloques similares. Como veis se trata de una secuencia De Bruijn de los caracteres esperados, con combinaciones de 2 caracteres porque algunos bloques pueden superponerse. Encontrar coincidencias adecuadas requiere que exista el bloque exacto de la misma configuración de píxeles en la imagen de búsqueda. Cuando nos encontramos más letras consecutivas los bloques de múltiples coincidencias circundantes se comparan luego para que estén a la misma distancia geométrica que en la imagen pixelada. Estas coincidencias se tratan también como correctas.
Una vez que los bloques correctos no tengan más coincidencias geométricas, generará todos los bloques correctos directamente. Para bloques de múltiples coincidencias, genera el promedio de todas las coincidencias.
Su salida no es ni de lejos perfecta, pero funciona bastante bien. Veamos el uso de la herramienta y sus resultados. Partiendo de la siguiente imagen pixelada:
Ejecutamos la herramienta con la imagen de búsqueda de la secuencia De Brujin con caracteres del Bloc de notas de Windows 10 (incluida en el repo de la herramienta):
Código:
Código:$ python3 depix.py -p images/testimages/testimage3_pixels.png -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png -o output.png INFO:root:Loading pixelated image from images/testimages/testimage3_pixels.png INFO:root:Loading search image from images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png INFO:root:Finding color rectangles from pixelated space INFO:root:Found 116 same color rectangles INFO:root:86 rectangles left after moot filter INFO:root:Found 1 different rectangle sizes INFO:root:Finding matches in search image INFO:root:Removing blocks with no matches INFO:root:Splitting single matches and multiple matches INFO:root:[10 straight matches | 76 multiple matches] INFO:root:Trying geometrical matches on single-match squares INFO:root:[15 straight matches | 71 multiple matches] INFO:root:Trying another pass on geometrical matches INFO:root:[17 straight matches | 69 multiple matches] INFO:root:Writing single match results to output INFO:root:Writing average results for multiple matches to output INFO:root:Saving output image to: output.png
Y como veis el resultado es sorprendente, se puede leer perfectamente el texto en claro:
¿A qué ahora te pensarás dos veces pixelar texto en lugar de por ejemplo tacharlo completamente o superponer un rectángulo?
Github: https://github.com/beurtschipper/Depix
Por Vicente Motos en hackplayers
Marcadores