Форум программистов, компьютерный форум, киберфорум
Наши страницы
Бета-тестирование
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.55/97: Рейтинг темы: голосов - 97, средняя оценка - 4.55
HIMen
4291 / 1459 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
1

Стеганография в BMP

27.01.2010, 23:03. Просмотров 18407. Ответов 75
Метки нет (Все метки)

Выкладываю программу, которая записывает текстовое сообщение внутрь BMP или PNG
Для картинки 100*100 максимальная количество символов чуть меньше 3750.
Для человеческого глаза изменения не видны.

Позже сделаю шифрование зависимым от какого-нибудь ключа.

C#.NET Framework 2.0
1
Вложения
Тип файла: rar SteganographyInBmp.rar (7.7 Кб, 1167 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2010, 23:03
Ответы с готовыми решениями:

Стеганография в BMP
Проект выполняющий метод lsb. В коде ошибки. Не могу понять как исправить. Прошу помочь, может...

Стеганография LSB BMP
Такой вопрос: мне нужно из едита побитно запихнуть в байты цвета файла-контейнера биты текста. Есть...

Стеганография в BMP. Полное руководство
СТЕГАНОГРАФИЯ в BMP ИЗОБРАЖЕНИЯХ Данная статья содержит готовый проект с подробным описанием...

Методы GetPixel\SetPixel BMP и стеганография
Подскажите, мне необходимо реализовать метод стеганографии ""замена палитры", следовательно нужно...

Стеганография в BMP попробуем вместе разложить все по полочкам
Здравствуйте уважаемые форумчане! Столкнулся с задачей написать программный продукт, реализующий...

75
WolfCF
3295 / 1356 / 109
Регистрация: 28.04.2009
Сообщений: 4,823
28.01.2010, 04:54 2
не мешало бы сделать поддержку формата .JPG
0
taras atavin
4189 / 1778 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
28.01.2010, 05:07 3
Под униксом не фурычит.
0
gGrn-7DA
мну довольно <(-__-)l
212 / 201 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
Завершенные тесты: 1
28.01.2010, 09:14 4
taras atavin, перекомпилируй...
0
28.01.2010, 09:14
taras atavin
4189 / 1778 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
28.01.2010, 09:45 5
Как я её перкомпилю, если в архиве только экзэ?
0
gGrn-7DA
мну довольно <(-__-)l
212 / 201 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
Завершенные тесты: 1
28.01.2010, 11:07 6
декомпилируй, затем копилируй... в *никсе это проще сделать чем в винде
0
alexanderwdark
109 / 95 / 8
Регистрация: 19.02.2009
Сообщений: 312
01.02.2010, 16:08 7
Класс TIMFile для простого внедрения файла в изображение. Емкость - от 1 до 4 бит на пиксель.

Де-факто - это простой порт моего TIMFile на C++ (реализация в C++ Builder, но легко сделать платформо-независимым)

В архиве - пример внедрения, извлечения и проверки емкости.
0
Вложения
Тип файла: zip timfile.zip (7.0 Кб, 459 просмотров)
SSV
Заблокирован
05.02.2010, 22:52 8
При выборе файла для шифрования не мешало бы фильтр подредактировать. Оставить тип файлов только *.bmp . Что бы не было путаницы, раз программа работает только с этим расширением.
0
HIMen
4291 / 1459 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
06.02.2010, 00:09  [ТС] 9
ssv_www, открывать может в любом формате, вот сохранять - только bmp или png
0
SSV
Заблокирован
06.02.2010, 00:31 10
У меня не получается. Выскакивает сообщение -"Не поддерживаемый формат".
1
ostgals
883 / 678 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
06.02.2010, 12:06 11
ssv_www, +1

Интерфейс нифига не friendly.
0
HIMen
4291 / 1459 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
09.02.2010, 05:13  [ТС] 12
Исправил поддержку jpg и gif
ostgals, есть идеи как сделать его по-дружелюбнее?
0
Вложения
Тип файла: rar SteganographyForms.rar (7.9 Кб, 378 просмотров)
gGrn-7DA
мну довольно <(-__-)l
212 / 201 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
Завершенные тесты: 1
09.02.2010, 09:05 13
добавь хелп
0
Evg
Эксперт CАвтор FAQ
20976 / 8067 / 624
Регистрация: 30.03.2009
Сообщений: 22,385
Записей в блоге: 30
09.02.2010, 10:15 14
Цитата Сообщение от HIMen Посмотреть сообщение
Выкладываю программу, которая записывает текстовое сообщение внутрь BMP или PNG
А можешь вкратце объяснить суть процесса? Я интуитивно догадываюсь, что делается некоторое изменение изображения, но при этом не понимаю, как делается обратная расшифровка не имея оригинала?

Добавлено через 6 минут
Я исходную картинку беру в одном каталоге, а результат записываю в другую. Затем программу закрываю. Потом заново запускаю. Тыкаюсь в путь для расшифровки, а по умолчанию там выставляется тот каталог, который был ВЫХодном в прошлом запуске. Т.е. ты где-то сохраняешь информацию о последнем посещённом каталоге, но по хорошему это надо делать на каждое поле ввода, а не одно на всех

Добавлено через 2 минуты
Надо бы запоминать последнее выбранное расширение файла. Потому что в программах типа paint дико раздражает, что каждый раз при записи нужно устанавливать формат. Правда в твоём случае в процессе работы программы он запоминается (в отличие от paint'а), но неплохо бы эту информацию запомнить для следующего запуска
0
HIMen
4291 / 1459 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
09.02.2010, 16:19  [ТС] 15
Цитата Сообщение от Evg Посмотреть сообщение
Т.е. ты где-то сохраняешь информацию о последнем посещённом каталоге
неа, .NET сам сохраняет. Меня тоже это удивляет.

Цитата Сообщение от Evg Посмотреть сообщение
А можешь вкратце объяснить суть процесса?
Перевожу текст в последовательность нулей и единиц, записываю в 8 бит каждого цвета каждого пикселя. Расшифровка - обратный процесс: считываю последовательность 01, перевожу в текст.
0
Delphin_KKC
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,721
09.02.2010, 16:31 16
Когда-то я делал такую программу. Для простоты работал только с ВМР.
для хранения скрытого текста использовал от 1 до 4 бит.
При этом в каждой картинке в первые два байта цвета записывал по одному биту, которые обозначали используемую глубину (двух бит как раз хватит чтоб хранить значение от 0 до 3, при декодировании прибавляя к этому значению единицу я получал значение глубины).
Далее с выбранной глубиной в "заголовок" записывалось 32-битное значение, определяющее сколько байт длины имеет скрытая информация. А потом шла эта информация.
Программа работала с файлом напрямую. В двоичном режиме. JPEG не поддерживал не только из-за сложности формата. Много ли скроешь в 200кбайтный файлик? Куда интереснее 12МБайтные бмп-шки

Кстати, на похожем принципе можно даже в ЕХЕ файлы инфу прятать. Но очень мало.
Каждый виндовый экзешник содержит строку "This program cannot be run in dos mode" (или что-то похожее). Эта строка на экран в винде обычно не выводится.
Вместо этой строки можно записать что хочешь Только нельзя за границы строки выходить.
0
HIMen
4291 / 1459 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
09.02.2010, 17:02  [ТС] 17
Помню лет 6 назад (мне было около 12) друг притащил журнал "хакер". Мы кинулись его жадно читать, было интересно, но ничего вообще не понятно)) И помню там была статья про стеганографию, именно как прятать текст в бмп. Я думал: "каким крутым надо быть программистом, чтобы сделать это!!" Вот вспомнил недавно, сделал за пару часов, так приятно стало
0
Evg
Эксперт CАвтор FAQ
20976 / 8067 / 624
Регистрация: 30.03.2009
Сообщений: 22,385
Записей в блоге: 30
09.02.2010, 17:36 18
Нифига не понял. У меня есть пиксель, цвет которого в три байта кодируется как 0x10, 0x20, 0x30. Есть к примеру 3 бита информации, которые надо прятать 010. На конкретных числах поясните, куда вы эти три бита прячете

Добавлено через 3 минуты
Хотя кажется понял. Допустим мы будем считать, что каждый младший бит каждого байта бедет использоваться для кодирования. Т.е. указанные байты превратятся в 0x11, 0x20, 0x31. В итоге информацию мы спрячем, но оригинальную картинку при этом потеряем (и уже не сможем восстановить). Я-то почему-то считал, что мы картинку восстановить сможем. Так чтоли получается?

Добавлено через 59 секунд
Кстати. А ведь jpeg кодируется с потерями качества. При моём способе нет гарантии, что биты восстановятся правильно
0
HIMen
4291 / 1459 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
09.02.2010, 17:43  [ТС] 19
Цитата Сообщение от Evg Посмотреть сообщение
Нифига не понял. У меня есть пиксель, цвет которого в три байта кодируется как 0x10, 0x20, 0x30
я не силен в 16ричной записи
допустим цвета пикселя такие
00011101
01110001
10010110
и сообщение такое 010
помещаем биты сообщения по очереди в 8ые биты цвета
получится
00011100
01110001
10010110

Изменение цвета = 1, на глаз абсолютно не различимо

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
В итоге информацию мы спрячем, но оригинальную картинку при этом потеряем (и уже не сможем восстановить). Я-то почему-то считал, что мы картинку восстановить сможем. Так чтоли получается?
Оригинальную мы теряем, но на глаз полученная не отличается от оригинала

Добавлено через 49 секунд
Цитата Сообщение от Evg Посмотреть сообщение
Кстати. А ведь jpeg кодируется с потерями качества.
Именно поэтому у меня не получилось сделать для jpg, он искажает пиксели
2
Delphin_KKC
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,721
09.02.2010, 19:53 20
Цитата Сообщение от Evg Посмотреть сообщение
... Допустим мы будем считать, что каждый младший бит каждого байта будет использоваться для кодирования. Т.е. указанные байты превратятся в 0x11, 0x20, 0x31.
Именно так.
Цитата Сообщение от Evg Посмотреть сообщение
В итоге информацию мы спрячем, но оригинальную картинку при этом потеряем (и уже не сможем восстановить). Я-то почему-то считал, что мы картинку восстановить сможем. Так чтоли получается?
Картинка изменится, но так ли это существенно? Любой домашний монитор искажает цвета сильнее, чем потеря одного бита
Цитата Сообщение от Evg Посмотреть сообщение
Кстати. А ведь jpeg кодируется с потерями качества. При моём способе нет гарантии, что биты восстановятся правильно
Да. Но и на него есть управа. Когда-то я пытался изучать JPEG. Там изображение кодируется кусочками 8х8 (если мне память не изменяет). Верхний левый пиксель записывается в оригинальном виде, а все остальные - записывается на сколько они отличаются от верхнего. Так вот этот верхний левый пиксель каждой "клетки" можно использовать для скрытия информации.
Но для этого нужно работать с файлом на двоичном уровне, а не через всякие классы обработки изображений. Кроме того, нужно учитывать заголовок файла и возможное наличие EXIF данных в нём.
В общем - проблем больше, чем пользы

Возможно, я не очень точно описал алгоритм. Если интересует - его описание есть в интернете.
2
09.02.2010, 19:53
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2010, 19:53

Стеганография. Написать метод для расшифровывания текста из картинки bmp
Помогите написать метод для расшифрования текста из картинки bmp

Нужна программа для упаковывания данных в WAV/BMP/AVI (не стеганография!)
Стеганография - это когда скрывается не только сообщение, но и сам факт его наличия. Мне это не...

Работа с BMP-файлами (класс "8 битное BMP изображение)
Написать класс &quot;8 битное BMP изображение&quot;.Класс должен содержать 3 конструктора: конструктор по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.