Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.20;
Скачать: CL | DM;

Вниз

Стеганография   Найти похожие ветки 

 
Rander   (2004-01-08 23:15) [0]

Господа проблема такова - нужно внедрять в изображения собственные данные. Может у кого-то есть какие-либо наработки в этой области? Очень и очень надо. Нужен хотя бы код занимающейся сменой наименьшего бита в bmp картинке, а обо всем остальном даже не мечтаю.


 
Ig   (2004-01-09 00:55) [1]

У меня есть прога(и не одна) которая это делает, но и"ссс"ходников к ней нет :(
З.Ы.
>код занимающейся сменой наименьшего бита в bmp картинке
А метод народного тыка непройдет?


 
TUser ©   (2004-01-09 07:34) [2]

algolist.manual.ru
+ архив по форумум (недавно был тут аналогичный вопрос).


 
Rander   (2004-01-09 12:10) [3]

Ig Не пройдет 8-(
И нужен исходник

TUser
Спасибо.
Я как раз и пытаюсь тех людей найти


 
Ega23 ©   (2004-01-09 12:18) [4]

TIFF для этого дела идеально подходит. Хоть музыку вовнутрь вшивай.


 
Rander   (2004-01-09 13:10) [5]

Ega23
Мне все равно bmp, jpg, tiff
Есть неделя!!! Времени по истечение которой я должен представить програмку встраивающую водяной знак.
Нужно для диплома, поскольку мне резко сказали, что все что сделано раньше не пойдет 8-((

Таким образом есть несколько проблем:
1. Преобразовать изображение в битовую форму - т.е. каждой точке сопоставить битовое число - так что изменяя скажем младший байт можно сохранить данные.

2. Готовый алгоритм занимающийся встраиванием данных.
Есть на с - но я просто не успею его переделать.

И куча прочих мелочей, которыми не хочу Вам пудрить мозги.

А посему просьба к людям сталкивавшимся с подобной проблематикой - любые материалы, исходники и прочее будут не просто полезны, они будут сверх необходимы.
Если есть возможность помогите!


 
Ega23 ©   (2004-01-09 13:14) [6]


> Rander (09.01.04 13:10) [5]

Объясни проблему по-подробнее:
Тебе нужно на некоторое изображение наложить полу-прозрачное с водяными знаками? Или что?


 
Rander   (2004-01-09 13:55) [7]

Ega23 ©
Спасибо что откликнулся.

Ситуация такова надо вложить в изображение скрытые данные. К которым мог бы получить доступ только авторизованный пользователь. Он вводит пароль а ему в ответ - эта картинка сделана таким-то.

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


 
han_malign ©   (2004-01-09 14:06) [8]

> Ega23 © (09.01.04 13:14) [6]
> Тебе нужно на некоторое изображение наложить полу-прозрачное с водяными знаками? Или что?
- или что - в теме написано - Стеганография

> Rander (09.01.04 13:10) [5]
> изменяя скажем младший байт
- если RGB(32/24/16 бит BMP) или CMYK(TIFF) - пройдет, причем можно три/четыре бита(по каждому каналу), а вот ежели палитра(64/256 цветов, в частности, GIF) - изображение накроется - нужно палитру затачивать(если в тупую - 128 цветная картинка, с 256 цветной палитрой - по два цвета, одинакового цвета(во тавтология) на бит).

С JPG, PNG отдельный случай, т.к. сжатие с потерей качества, и как внести однозначно востонавливаемый дополнительный сигнал, я лично, не знаю - надо с косинус-преобразованием разбираться("высокочастотную составляющую", то есть, данные в младших битах - порежет однозначно)...


 
Rander   (2004-01-09 14:14) [9]

han_malign
Вот как раз с этим я и вожусь.
Литературы море, но все теоретическое.
А времени банально нет.

Есть ли готовый код, который в один из рассмотренных тобой вариантов (без сжатия, ну его пока) осуществляет непосредственно внедрение?

Как вычислить контрольные суммы, зашифровать - это я придумаю, а вот как их после внедрить???


 
han_malign ©   (2004-01-09 15:11) [10]

только что слепил, на 24бит BMP (\WINDOWS\Web\Wallpaper\Bliss.bmp) работает(изменение младшего бита):

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap;
x,y,bw,i,j: integer;
_s: string;
b: byte;
pc: PChar;
begin
if(OpenDialog1.Execute)then begin
bmp:=TBitmap.Create;
bmp.LoadFromFile(OpenDialog1.FileName);
if(not (bmp.PixelFormat in[pfDevice,pf15bit..pf32bit]))then ShowMessage("Формат не поддерживается")
else begin
_s:=Edit1.Text+#0;
y:=0;
i:=1;j:=8;b:=0;
while((y<bmp.Height)and(i<=Length(_s)))do begin
x:=0;
while((x<bmp.Width)and(i<=Length(_s)))do begin
if(j=8)then b:=byte(_s[i]);

if(b and 1=0)then Bmp.Canvas.Pixels[x,y]:= Bmp.Canvas.Pixels[x,y] and not 1
else Bmp.Canvas.Pixels[x,y]:= Bmp.Canvas.Pixels[x,y] or 1;
b:=b shr 1;
dec(j);

if(j=0)then begin
inc(i);
j:=8;
end;
inc(x);
end;
inc(y);
end;
bmp.SaveToFile("fff.bmp");
end;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var bmp: TBitmap;
x,y,bw,i,j: integer;
_s: string;
b: byte;
pc: PChar;
begin
if(OpenDialog1.Execute)then begin
bmp:=TBitmap.Create;
bmp.LoadFromFile(OpenDialog1.FileName);
if(not (bmp.PixelFormat in[pfDevice,pf15bit..pf32bit]))then ShowMessage("Формат не поддерживается")
else begin
_s:="";
y:=0;
i:=1;j:=0;b:=$FF;
while((y<bmp.Height)and((j<>0) or (b<>0)))do begin
x:=0;
while((x<bmp.Width)and((j<>0) or (b<>0)))do begin
if(j=0)then begin
j:=8;
b:=0;
end;
b:=b shr 1;
if(Bmp.Canvas.Pixels[x,y]and 1<>0)then b:=b or $80;
dec(j);

if(j=0)then begin
_s:=_s+Char(b)
end;
inc(x);
end;
inc(y);
end;
Edit1.Text:=_s;
end;
end;
end;


 
Ega23 ©   (2004-01-09 15:13) [11]

Есть убогая система классов, которая расшифровывает TIFF и из него bmp делает. Обратно - не помню, вроде не закладывал. Писалось по-быстрому, нужно было узнать как раз то, что ты спрашиваешь - есть ли в изображении какая-нибудь "скрытая информация". Могу поделиться исходниками + статьи по формату Tiff.


 
Rander   (2004-01-09 15:20) [12]

han_malign
Огромное спасибо!!!
Этот кусок мне очень поможет, по крайней мере становится ясно как все работает.

Ega23
Если можешь залей куда нибудь или вот мой адрес
rander[собака]bk[точка]ru
Спасибо.


 
Ega23 ©   (2004-01-09 15:38) [13]

Лови.


 
Yura   (2004-01-09 16:25) [14]

Ega23
Очень интересный вопрос - есть ли в изображении какая-нибудь "скрытая информация". А со мной не мог бы поделиться своей разработкой?
Если да - то вышли по адресу asdf_yura[собака]mail.ru


 
han_malign ©   (2004-01-09 16:56) [15]

> Очень интересный вопрос - есть ли в изображении какая-нибудь "скрытая информация".
Если полноцветное "реальное"(с плавными переходами цветов) изображение:
- для RGB, CMYK строишь БПФ по каждому цветовому каналу, по строкам/столбцам - наличие высокочастотной шумовой составляющей показывает присутвие постороннего сигнала(или плохое качаство картинки :)) ). Таким образом любая зашифрованная информация удаляется из картинок протым Blur, в фотошопе, практически без потери качества :)).
Для палитры - еще проще - если слишком много дублируемых(или слишком близких) цветов - что-то здесь не так(хотя фактически хватит только одного, если его достаточно много на изображении)...


 
Ega23 ©   (2004-01-09 17:07) [16]


> Yura (09.01.04 16:25) [14]

Лови


 
Rander   (2004-01-09 18:15) [17]

Ega23
Получил спасибо!
Буду разбираться 8-)



Страницы: 1 вся ветка

Текущий архив: 2004.01.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.037 c
1-63223
korvet
2004-01-08 09:35
2004.01.20
Печать номера страници в модуле PRINTERS


14-63405
Undert
2003-12-27 19:38
2004.01.20
Как впихать wav или лучше MP3 в ресурсы Delphi и застваить чем-ни


14-63369
MV
2003-12-29 14:03
2004.01.20
Современный компьютер. Сегодня за покупкой.


1-63114
XED
2004-01-07 22:49
2004.01.20
Алгоритм сегментации полутонового изображения!!!


3-63001
AndrewK
2003-12-23 09:50
2004.01.20
Как правильно написать хранимую процедуру?