Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 482, средняя оценка - 4.80
Gremlin
513 / 301 / 26
Регистрация: 30.07.2008
Сообщений: 607
17.10.2010, 07:14 #16
у меня вот несколько вопросов:

1) для чего ключ автор использовал из двух частей?
2) у png 4 канала (RGBA)? и если да то как обрабатывать Alpha?
3) вот никак немогу узнать GIF с потерей качества или нет?
4) и вот думаю, если подменять не последний бит, а последний и предпоследний сильно ли это будет заметно (когда меняем последний то разница в цвете 2^3 а когда 2 последних то 4^3 так?)

я написал "стенограф" на C++Builder 6 с чтением png, gif, jpeg, bmp и сохранение bmp, png
ключ я записываю в начало текста "123|" где 123 сколько символов читать
0
Вложения
Тип файла: zip Стенография.zip (1.21 Мб, 542 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 07:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стеганография в BMP. Полное руководство (C++ Builder):

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

Стеганография.Работа с изображением - C++ Builder
Здравствуйте! Есть следующее задание - нужно реализовать метод наименьшего значащего бита для BMP файлов . Метод заключается в следующем -...

Руководство по libxml2 - C++
Доброго дня! Подскажите пожалуйста, где можно почитать о библиотеке libxml2? Какие функции, как использовать - если есть с примерами...

Руководство по C++ Builder X2 Embarcadero - C++ Builder
Может ли кто нибудь помочь с руководством пользователя для C++ Builder X2 Embarcadero лучше на русском но можно на английском с уклоном в...

Руководство на русском по GCC и g++ - C++
Подскажите по сабжу - надо разобраться с ключами, режимами и понять общую схему работы компиляторов и линковщика. Добавлено через 3...

Borland C++ Builder 6 руководство разработчика - C++ Builder
Подсказали книгу по С++ (сказали что хорошая) Посмотрел уж больно дорогая она( Попробовал найти в нете не получается( Может тут подскажите...

58
Erravielle
339 / 50 / 1
Регистрация: 27.04.2009
Сообщений: 36
17.10.2010, 08:34  [ТС] #17
ОТВЕЧАЮ НА ВОПРОСЫ:

Цитата Сообщение от Gremlin Посмотреть сообщение
1) для чего ключ автор использовал из двух частей?
>> Моя прихоть - если мне не изменяет память, ключ содержит кол-во единиц информации и шаг, с которым мы движемся по вектору

Цитата Сообщение от Gremlin Посмотреть сообщение
2) у png 4 канала (RGBA)? и если да то как обрабатывать Alpha?
>> его в общем то обрабатывать так же, как и Red, Green, Blue каналы... визуально малое изменение прозрачности не скажется на качестве изображения

Цитата Сообщение от Gremlin Посмотреть сообщение
3) вот никак немогу узнать GIF с потерей качества или нет?
GIF использует формат сжатия LZW. А LWZ - относится к форматам сжатия без потерь. Так что и его можно использовать. . .

Цитата Сообщение от Gremlin Посмотреть сообщение
4) и вот думаю, если подменять не последний бит, а последний и предпоследний сильно ли это будет заметно (когда меняем последний то разница в цвете 2^3 а когда 2 последних то 4^3 так?)
>> При использовании 1го бита, мы получаем максимальную разницу 2^0 (то есть на 1), если мы будем использовать 2 бита то получим Максимальную (не постоянную) разницу в 2^0+2^1 = 3. Это еще куда не шло.. а вот если скажем 3 бита - 2^0+2^1+2^2= 7. . . Это уже будет весьма заметно...



P.S. Глянул вашу программку. . . Очень интересно бы исходники посмотреть, если это не коммрческий проект конечно )))

я написал "стенограф" на C++Builder 6 с чтением png, gif, jpeg, bmp и сохранение bmp, png
ключ я записываю в начало текста "123|" где 123 сколько символов читать
1
P1on3R
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 3
29.10.2010, 22:24 #18
Хмм интересненько, попробывал скомпилить, получаю:
[BCC32 Error] Steganografia.cpp(267): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] Steganografia.cpp(267): E2342 Type mismatch in parameter '__src' (wanted 'const char *', got 'wchar_t *')
Ругается на строчку:

C++
1
strcpy(String, RichEdit1->Text.c_str());
Изменил её на:

C++
1
strcpy[String, RichEdit1->Text.c_str()];
Одна ошибочка исчезла, осталась только:

[BCC32 Error] Steganografia.cpp(267): E2034 Cannot convert 'wchar_t *' to 'int'
ЗЫ CodeGear C++ Builder 2009 12.0.3420.21218, и апдэйты стоят, хмммм....

Добавлено через 1 час 39 минут
Решил свою проблему, правильная строчка выглядит так:
C++
1
strcpy(String,RichEdit1->Text.t_str());
Скобочки все-таки круглые оставляем
0
P1on3R
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 3
31.10.2010, 12:19 #19
Еще один нюанс В файле OpenKey.cpp ищем строчку
C++
1
OPEN.open(Stego->OpenDialog1->FileName.c_str());
и меняем её на:
C++
1
OPEN.open(Stego->OpenDialog1->FileName.t_str());
Тогда все пашет корректно с открытием ключа, для версии C++, что я указал выше
0
Erravielle
339 / 50 / 1
Регистрация: 27.04.2009
Сообщений: 36
31.10.2010, 13:02  [ТС] #20
Да, проблемы с c_str() и t_str() имеет место быть в различных версиях Builder...
Поэтому будет ли ошибка или ее не будет вовсе зависит от того, в каком Билдере вы компилируете проект...
0
P1on3R
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 3
07.11.2010, 11:53 #21
Вопросец возник к примеру зашифровать не младший и не старший бит(все работает как надо) пиксела картинки, а что-нибудь между ними, делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
BYTE ReadBitToByte (int Bit, BYTE B)
/* Записывает в байт B на N-ую(4ю) позицию бит Bit*/
{
  BYTE A = 00010000;
  BYTE Result = B;
  if (Bit == GetBitValue(B,4))
    return B;
  else if (Bit == 1)
    return Result = Result|A;
  else if (Bit == 0)
    return B - A;
  return NULL;}
Шифрую, по картинке не видно что что-то изменилось, но ключ сохраняет, кста я шаг выкинул, в каждый пиксел подряд шифрую. Для дешифровки соответственно:
C++
1
BitMass[j] = GetBitValue(R, 4);
Дешифровка показыват 3 символа, проделал то-же самое для всех битов >1 и <8, везде только 3 символа, не связанных с текстом.
0
artemtsaryov
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 2
13.12.2010, 22:54 #22
А можно хороший исходник первой программы? Ранее выложенные у меня не запускаются
0
dima31288
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 1
10.01.2011, 15:05 #23
Здраствуйте!!! Я скачал програму "Program.rar", отличная програма. Но у меня вопрос: Почему заново некомпилюется програма? Я хочу переделать фон, но не могу скомпилювать, чтобы сохранить.
0
admwell
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 1
01.03.2011, 00:09 #24
Могу привести реализацию помещения текста в BMP изображение на Delphi. При необходимости можно легко добавить ключ или дополнительно зашифровать текст.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.03.2011, 17:03 #25
Цитата Сообщение от Erravielle Посмотреть сообщение
Предположим нам нужно заменить один бит этого канала на бит символа, равный '0'.
Если мы заменим первый бит Байта R, то получим:
BYTE R = 11111110; // теперь R = 127
(отсчет идет справа налево, а не слева направо!!! Вожно это знать!)
- согласитесь, разница значений очень велика!
Теперь попробуем заменить последний бит Пиксела:
BYTE R = 01111111; // теперь R = 254
т.о. оттенок цвета изменится незначительно.
Апнул старую тему, но ошибка слишком критична. Как указано в заметке "отсчет идет справа налево, а не слева направо!!! Вожно это знать!", т.е. младший бит справа. Однако приведённые цифры говорят об обратном. Очевидно, что автор сам себя запутал. Ай-ай-ай.
Заменять нужно именно первый, крайний справа, бит.
1
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
10.05.2011, 01:24 #26
Deviaphan,
Дело не в старшем или младшем бите. Как задали вопрос в старой теме, так я и было отвечено.
Заменить в задаче нужно было последний бит. Он и был заменен.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
10.05.2011, 07:37 #27
Цитата Сообщение от Зоти Сергей Посмотреть сообщение
Заменить в задаче нужно было последний бит.
Последний бит - старший.
Если мы заменим первый бит Байта R, то получим:
BYTE R = 11111110; // теперь R = 127
(отсчет идет справа налево, а не слева направо!!! Вожно это знать!)
- согласитесь, разница значений очень велика!
При том, что в бинарном виде записано именно 254. Т.е. цифры попутаны.
Понятно, что тема не актуальна уже, но в глаза бросилось.)
1
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
10.05.2011, 08:20 #28
Менять надо младшие биты каждой плоскости. То есть в 24-х битном цвете - младшие биты каждого байта цветности. В 48-ми битном rgb (если есть) - младшие биты слов (и в этом случае не факт, что в количестве одного бита на слово). А если разрядность наращена за счёт цветной прозрачности (если и такое есть), то всех байт цветности. Ещё можно попробовать спрятать данные в файле, но не в массиве цветности. Если формат предусматривает явное хранение смещений, то данные можно запихать между концом заголовка и началом массива цветности. Кроме того, кто мешает поместить данные в хвост файла за всей цветностью? Или даже в хвост физического сектора, последнего в файле?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
10.05.2011, 08:34 #29
Цитата Сообщение от taras atavin Посмотреть сообщение
Кроме того, кто мешает поместить данные в хвост файла за всей цветностью?
То, что данные нельзя хранить в явном виде. Т.е. в явном виде не должно быть очевидно само наличие этих данных. Т.е. варианты с добавлением блоков в контейнер сразу отпадают, т.к. это будет видно не вооружённым глазом. Выравнивания в файлах ну очень редко используются, особенно в старых, особенно произвольного смещения, чтобы влезло произвольное количество скрываемой информации. И я почти на 100% уверен, что байты выравнивания либо обнулены, либо содержат магическое число, т.е. замена этих битов сразу бросится в глаза.

Цитата Сообщение от taras atavin Посмотреть сообщение
Или даже в хвост физического сектора, последнего в файле?
Информацию шифруют, чтобы передать куда-нибудь. Т.е. ни о каких физических секторах речи быть не может. Секретная инфа будет утеряна при копировании/передаче файла. А ещё при дефрагментации диска.(
Цитата Сообщение от taras atavin Посмотреть сообщение
А если разрядность наращена за счёт цветной прозрачности (если и такое есть), то всех байт цветности.
*всех байт прозрачности. Применимо только для форматов без прозрачности, но сохраняющих альфа-канал. Всё тот-же bmp. В формате использующем прозрачность замена всех битов прозрачности будет слишком очевидна, т.е. опять можно лишь младший бит прозрачности использовать.
0
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
10.05.2011, 09:16 #30
Цитата Сообщение от Deviaphan Посмотреть сообщение
И я почти на 100% уверен, что байты выравнивания либо обнулены, либо содержат магическое число, т.е. замена этих битов сразу бросится в глаза.
В файлах, записанных редакторами, в таких байтах могут быть:
1. Стандарное заполенение. Ноли - наиболее распространённый вариант такого заполнения.
2. Мусор.
Вот под мусор я и предлагаю маскировать. Да и при стандратном заполнении вне заголовка просмоторщики будут читать файл без учёта действительного контента, то есть также, как если бы там был мусор. Выравнивание - редкость? А кто говорит о выравнивании для удобства чтения? Вообще то речь об искуственном заполнителе при наличии смещения, а смещение - достаточно распростарнённое данное.
Цитата Сообщение от Deviaphan Посмотреть сообщение
Информацию шифруют, чтобы передать куда-нибудь. Т.е. ни о каких физических секторах речи быть не может.
Чтоб передать? Эйси. Но только ли по сетке? А хранение накопленного времени пользования софтиной ты исключаешь? Или сгенеренный при инталяции ключ, к оторому должен подходить другой, явно хранимый ключ. Или передачу физического диска с секретной информацией, когда не исключена попытка его несанкционированного чтения третьим лицом?
Цитата Сообщение от Deviaphan Посмотреть сообщение
всех байт прозрачности.
Ну как докажи, что прозрачность в таком файле - не часть цветности
Цитата Сообщение от Deviaphan Посмотреть сообщение
В формате использующем прозрачность замена всех битов прозрачности будет слишком очевидна
Я вообще то предлагал только младшие биты и собственного цвета, и прозрачности.
Цитата Сообщение от Deviaphan Посмотреть сообщение
То, что данные нельзя хранить в явном виде.
Визуально не видно, очевидность при измерении размера зависит от соотношения количества скрытых и графических данных. Остаётся защититься от ручной проверки смещений, для чего можно предложить большое число самих файлов, а очевидность хвоста физического сектора вообще крайне сомнительна даже при ручной проверке кода файла.

Добавлено через 10 минут
Цитата Сообщение от Deviaphan Посмотреть сообщение
Всё тот-же bmp
BMP с альфаканалом имеет прозрачность, для чего алфаканал и предназначен. Может быть только в качестве прозрачности его не интерпретируют редакторы и просмоторщики, но где ты видел иную цель применения 32-х бит, кром как запихать туда прозрачность, обрабатываемую программой, отличной от просмоторщиков только самой бээмпэшки?

Добавлено через 5 минут
Кстати, а кто отменил создание своего формата? Ну и прячь спецификацию, или явно специфицируй мусор в любых промежутках при их фактическом наличии. Можно ещё попытаться выдать за цель создания такого формата шифрование не текстовой, а графической информации. Скоро ли кто ни будь догадается, что именно в этом формате спрятано не изображение, а текст?
0
10.05.2011, 09:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2011, 09:16
Привет! Вот еще темы с ответами:

Где скачать Руководство разработчика C++B6 - C++ Builder
Подскажите пожалуйста ссылочку, где можно БЕСПЛАТНО скачать &quot;Borland C++ Builder 6. Руководство разработчика&quot;, а то я кучу ссылок облазил и...

Краткое руководство по работе с классом TCanvas для начинающих - C++ Builder
Вступление Часто на форуме возникают вопросы по поводу рисования той или иной фигуры на канве, а также просят привести список всех...

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

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


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

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

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