25

Можно ли хранить произвольные данные, например документы или программу, в виде файла изображения, например изображения PNG? Меня беспокоит то, что кто-то может кодировать данные для использования вредоносными программами в изображение и загружать их на сайт, такой как Flickr.

3 ответа3

22

Для большинства форматов файлов, да. Например, файлы PNG состоят из типизированных блоков, поэтому вы можете добавить фрагмент с именем aAAA или lOLZ с произвольными данными. JPEG имеет «специфичные для приложения» сегменты APPn ; теги Exif в JPEG - это фактически полная структура TIFF внутри такого тега. Другие форматы, такие как GIF, не расширяемы, но они часто имеют поле для текстовых комментариев; этим уже злоупотребляли.

Однако есть способы защиты от этого - например, такие сайты, как Imgur, автоматически обрабатывают все загрузки с помощью pngcrush или аналогичных инструментов, которые отбрасывают все, что не является абсолютно необходимым.

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

19

Вредоносных данных не существует. Данные не становятся вредоносными, пока они не будут выполнены, после чего они больше не будут данными. Проблема такого рода вещей не в изображении, а в программном обеспечении (Windows, Photoshop и т.д.), Содержащем ошибку, которая приводит к выполнению данных. Это, очевидно, важная проблема для крупных поставщиков программного обеспечения, и вы можете быть уверены, что они исправят эти ошибки очень скоро после их обнаружения.

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

12

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

Однако вы можете добавить произвольные данные в конец PNG, после данных изображения, которые затем можно будет прочитать позже. Это было бы довольно легко обнаружить - за концом данных изображения не должно быть никаких данных.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .