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

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

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

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

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

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

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

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

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

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

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

75
deadlock
376 / 356 / 23
Регистрация: 14.12.2010
Сообщений: 1,265
11.01.2011, 09:25 61
стеганография в растровых картинках очень уязвима для сжатия jpeg, есть набор специальных методов для увеличения стойкости информации, а так предложенные методы - будут успешно атакованы даже Paint'ом, в лучшем случае Photoshop'ом.
0
zalogic
183 / 182 / 15
Регистрация: 12.12.2010
Сообщений: 269
12.01.2011, 19:43 62
у меня нортон не дает её запустить, сразу удаляет, даже не пишет что вирус нашел.
0
rrrFer
Заблокирован
12.01.2011, 20:16 63
taras atavin, под вайном пробовал?

Добавлено через 2 минуты

Не по теме:

тема то старая...

0
S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
18.03.2012, 16:14 64
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
Можно включить поддержку несжатого TIFF. По сути - тот же ВМР, только заголовок чуть другой.
А многие фотоаппараты в таком формате фотки делают (например мой Olympus C770UZ).
Если же поддерживать TIFF со сжатием без потери данных - то придётся писать алгоритм его распаковки в оперативку и упаковки обратно.
Вот у меня возник вопрос, а надо ли распаковывать TIFF, сжатый алгоритмом LZW? Вот в этой теме Стеганография в BMP. Полное руководство ее автор Erravielle, говорит, что для алгоритмов сжатия без потери качества тот же принцип сокрытия, что и для простого BMP, т.е. распаковка не требуется. Пожалуйста, помогите разобраться.
0
Erravielle
341 / 52 / 3
Регистрация: 27.04.2009
Сообщений: 36
18.03.2012, 16:23 65
Вот у меня возник вопрос, а надо ли распаковывать TIFF, сжатый алгоритмом LZW?
В зависимости от того, как вы работаете с файлом - если с помощью класса, который позволяет обращаться к конкретным пикселам изображения и получать RGB, то не обязательно - все за вас уже сделано. ИМХО, это не самый лучший вариант в плане производительности.
Если же вы работаете с изображением как с вектором байт, то, во-первых, обязательно нужно отступить на длину заголовка файла, прежде чем заносить информацию, во-вторых, если файл каким-либо образом сжат, нужно его сначала распаковать
1
S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
18.03.2012, 16:44 66
Цитата Сообщение от Erravielle Посмотреть сообщение
В зависимости от того, как вы работаете с файлом - если с помощью класса, который позволяет обращаться к конкретным пикселам изображения и получать RGB, то не обязательно - все за вас уже сделано. ИМХО, это не самый лучший вариант в плане производительности.
Если же вы работаете с изображением как с вектором байт, то, во-первых, обязательно нужно отступить на длину заголовка файла, прежде чем заносить информацию, во-вторых, если файл каким-либо образом сжат, нужно его сначала распаковать
Т.е. следует идти по тому пути, по которому пошли Вы? (Без применения векторов).
0
anonimus
2156 / 1246 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2012, 11:42 67
Цитата Сообщение от SSV Посмотреть сообщение
Выскакивает сообщение -"Не поддерживаемый формат"
тоже самое при попытки использовать jpg, с bmp все работает
0
S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
20.03.2012, 14:49 68
Цитата Сообщение от Erravielle Посмотреть сообщение
http://www.autex.spb.ru/wavelet/books/stego.zip
вот тут хорошая книга по стеганографии... Стего в изображениях рассматривается в главах 5,6... Материала много, материал сложный... Но может помочь.
По мере возможностей постараюсь поучавствовать. . .
Может ли кто-нибудь подсказать авторов этой книги?

Уже выяснил - В. Г. Грибунин, И. Н. Оков, И. В. Туринцев.
0
Erravielle
341 / 52 / 3
Регистрация: 27.04.2009
Сообщений: 36
20.03.2012, 19:45 69
Цитата Сообщение от S_hmel Посмотреть сообщение
Т.е. следует идти по тому пути, по которому пошли Вы? (Без применения векторов).
Нет - это не лучший вариант. Позже я кое-что подправил в программе, а в частности добавил преобразование изображения в вектор и обратно. Но все-таки опираясь на функции класса Graphics::TBitmap а не работая чисто с форматом.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
BYTE *BitmapToArray (Graphics::TBitmap *Bmp, ImageINFO BmpInfo)
{
BYTE * BitmapArr = new BYTE[BmpInfo.Width*BmpInfo.Height*3];
for(int Y = 0;Y < BmpInfo.Height-1; Y++)
{
    memcpy(&BitmapArr[Y*BmpInfo.Width*3],(BYTE*)Bmp->ScanLine[Y], BmpInfo.Width*3);
}
return BitmapArr;
}
 
Graphics::TBitmap *TOBitmap (BYTE *BitmapArray, Graphics::TBitmap *Bmp, int H, int W)
{
Graphics::TBitmap *Bitmap = Bmp;
 
for (int Y = 0; Y < H-1; Y++)
   {
      memcpy((BYTE*)Bitmap->ScanLine[Y],&BitmapArray[Y*W*3],W*3);
   }
return Bitmap;
}
Добавлено через 4 минуты
Цитата Сообщение от anonimus Посмотреть сообщение
тоже самое при попытки использовать jpg, с bmp все работает
Конечно не работает - и не будет работать. JPEG - формат сжатия с потерями. Не то чтобы нельзя было спрятать в него сообщение, но это процесс куда более трудоемкий, и во многих случаях легко обнаружаемый.
Есть вполне эффективные. Не хочется соврать, но вроде бы они основаны на вейвлет-преобразованиях а не на LSB
1
S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
21.03.2012, 20:49 70
Цитата Сообщение от Erravielle Посмотреть сообщение
Нет - это не лучший вариант. Позже я кое-что подправил в программе, а в частности добавил преобразование изображения в вектор и обратно. Но все-таки опираясь на функции класса Graphics::TBitmap а не работая чисто с форматом.
Т.е., класс Graphics::TBitmap может работать с любым изображением, не обращая внимания на формат?
0
Erravielle
341 / 52 / 3
Регистрация: 27.04.2009
Сообщений: 36
24.03.2012, 09:08 71
Цитата Сообщение от S_hmel Посмотреть сообщение
Т.е., класс Graphics::TBitmap может работать с любым изображением, не обращая внимания на формат?
Насколько я знаю, TBitmap работает только с BMP форматом... я могу ошибаться, т.к. на плюсах последний раз давно писал и просто не помню.
P.S. Ничто вам не мешает поискать классы для работы с другими изображениями (простой способ) или, на крайний случай, почитать о структуре форматов - узнать Сигнатуры, размер заголовока файла, каким методом сжимается (это на порядок сложнее, я бы не тратил на это времени) и делать все вручную.
ИМХО, смотрите лучше в сторону готовых классов. весь необходимый функционал для вашей задачи там должен быть реализован.
По поводу TIFF (опять же, не соврать бы, вроде натыкался на библиотеку LibTIFF. Использовать не использовал, но название видел.

Вот сюда загляните, если TIFF интересует
1
S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
31.03.2012, 21:20 72
Хороший источник, Erravielle! Есть вопрос - что такое Blob stream?
0
S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 13:02 73
Erravielle, скачал с указанной вами ссылки проект tifftest, он при компиляции требует enetiff.bpi, найти который не удается.
0
taras atavin
4206 / 1773 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
09.04.2012, 13:04 74
Цитата Сообщение от HIMen Посмотреть сообщение
Для картинки 100*100 максимальная количество символов чуть меньше 3750.
2 бита на символ?
0
Erravielle
341 / 52 / 3
Регистрация: 27.04.2009
Сообщений: 36
09.04.2012, 13:10 75
Цитата Сообщение от taras atavin Посмотреть сообщение
2 бита на символ?
100px*100px*3(RGB)/8(вес 1го символа) = 3750

Добавлено через 3 минуты
Цитата Сообщение от S_hmel Посмотреть сообщение
Erravielle, скачал с указанной вами ссылки проект tifftest, он при компиляции требует enetiff.bpi, найти который не удается.
Я только предположил в какую сторону смотреть нужно. Как я уже говорил, на плюсах давненько не писал (за исключением QT разве что), так что, к сожалению, тут я ничем помочь не могу. Разве что на теории подсказать что
1
S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 13:38 76
Erravielle, спасибо за теорию. Придется разбираться далее.
0
09.04.2012, 13:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2012, 13:38

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

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

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


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

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

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