Инструменты для извлечения признаков из двоичных данных изображений

Я работаю над проектом, в котором у меня есть файлы изображений, которые были искажены (нечеткие, т.е. их данные изображения были изменены). Эти файлы при рендеринге на разных платформах приводят к предупреждению/сбою/отчету о прохождении от платформы.

Я пытаюсь создать защиту, используя неконтролируемое машинное обучение, которое поможет мне идентифицировать/классифицировать эти изображения как вредоносные или нет. У меня есть бинарные данные этих файлов, но я понятия не имею, какой набор функций/шаблонов я могу определить из этого, потому что визуально эти изображения могут быть чем угодно. (Мне нужно найти набор функций из двоичных данных)

Мне нужен совет по поводу инструментов/методов, которые я мог бы использовать для автоматического извлечения признаков из этих двоичных данных; наборы функций, которые я могу использовать с алгоритмами обучения без присмотра, такими как SOM Коэнена и т. д.

Я новичок в этом, любая помощь будет здорово!


person cornerstone    schedule 12.09.2012    source источник
comment
Что вы имеете в виду под бинарными данными изображения? Если вы можете просмотреть изображение, вы можете получить значения каждого пикселя, которые необходимы в качестве функций.   -  person Sicco    schedule 12.09.2012


Ответы (2)


Я не думаю, что это осуществимо.

Проблема в том, что это старые эксплойты, и обучение на них мало что скажет вам о будущих эксплойтах. Потому что это крайне несбалансированная проблема: ни один эксплойт не использует то же самое, что и другой. Таким образом, даже если вы сгенерируете несколько файлов одного типа, в конечном итоге у вас, вероятно, будет соответствующий единственный учебный пример, например, для каждого эксплойта.

Тем не менее, вам нужно извлечь функции из метаданных файла. Вот где эксплойты, а не в реальном изображении. Таким образом, синтаксический анализ файлов уже является областью, в которой возникает проблема, и ваш инструмент обнаружения может стать уязвимым именно для такого эксплойта.

Поскольку данные могут быть сжаты, простая бинарная функция тоже не сработает.

person Has QUIT--Anony-Mousse    schedule 13.09.2012
comment
Большое спасибо за ваш ответ! Я полагаю, что мне придется изменить свой подход к этому. Я искал некоторые экстракторы метаданных и наткнулся на Hachoir (библиотека Python). Любые другие предложения по инструментам/библиотекам, которые я мог бы использовать? Спасибо :) - person cornerstone; 15.09.2012
comment
Проблема в том, что атаки обычно проводятся против экстракторов метаданных. Таким образом, вы не можете доверять им, вы также будете уязвимы. - person Has QUIT--Anony-Mousse; 15.09.2012
comment
Это интересно. Но тогда должен быть какой-то способ решить эту проблему, не ставя под угрозу безопасность системы? - person cornerstone; 15.09.2012
comment
Что ж, для обеспечения безопасности системы лучше всего использовать песочницу, проанализировать файл всеми основными парсерами и посмотреть, не сработает ли один из парсеров. Главное — использовать сильную песочницу. - person Has QUIT--Anony-Mousse; 15.09.2012
comment
Я действительно ценю твою помощь. Однако я хотел бы задать вам еще один вопрос. Какие функции вы рекомендуете мне посмотреть на извлечение из заголовков изображений? Потому что эксплойты в заголовках будут различаться. Какие функции я должен рассматривать для извлечения и передачи в алгоритмы ML? Спасибо - person cornerstone; 19.09.2012
comment
Найдите недопустимые значения. Например, отрицательные размеры изображения или любые недопустимые значения. - person Has QUIT--Anony-Mousse; 19.09.2012

Вы, вероятно, вообще не хотите смотреть на фактические данные пикселей, так как повреждение больше всего (почти наверняка) лежит в заголовке файла с его разными «фрагментами» (пример для png, работает по-разному, но так же для других форматов) :

http://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header

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

О, и всегда начинайте с более простых алгоритмов, таких как pca вместе с kmeans или чем-то еще, и если они не сработают, вы должны использовать большие пушки.

person SlimJim    schedule 13.09.2012
comment
Это несколько вводит в заблуждение, но я думаю, что все-таки дело в данных. Смотрите комментарий к моему ответу. - person Qnan; 13.09.2012
comment
Ты думаешь? Почему он упоминает: эти файлы при рендеринге на разных платформах приводят к предупреждению/сбою/отчету о прохождении от платформы. ? - person SlimJim; 13.09.2012
comment
Нет, ты прав. Я удалил свой ответ и переименовал вопрос. - person Qnan; 13.09.2012
comment
ааа окей, нп :) извините, просто хотел посмотреть, все ли я правильно понял, немного устал - person SlimJim; 13.09.2012
comment
вау, спасибо за ваши ответы! как я уже упоминал в одном из ответов выше, я думаю, мне придется изменить свой подход к этому. Я искал hachoir (библиотека Python) для извлечения метаданных. Любые другие предложения по инструментам, которые я мог бы использовать (либо в python, либо в java). ваше здоровье! :)) - person cornerstone; 15.09.2012
comment
на самом деле нет, никогда не работал с метаданными изображений, но: python › java :P - person SlimJim; 18.09.2012