
Обнаружение и восстановление PNG-снимков Windows Snipping Tool, уязвимых для CVE-2023-28303
Обнаружение и восстановление PNG-снимков, созданных с помощью Windows Snipping Tool, уязвимых к CVE-2023-28303
SnipRecover CLI — это минимальная утилита командной строки без зависимостей, предназначенная для:
Обнаружение PNG-файлов, изменённых уязвимостью Windows Snipping Tool (CVE‑2023‑28303).
Восстановление исходного изображения путём извлечения сжатых данных, добавленных после чанка IEND.
По умолчанию восстановленные изображения используют RGBA и разрешение 1920×1080, а если путь вывода не указан, утилита записывает результат в restored-<original_name>.png.
Согласно спецификации PNG (ISO/IEC 15948), все данные изображения (чанки IDAT) должны находиться до финального чанка IEND. Windows Snipping Tool ошибочно добавляет дополнительные данные IDAT после IEND, нарушая стандарт и раскрывая полное содержимое изображения, которое было «обрезано».
Стандартная структура PNG:
Сигнатура (8 байт): 89 50 4E 47 0D 0A 1A 0A
Чанки:
IHDR: заголовок изображения (ширина, высота, тип цвета и т.д.)
IDAT: сжатые данные пикселей
IEND: маркер конца файла
Обрезанный с помощью Snipping Tool PNG содержит дополнительные байты после IEND. SnipRecover CLI обнаруживает эту аномалию и восстанавливает поток сжатия, чтобы восстановить исходное изображение.
Предварительные требования:
Шаги:
git clone https://github.com/m31r0n/SnipRecover-CLI.git
cd SnipRecover-CLI
chmod +x sniprecover
Никаких внешних библиотек не требуется — только стандартные модули Python: _struct_, _zlib_ и _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
Примечание: Если вы опустите
--width,--heightили--alpha, будут применены значения по умолчанию: 1920×1080 и RGBA. Если вы опустите--output, восстановленные изображения будут сохранены какrestored-<original_name>.png.
SnipRecover-CLI/
├── sniprecover # Main CLI executable (make sure it's executable)
└── README.md # Documentation and theory
CVE‑2023‑28303: Уязвимость Windows Snipping Tool – Microsoft Security Response Center
Спецификация PNG (ISO/IEC 15948) – W3C
MIT © 2025 – Разработано m31r0n
| Опция | Описание | По умолчанию |
|---|
--width <int> | Исходная ширина изображения | 1920 |
--height <int> | Исходная высота изображения | 1080 |
--alpha | Включить альфа-канал (RGBA) | включено |
--output <file> | Путь для сохранения восстановленного PNG | restored-<original_name>.png |