Проблема
Необходимо достоверно установить, подвергалось ли цифровое изображение изменению разрешения (ресайзу) или пережатию (смене качества/степени сжатия), например, для подтверждения аутентичности или оригинальности фото в ходе расследования.Причины
1. Изменение метаданных (EXIF): Редакторы изображений перезаписывают теги, связанные с оригинальным размером (PixelXDimension/PixelYDimension), датой создания и моделью камеры.2. Артефакты пережатия: Повторное сохранение в JPEG (даже с высоким качеством) оставляет характерные блочные структуры (8x8 пикселей), которые выявляются при анализе частотного спектра.
3. Нарушение корреляции шума: Сенсор камеры генерирует уникальный шумовой паттерн (PRNU — Photo Response Non-Uniformity). При ресайзе или пережатии этот паттерн нарушается, что видно при вычитании кадров.
4. Ошибки квантования: Изменение качества в JPEG приводит к рассинхронизации гистограммы коэффициентов ДКП (DCT).
Решение (легальные методы, tools для форензики)
#### 1. Анализ EXIF и прогнозируемого размера
Инструмент: ExifTool (бесплатно, кроссплатформенно).
Проверьте соответствие размера в метаданных фактическому. Если файл сжат или ресайзнут, ExifTool может выявить несоответствие тегов. Ключевой прием — сравнение поля `Image Width`/`Image Height` с фактическим разрешением файла.
exiftool
-ImageWidth -ImageHeight -FileName -DateTimeOriginal photo.jpgПризнаки:
- Оригинал с 12-Мп камеры (4000x3000) имеет размеры 4000 и 3000; после ресайза — 1920x1080.
- Отсутствие тегов `Make`/`Model` или `Software` (например, "Adobe Photoshop" вместо "Nikon").
#### 2. Выявление редакторов (strings)
Команда (Linux/macOS):
strings
photo.jpg | grep -i -E "photoshop|lightroom|gimp|pixlr|snapseed|editor" | sort -u#### 3. Анализ на артефакты двойного сжатия (Double JPEG Detection)
Инструмент: `jpegsnoop` или `foremost` + визуальный осмотр в режиме 8x8 grid.
Практический тест: Если исходник был JPEG, а затем снова сохранен как JPEG — в DCT-коэффициентах остаются два набора таблиц квантования. Используйте `jpegsnoop` (GUI, Windows) или скрипт `detect_double_jpeg.py` из пакета `forensic_tools`.
Пример вывода: "Double compression detected: first compression quality 95%, second 80%".
#### 4. Анализ PRNU (шума сенсора) для проверки размера фото
Метод: Требуется эталонное фото с той же камеры.
- Сравнивается шумовая сигнатура подозрительного фото и эталона.
- Если фото ресайзнуто — корреляция падает, а фрактальный анализ показывает билинейную/бикубическую интерполяцию (против шума сенсора — это детерминированная структура).
Инструмент: `Aletheia` (Open Source) или `Dust & Scratches` фильтр в ImageJ/Fiji.
#### 5. Анализ частотных характеристик (градиент)
Инструмент: `FotoForensics` (онлайн, бесплатно).
- Загрузите фото → вкладка "Error Level Analysis" (ELA).
- При пережатии ELA показывает неестественную яркость в плоских областях.
- При ресайзе — появление линий артефактов на границах объектов.
Важно: ELA не дает 100% гарантии, но указывает на вероятную модификацию.
#### 6. Проверка на бинарное соответствие (MD5/SHA256)
Если есть доступ к предполагаемому оригиналу:
sha256sum
original.jpg modified.jpgРазные хеши = изменение (размер или качество), но причина не раскрывается.
Критерии вывода
- Resize (изменение размера): Несоответствие `ImageWidth`/`ImageHeight` фактическому, потеря EXIF-данных камеры, следы интерполяции (градиентный шум/артефакты на краях контрастных объектов).- Change quality (смена качества): Двойная структура DCT-коэффициентов (double JPEG), неестественная ELA-карта, отсутствие шума сенсора в плоских зонах.