Share
## https://sploitus.com/exploit?id=92CCBBB4-AEF4-5BF3-93D9-175A4704981C
# SnipRecover CLI
> **Detection and restoration of Windows Snipping Tool PNG captures vulnerable to CVE-2023-28303**
**SnipRecover CLI** is a minimal, dependency-free command-line utility designed to:
- **Detect** PNG files modified by the Windows Snipping Tool vulnerability (CVE‑2023‑28303).
- **Restore** the original image by recovering compressed data appended after the `IEND` chunk.
By default, restored images use **RGBA** and a resolution of **1920×1080**, and if no output path is specified, the tool writes to `restored-<original_name>.png`.
---
## 🧠 Theoretical Background
According to the PNG specification ([ISO/IEC 15948](https://www.w3.org/TR/PNG)), all image data (`IDAT` chunks) must appear **before** the final `IEND` chunk. Windows Snipping Tool mistakenly appends additional `IDAT` data **after** `IEND`, violating the standard and exposing the full image content that was “cropped.”
**Standard PNG structure:**
1. **Signature (8 bytes):** `89 50 4E 47 0D 0A 1A 0A`
2. **Chunks:**
- `IHDR`: image header (width, height, color type, etc.)
- `IDAT`: compressed pixel data
- `IEND`: end-of-file marker
A Snipping Tool–cropped PNG contains **extra bytes** beyond `IEND`. SnipRecover CLI detects this anomaly and reconstructs the compression stream to recover the original image.
---
## 🚀 Installation
**Prerequisites:**
- Python 3.10 or newer
**Steps:**
```
git clone https://github.com/m31r0n/SnipRecover-CLI.git
cd SnipRecover-CLI
chmod +x sniprecover
```
_No external libraries are needed—only Python’s standard_ `_struct_`_,_ `_zlib_`_, and_ `_io_` _modules._
---
## ⚙️ Usage
```
# 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
```
> **Note:** If you omit `--width`, `--height`, or `--alpha`, defaults of **1920×1080** and **RGBA** are applied. If you omit `--output`, restored images are saved as `restored-<original_name>.png`.
---
## 🔧 Restore Options
|Option|Description|Default|
|---|---|---|
|`--width <int>`|Original image width|`1920`|
|`--height <int>`|Original image height|`1080`|
|`--alpha`|Include alpha channel (RGBA)|enabled|
|`--output <file>`|Path to save the restored PNG|`restored-<original_name>.png`|
---
## 📁 Project Structure
```
SnipRecover-CLI/
├── sniprecover # Main CLI executable (make sure it's executable)
└── README.md # Documentation and theory
```
---
## 🔗 References
- **CVE‑2023‑28303**: Windows Snipping Tool vulnerability – Microsoft Security Response Center
- **PNG Specification** (ISO/IEC 15948) – W3C
---
## 📜 License
MIT © 2025 – Developed by m31r0n