
Detección y restauración de capturas PNG de Windows Snipping Tool vulnerables a CVE-2023-28303
Detección y restauración de capturas PNG de la Herramienta Recortes de Windows vulnerables a CVE-2023-28303
SnipRecover CLI es una utilidad de línea de comandos mínima y sin dependencias, diseñada para:
Detectar archivos PNG modificados por la vulnerabilidad de la Herramienta Recortes de Windows (CVE-2023-28303).
Restaurar la imagen original recuperando los datos comprimidos añadidos después del chunk IEND.
Por defecto, las imágenes restauradas usan RGBA y una resolución de 1920×1080; si no se especifica una ruta de salida, la herramienta escribe en restored-<original_name>.png.
Según la especificación PNG (ISO/IEC 15948), todos los datos de imagen (chunks IDAT) deben aparecer antes del chunk final IEND. La Herramienta Recortes de Windows añade por error datos IDAT adicionales de , violando el estándar y exponiendo el contenido completo de la imagen que fue “recortada”.
IENDEstructura PNG estándar:
Firma (8 bytes): 89 50 4E 47 0D 0A 1A 0A
Chunks:
IHDR: cabecera de la imagen (ancho, alto, tipo de color, etc.)
IDAT: datos de píxeles comprimidos
IEND: marcador de fin de archivo
Un PNG recortado con la Herramienta Recortes contiene bytes adicionales más allá de IEND. SnipRecover CLI detecta esta anomalía y reconstruye el flujo de compresión para recuperar la imagen original.
Requisitos previos:
Pasos:
git clone https://github.com/m31r0n/SnipRecover-CLI.git
cd SnipRecover-CLI
chmod +x sniprecover
No se necesitan librerías externas: solo los módulos estándar de Python _struct_, _zlib_ y _io_.
# Display help
python3 sniprecover --help
# 1. Detect vulnerable PNG(s)
python3 sniprecover detect /path/to/images/
# 2. Restore a cropped capture
python3 sniprecover restore capture.png --output restored-capture.png
Nota: Si omites
--width,--heighto--alpha, se aplican los valores predeterminados de 1920×1080 y RGBA. Si omites--output, las imágenes restauradas se guardan comorestored-<original_name>.png.
| Opción | Descripción | Por defecto |
|---|---|---|
--width <int> | Ancho de la imagen original | 1920 |
--height <int> | Alto de la imagen original | 1080 |
--alpha | Incluir canal alfa (RGBA) | habilitado |
--output <file> | Ruta para guardar el PNG restaurado | restored-<original_name>.png |
SnipRecover-CLI/
├── sniprecover # Main CLI executable (make sure it's executable)
└── README.md # Documentation and theory
CVE-2023-28303: Vulnerabilidad de la Herramienta Recortes de Windows – Microsoft Security Response Center
Especificación PNG (ISO/IEC 15948) – W3C
MIT © 2025 – Desarrollado por m31r0n