среда, 28 сентября 2011 г.

JPEGSnoop, part I


Нет необходимости объяснять значение структурного анализа данных для решения различных задач Digital Forensic Investigations. Нет необходимости объяснять, насколько часто объектом этих самых Investigations являются файлы формата JPEG.
Для исследования структуры файлов JPEG необходим инструмент, в качестве которого, на мой взгляд, в настоящее время лучше всего подходит программа JPEGsnoop.

Знакомство с программой целесообразно начинать только после ознакомления с алгоритмом компрессии JPEG и форматом файлов JFIF. Замечательная подборка информации на данную тему – здесь.

JPEGsnoop показывает внутреннюю структуру данных файла JFIF и содержание его основных маркеров.

Разумно рассмотреть работу с программой на примере:
Верхние строки сообщают нам имя и размер открытого файла.
Далее следует перечень обнаруженных в файле маркеров и их содержание.
Первый маркер - SOI (Start of image) - по существу является сигнатурой, по которой распознаются файлы JFIF. 
Маркер APPO содержит заголовок файла JFIF.  В соответствии со спецификацией, маркер должен содержать информацию о версии спецификации, разрешении изображения по горизонтали и вертикали, сведения о картинке предпросмотра (thumbnail). В нашем случае размеры картинки равны 0, т.е.  thumbnail в файле отсутствует.
Маркер СОМ встречается нечасто и содержит произвольные комментарии. В нашем случае - это сведения о том, что файл скачан из галереи в Интернетах.
Следующий маркер, DQT, содержит коэффициенты таблицы квантования коэффициентов ДКП. Таблица имеет ID=0. Умная программа уже расшифровала, что именно эта таблица используется для квантования яркостного канала (Luminance):
А вот эта - для квантования каналов цветности (Chrominance):
Следующий маркер - SOF (Start Of Frame) - обозначает начало кадра и содержит информацию о его формате:  
В кадре содержатся сведения о его размере в точках, ориентации, количестве используемых компонент цветового пространства (изображение в градациях серого использует только яркостную компоненту, полноцветное - еще и две цветовые). Тут же содержатся сведения о том, что яркостная компонента не прорежена, для её квантования используется таблица c ID=0, а обе цветовые - прорежены вдвое по горизонтали и вертикали и квантуются таблицей с ID=1.
Следом расположен маркер DHT, содержащий коэффициенты таблиц Хаффмана. 
После таблиц Хаффмана следует маркер SOS, непосредственно содержащий квантованные и сжатые коэффициенты ДКП: 
Далее следует блок, в котором JPEGsnoop обобщает статистику по изображению (красная линия отмечает вырезанную за ненадобностью часть картинки):  
И, наконец, маркер EOI и резюме,которое JPEGsnoop формирует по результатам обработки данных:
UPD START В первых строках резюме показаны результаты вычисления хеш-функции таблиц ДКП, как прямых, так и повернутых. Именно они сохраняются в базе данных и именно по ним осуществляется поиск совпадений UPD END
В резюме нам сообщается, что в блоке EXIF, которого в исследуемом файле просто нет, отстутствуют сведения о модели камеры или версии ПО, создавшего файл. Далее следует перечень камер и программ, на которые, судя по таблицам ДКП, похожа та программа, которая сгенерировала исследуемый файл.
Последние строки сообщают, что изображение синтезировано или подвергалось обработке, а так же сообщается, что в базе данных программы файлы с такой структурой и параметрами не встречались. 

Вот, собственно и всё, что может сказать нам про этот исследуемый файл программа JPEGsnoop.

О том, что она может еще - несколько позже

1 комментарий: