
Detecção e restauração de capturas PNG da Ferramenta de Captura do Windows vulneráveis a CVE-2023-28303
Detecção e restauração de capturas PNG da Ferramenta de Captura do Windows vulneráveis ao CVE-2023-28303
SnipRecover CLI é um utilitário de linha de comando mínimo, sem dependências, projetado para:
IEND.Por padrão, as imagens restauradas usam RGBA e resolução de 1920×1080, e se nenhum caminho de saída for especificado, a ferramenta escreve em restored-<original_name>.png.
De acordo com a especificação PNG (ISO/IEC 15948), todos os dados de imagem (chunks IDAT) devem aparecer antes do chunk final IEND. A Ferramenta de Captura do Windows anexa erroneamente dados IDAT adicionais após o IEND, violando o padrão e expondo o conteúdo completo da imagem que foi “cortada”.
Estrutura PNG padrão:
89 50 4E 47 0D 0A 1A 0AIHDR: cabeçalho da imagem (largura, altura, tipo de cor, etc.)IDAT: dados de pixels comprimidosIEND: marcador de fim de arquivoUm PNG cortado pela Ferramenta de Captura contém bytes extras além do IEND. O SnipRecover CLI detecta essa anomalia e reconstrói o fluxo de compressão para recuperar a imagem original.
Pré-requisitos:
Passos:
git clone https://github.com/m31r0n/SnipRecover-CLI.git
cd SnipRecover-CLI
chmod +x sniprecover
Nenhuma biblioteca externa é necessária — apenas os módulos padrão do Python _struct_, _zlib_, e _io_.
# Exibir ajuda
python3 sniprecover --help
# 1. Detectar PNG(s) vulneráveis
python3 sniprecover detect /caminho/para/imagens/
# 2. Restaurar uma captura cortada
python3 sniprecover restore capture.png --output restored-capture.png
Nota: Se você omitir
--width,--heightou--alpha, os padrões de 1920×1080 e RGBA são aplicados. Se você omitir--output, as imagens restauradas são salvas comorestored-<original_name>.png.
SnipRecover-CLI/
├── sniprecover # Executável principal da CLI (certifique-se de que seja executável)
└── README.md # Documentação e teoria
MIT © 2025 – Desenvolvido por m31r0n
| Opção | Descrição | Padrão |
|---|
--width <int> | Largura original da imagem | 1920 |
--height <int> | Altura original da imagem | 1080 |
--alpha | Incluir canal alfa (RGBA) | ativado |
--output <file> | Caminho para salvar o PNG restaurado | restored-<original_name>.png |