Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi Программно создание caption http://www.cyberforum.ru/delphi-beginners/thread268114.html
Подскажите пожалуйста сложно обьяснить но попробую когда нажать на кнопку в файле.тхт идет поиск слов если в слове есть .тхт тогда создаются checkboxи название их будет слово из файла их будет...
Delphi Полигон и Гистрограмму
Как построить Полигон и Гистрограмму...Если можно приведите пример
Delphi Путь к файлам
Здравствуйте! =) Стоит компонент WebBrowser, путь к странице задается через ComboBox. Сами страницы(html) находятся в подкаталоге самой программы. Так вот, при переносе программы, путь к страницам...
Delphi Переделать через обработку сообщений Windows. Доброго времени суток. Есть вот такой код программы: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,... http://www.cyberforum.ru/delphi-beginners/thread268076.html
Delphi в TidAttachment ошибка http://www.cyberforum.ru/delphi-beginners/thread268069.html
Здравствуйте! У меня Delphi 2009 в строке TidAttachment.Create(IdMessage1.MessageParts, 'C:/'); пишет, что не знает 'C:/' Почему так? всегда работало. Скажите пожалуйста
Хэширование Delphi
Доброго времени. В универе по спо (системное программное обеспечение) дали лабораторную. Суть в следующем. Дан список идентификаторов(.txt файл). Нужно оргаизовать поиск по этому списку 2-мя...
Delphi Word
Какой текстовый компонент может различать Word (OleVariant) ? В каком-то исходнике видел mmMain, но я его не нашёл в своём Delphi....
Delphi Aлгоритм управления памятью «Быстрый подходящий» (с 3 списками). Помогите пожалуйста!!! нужно написать код выделения памяти для варианта с тремя списками код освобождения памяти для варианта с тремя списками процедурa дефрагментации для варианта с быстрым... http://www.cyberforum.ru/delphi-beginners/thread268028.html
Delphi Ввести список целых чисел,предусмотреть проверку правильности ввода,отсортировать по убыванию. http://www.cyberforum.ru/delphi-beginners/thread267930.html
Помогите с написанием программы. нужно Ввести список целых чисел. Предусмотреть проверку правильности ввода (при вводе символа выдавать сообщение о необходимости повторного ввода). Отсортировать...
Delphi Выяснить, совподают ли строки. Привет всем! Передо мной задача:Выяснить совподают ли строки. Если нет, то получить номер первой строки с отличием. Первую половину я сделал :) это загрузил текст в мемо и сравнил их. если... http://www.cyberforum.ru/delphi-beginners/thread267920.html
Lirrk
Заблокирован
10.04.2012, 17:35 0

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

10.04.2012, 17:35. Просмотров 67370. Ответов 70
Метки (Все метки)

Ответ

aidoqa,
В смысле про формат png?
Графический формат. Использует сжатие без потерь. Может содержать альфа-канал.
Для работы с ним нужна библиотека. Она есть в архиве. Всё сводится к созданию обьекта PNG и работы с ним.

Добавлено через 10 минут
В разделе uses подключается pngimage

А это блок загрузки картинки PNG
Delphi
1
2
3
4
5
6
7
8
9
10
if OD1.FilterIndex = 2 then begin
                            png := TPNGObject.Create; // ñîçäàåì
                            png.LoadFromFile(OD1.FileName);
                            WW:= png.Width;
                            HH:= png.Height;
                            _B_.Width:=WW;
                            _B_.Height:=HH;
                            _B_.Canvas.Draw(0, 0, png); // âûâîäèì
                            png.Free; // Îñâîáîæäàåì
                           end;
Добавлено через 3 минуты
png := TPNGObject.Create; // создаем
png.LoadFromFile(OD1.FileName);
WW:= png.Width;
HH:= png.Height;
_B_.Width:=WW;
_B_.Height:=HH;
Создаётся объект TPNGObject
Грузим рисунок
png.LoadFromFile(OD1.FileName);
Получаем его размеры
WW:= png.Width;
HH:= png.Height;
Делаем битмап того же размера
_B_.Width:=WW;
_B_.Height:=HH;

Добавлено через 1 минуту
Переносим на битмап
_B_.Canvas.Draw(0, 0, png); // выводим
Уничтожаем обьект PNG
png.Free; // Освобождаем

Всё рисунок распакован

Добавлено через 1 минуту
Далее делаем копию битмапа в виде сплошного потока байтов

Добавлено через 1 минуту
Ну а потом открываем файл текста и берём с него байт за байтом и добавляем его биты к пикселям

Добавлено через 40 секунд
То есть к каждому байту копии битапа

Добавлено через 1 минуту
А происходит это в процедуре

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Procedure Write_Byte(_dat:Byte); //Çàïèñü áàéòà â ëèíåéíóþ áèòîâóþ êàðòó
var
Px_:byte;
ind_:byte;
Poz:Dword;
dat_:byte;
 
begin
dat_:= _dat;
 
for ind_:=1 to 8 do begin
Poz:= BM1.Position;
BM1.Read(Px_,1);//×èòàåì äàííûå èç ïîòîêà
 
asm
 push BX
 mov BH, Px_
 mov BL, dat_
 ror BH, 1
 rol BX, 1
 mov Px_, BH
 mov dat_, BL
 pop BX
end;
 
BM1.Position:= Poz;
BM1.Write(Px_,1);//Ïèøåì äàííûå â ïîòîê
                end;
end;
Добавлено через 1 минуту
Procedure Write_Byte(_dat:Byte);
(_dat:Byte); Это байт текста

Добавлено через 1 минуту
for ind_:=1 to 8 do begin

поскольку в байте 8 битов то записываем байт текста в 8 байтов потока копии битмапа

Добавлено через 1 минуту
вот мы прочитали байт из потока копии битмапа и внедряем его бит

Добавлено через 46 секунд
Но тут нужно иметь представление об ассемблере и о регистрах процессора

Добавлено через 5 минут
но постараюсь обьяснить смысл.

вот байт. Это 8 бит
хххххххх

а слово состоит из двух байт

хххххххххххххххх

BH и BL Это регистры процессора, способные хранить байт.
Вместе они представляют 16 разрядный регистр BX для хранеия слова

Добавлено через 3 минуты
предположим текст это латинская буква A. код $41
или в двоичной 00101001

Добавлено через 24 секунды
Он в регистре BL

Добавлено через 5 минут
а в картинке пиксель код 00000011
Он занесён в регистр BH
В нём будет менятся младший бит. Поэтому поготовим место. Мы сдвигаем этот регистр на один разряд вправо. получаем 10000001

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

Следовательно в BX теперь
1000000100101001

Добавлено через 38 секунд
Сдвигаем теперь все 16 бит влево

Добавлено через 1 минуту
0000001001010011

Добавлено через 3 минуты
в BH
00000010
B BL
01010011

Добавлено через 4 минуты
в BH Нужный готовй байт. В нём младший бит изменён на ноль
в BL остался бате буквы но сдвинутый на один разряд влево. То есть в старшем разряде второй бит
При следующем обороте цикла этот бит заменит младший бит байта каринки, а на его место встанет 3 бит.
И так дале...
Другими словами байт буквы побитно наползает на подготовленный байт картинки

Вернуться к обсуждению:
Стеганография
3
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2012, 17:35
Готовые ответы и решения:

Стеганография
Доброго времени суток. Я начал изучать основы стеганографии и столкнулся с проблемой. Необходимо...

Стеганография
Доброй ночи! У меня большая проблема. Я не могу найти ошибку в программе. Она вместо удваивания...

Стеганография.Шифрование текста в картинку
Задали курсовую Стеганография, нужно чтобы текст шифровался в картинку jpeg. Помогите пожалуйста....

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

стеганография
в общем понадобилось скрыть текст в картинке средствами php. написал тривиальную прогу где нагло...

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