Как вы можете скрыть информацию внутри JPG или GIF-фотографии?
Как я могу записать некоторую информацию в файл фотографии, такой как JPG или GIF, не разрушая изображение? и, конечно, не показывая его на фотографии, так как вся идея состоит в том, чтобы отправлять информацию в файле фотографии, которую никто не обнаружил (для обеспечения безопасности / конфиденциальности в некоторой степени)!
8 ответов
Вы можете хранить некоторую информацию в метаданных изображения. Фактически, именно так цифровые камеры отмечают фотографии, которые они делают (модель камеры, дата и время, координаты GPS и т. Д.).
Этот формат данных называется EXIF (формат файла сменного изображения). Есть много примеров, как использовать его в языках программирования. Вот пример на Java.
Если вы хотите запретить пользователям читать эти данные, вы можете каким-то образом их зашифровать, но они всегда смогут удалить их из вашей фотографии (открыв в Photoshop и используя, например, Сохранить как).
Вы можете объединить GIF и ZIP (информацию, которую вы хотите скрыть) в один файл. GIF-файлы читаются с начала файла, а ZIP-файлы читаются с конца файла.
Чтобы создать такой файл в Linux:
$ cat file1.gif >> outfile.gif
$ cat file2.zip >> outfile.gif
Полученный файл должен иметь размер file1.gif и file2.zip вместе и должен быть открыт любым средством просмотра gif и обработчиком файла zip.
Я уверен, что есть много способов. Вот один из них:
На фотографии незначительные различия в цвете часто будут незаметны невооруженным глазом, или даже если их заметят, их легко можно будет принять за недостатки качества изображения.
Итак, чтобы взять простой пример, предположим, что у вас было GIF-изображение в оттенках серого, где палитра расположена в порядке от белого до черного с плавным диапазоном серого между ними. Я не уверен, сколько вы знаете о графических форматах файлов, но в GIF у вас есть один байт на пиксель, при этом каждое возможное значение байта отображается на определенный цвет. Таким образом, в этом случае мы могли бы сказать, что паллета № 0=RGB(0,0,0), паллета № 1=RGB(1,1,1), ... палитра #255=RGB(255,255,255).
Тогда вы берете обычную, настоящую фотографию. Разбейте ваше секретное сообщение на отдельные биты. Установите последний бит каждого номера индекса палитры в последовательные биты вашего сообщения.
Например, предположим, что первые восемь пикселей исходной фотографии, скажем, 01 00 C9 FF FF C8 42 43. Ваше сообщение начинается с буквы "C", код ascii 0110 0111. Таким образом, вы меняете последний бит первого байта в 0, изменяя байт с 01 на 00. Вы меняете последний бит второго байта на 1, изменяя байт с 00 на 01. Вы изменяете последний бит третьего байта на 1. Это уже 1, так что нет разницы. И т.д. Вы получите кодированные 8 байтов, являющиеся 00 01 C9 FE FF C9 43 43.
Изменения в цветах были бы настолько тонкими, что вряд ли кто-нибудь, глядя на картинку, это заметил бы. Даже если бы они заметили, если бы у них не было причины быть подозрительными, они, скорее всего, просто пришли бы к выводу, что качество изображения было не идеальным.
Конечно, ничего не говорит, что вы должны использовать 1 бит на байт для секретного сообщения. В зависимости от степени ухудшения качества, которое, по вашему мнению, вы можете избежать, вы можете использовать 2 бита на байт или просто изменить 1 бит на каждый другой байт и т. Д.
Конечно, та же самая техника может использоваться с цветными фотографиями: изменить последний бит в каждом из компонентов RGB для кодирования 3 бит на пиксель и т. Д.
Эй, этот метод называется стеганографией. При этом мы можем скрывать сообщения не только в изображениях, но также в аудио, видео и других форматах.
Вот стеганографическое программное обеспечение с открытым исходным кодом, называемое steganotool. Этот проект является стеганографическим инструментом с открытым исходным кодом, который можно использовать для скрытия и извлечения текста в / из растровых изображений.
О стеганографических средах
Стеганография в изображениях
Этот тип стеганографии очень эффективен против открытия и может служить различным целям. Эти цели могут включать в себя аутентификацию, сокрытие сообщений и передачу ключей шифрования. Наиболее эффективным методом для этого типа стеганографии обычно является метод наименее значимого бита. Это просто означает, что скрытое сообщение изменит последний бит байта в изображении. Изменяя этот последний бит, относительно не изменится цвет этого пикселя в несущем изображении. Это предотвращает легкое обнаружение сообщения. Лучший тип файла изображения для скрытия информации - 24-битное растровое изображение. Это связано с большим размером файла и высоким качеством.
Стеганография в аудио
В аудиофайлах наиболее известным методом сокрытия информации является метод кодирования с низким битом. Метод кодирования младших битов несколько похож на метод младших битов, используемый в файлах изображений. Секретная информация прилагается к концу файла. Одна из проблем, связанных с низким битовым кодированием, заключается в том, что это может быть заметно человеческому уху. Если кто-то пытается скрыть информацию, это может быть рискованно, так как ее легко обнаружить. Метод расширенного спектра является еще одним методом, который использовался для сокрытия информации в аудиофайлах. Что этот метод делает, это добавляет случайный шум к аудио трансляции. Этот метод позволяет распространять информацию по частотному спектру и оставаться скрытым под случайным шумом. Последний метод, который можно увидеть в аудиостеганографии, - это скрытие эхо-данных. Этот метод стремится скрыть информацию, используя эхо, которое естественно возникает в звуковых файлах. Затем к этому эхо можно добавить дополнительный звук, при этом дополнительный звук является скрытым сообщением. Это достаточный способ скрыть информацию, тем более что в некоторых случаях он даже улучшает звучание исходного аудиофайла.
Стеганография в видео
Стеганография в видео в основном скрывает информацию в каждом кадре видео. Внутри видео скрыто лишь небольшое количество информации, которая обычно вообще не заметна, однако, чем больше скрытой информации, тем более заметной она станет. Этот метод также эффективен, но должен быть сделан правильно, иначе вы получите больше информации, чем скрываться.
Стеганография в документах
Это в основном добавление пробелов и табуляции к концам строк документа. Этот тип стеганографии чрезвычайно эффективен, потому что использование пробелов и вкладок невидимо для человеческого глаза в большинстве редакторов текста / документов.
Вы также можете обратиться к этому проекту с открытым исходным кодом
Эта статья может быть очень полезной.
Если вы хотите спрятать данные (текст, другое изображение, что угодно) в файле JPEG, вы можете просто добавить их в конец файла. При просмотре изображения вы увидите только исходное изображение, а добавленные вами данные будут проигнорированы.
Хотя это и не лучший способ скрыть данные, это хороший способ скрыть другой файл JPEG, так как если кто-то откроет файл в блокноте или редакторе шестнадцатеричных кодов, он, вероятно, не заметит, что существует два файла JPEG, а не один, потому что конец второго изображения в любом случае будет выглядеть как первое.
Сжатые данные в файлах GIF находятся в чанках переменного размера. каждый кусок начинается с байта длины. Обычно эти порции представляют собой 255 байтов данных (а длина байта говорит 255), за исключением двух последних порций (последний равен 0).
Но вы могли бы перекодировать gif с кусками, размер которых прописывает сообщение, например, используя символы для текста ASCII или байтов 1
2
3
4
представляющий 00
01
10
11
двоичные данные,
Частотный анализ на GIF выявит меньше, чем ожидалось, 255 байтов. и размер будет больше, чем оригинал, но изображение будет выглядеть точно так же.
В окнах вы можете использовать простую команду, чтобы скрыть архив в изображении: copy /b cat.jpg + Documents.rar cat_new.jpg. А затем используйте, например, WinRar для извлечения данных из изображения, как из архива.
Но лучше использовать стеганографию.
простая программа для Linux и Windows: http://linux01.gwdg.de/~alatham/stego.html
используя эту программу вы будете использовать парольную фразу, без нее никто даже не узнает, что вы скрыли некоторые данные в картинке))
Вам не нужен какой-либо продвинутый инструмент для скрытия файла в изображении - вам просто нужно знать некоторые основные команды DOS... просто перейдите по ссылке ниже, чтобы узнать, как это сделать (это краткое описание стеганографии изображения).):
https://www.youtube.com/watch?v=ox9ArqXtaWw&list=PLqEKOAKK4IbSTfDJZE_lH-DiOjOzZUczx&index=2