You are on page 1of 30

Завод за електронске системе и обраду информација

Стеганографије У СЛИКАМА

nika Парађина
Ивана Буклијаш
Крешимир Мудровчић
24. мај 2007.
САДРЖАЈ:

1. УВОД ....................................................................................... ..3

2. ВРСТЕ стеганографије ............................................................ .4

3. КОМЕРЦИЈАЛНЕ ПРИМЈЕНЕ стеганографије .............................. ... 7

3.1 СТЕГАНОГРАФСКИ АЛАТИ ................................................... .7

4. ЛСБстего .................................................................................... ..8

4.1 ОПИС АПЛИКАЦИЈЕ ............................................................... .8

5. ДЦТстего ................................................................................. ... 16

5.1. ОПШТЕ О дискретној КОСИНУСНОЈ ТРАНСФОРМАЦИЈИ ... .16


5.2. ОПИС КОРИШТЕНЕ МЕТОДЕ ................................................ .19

6. КОДОВИ .................................................................................... ..24

6.1 ЛСБстего ........................................................................ .... 24


6.2 ДЦТстего ........................................................................ ... 30

2
1. УВОД

Дефиниција стеганографије према Маркус-у Кахн-у је: "Стеганографија је наука и


уметност комуницирања на такав начин да је скривено и само постојање
комуникације. За разлику од криптографије, која допушта "непријатељу" откривање
и модификовање поруке без да се прекораче неке границе безбедности дефинисане
криптосистемом, циљ стеганографије је сакривање стеганографске порука унутар
супротном потпуно безопасних порука на такав начин да "непријатељ" уопште не
примети постојање друге поруке. " Уопштено, она ће изгледати као да је нешто
друго, породична слика, новински чланак, списак намирница или нека друга
порука.

Реч стеганографија је грчког порекла, и значи "покривена, скривена слика". Прве


примере стеганографије налазимо у Херодот-овој књизи "Историје Херодота" већ
440 година пр. Кр .. Краљ Дарије је обријао главу своме највернијем робу и на њу
тетовирао поруку о дизању буне против Персијанаца. Када је коса нарасла, порука
је скривена.

У данашње доба, стеганографија је неправедно добила негативан предзнак због


гласина да се њоме служе терористи. Такве гласине су се прво јавиле 5. фебруара
2001.
у дневним новинама "УСА Тодаи". Цитат из тога члана: "У задње време, ал-
Каедаини оперативци међусобно комуницирају преко порука скривених у
дигиталним фотографијама на аукцијској страници е-Баи." Новинар који је написао
чланак, Јацк Келли, је отпуштен 2004. након оптужби да је измишљао приче и
изворе. Међутим, вест о коришћењу стеганографских техника у планирању
терористичких напада пренеле су многе стране новинске агенције, поготово након
11.9. До данас, није нађен нити један комад доказа који би поткрепио такве тврдње.

3
2. ВРСТЕ стеганографије

1.Скривање порука у текст

Текстуалне датотеке имају мало количину редундантних података који би се могли


заменити поруком. То увелико отежава кодирање. Друга отежавајућа ствар је лакоћа
којом се текстуалне датотеке могу мењати или преформатирати у друге облике
нпр. .ТКСТ у ПДФ., При чему се промени и скривена стеганографска порука. Неке
од метода које се користе су:

а) Померање линија
Линије текста се померају вертикално горе или доле.
Вриједностиелемента тајне поруке одговарају помаку линије у односу на
унапред дефинисану позицију.

б) Померање речи
Прилагођавамо хоризонталне размаке између речи тако да одговарају вредностима скривеног
податка. Овај начин је мање видљив од горе наведеног, али захтева да
коришћени формат текста подржава варијабилне размаке.

ц) Прилагођавање облика слова


Мењају се одређени атрибути слова попут хоризонталне или
вертикалне дужине слова.На овакав начин сакривену поруку најтеже
је детектовати јер постоји много начина на која се слова могу
изменити.

Сва три начина захтевају да прималац има увид у оригиналну текстуалну датотеку
да би могао да декодира поруку.

2. Скривање порука у слику

Ово је најчешће и најраширеније коришћена метода стеганографије.


Предност јој је што искориштава ограничења људског визуелног система. Скоро
сваки текст, слика или неки други медиј који се може претворити у низ битова,
може се сакрити у дигиталну слику.

У обради дигиталне слике најчешће сусрећемо слике од 8 бита по пикелу или 24


бита по пикелу.
8-битне слике су погодне јер су мале величине, али то такође значи да се може
употребити само 256 боја. Зато се 8-битна слика у боји обично пребацује у сиву
слику нпр. .ГИФ јер је људски визуелни систем слабо осетљив на разлике сивих

4
нијанси. 24-битне слике омогућава већу флексибилност. На располагању имамо
велики број боја (око 16 милиона) који надилази могућности људског визуелног
система и чини такво кодирање сигурнијим. Друга предност, али и мана, 24-битне
слика је њена величина (МБ). Можемо похранити пуно више података него у 8-
битну слику, али је она, управо због своје величине, сумњивија.

Добро решење за смањење величине 24-битне слике је компресија. Постоје два


типа компресије, компресија са губицима и компресија без губитака. Компресија са
губицима, попут .ЈПЕГ, знатно смањује величину слике тако да уклања сувишне
податке и израчунава апроксимацију оригиналне слике. То је уједно и њена највећа
мана, с аспекта стеганографије, јер постоји велика вероватноћа да ће се
компресијом изгубити делови некомпримоване сакривене поруке. Компресија без
губитка не мења оригиналну слику и зато је занимљивија за стеганографске
примене. Примери такве компресије су .БМП и .ГИФ. Међутим, недостатак је што
се тиме битно не промени величина слике.

1. Најпопуларнији начин сакривања порука (или слика) унутар слике је метода


најмање значајног бита (енг. Леаст Сигнифицант Бит). Користећи најмање
значајни бит свакога бајта у слици, може се сачувати 3 бита податка у сваки
пиксел 24-битне слике и по један бит податка у 8-битну слику. Врло често је
могуће, уместо најмање значајног бита, узети 2 најмање значајна јер људски
визуелни систем у већини случајева не може приметити разлику .Недостатак
ове методе је велика рањивост при измени слике.

2. Техника сакривања бита унутар математичких функција које се користе у


компресијским алгоритмима је компликованија за применити на слици, али
ју је и теже детектовати. Подаци се сакривају у најмање значајне
коефицијенте трансформације.
ЈПЕГ формат користи дискретну Косинусном трансформацију (ДЦТ) за
компресију слике. ДЦТ је трансформација која приказује слику као суму
косинуса одређених тежина. Када се стеганографска порука сакрије у слику,
однос коефицијената се промени. Осим помоћу ДЦТ-а, подаци се могу
скриват иу коефицијенте слике добијене брзом Фоуриеров трансформацијом
(енг. Фаст Фоуриер Трансформ, ФФТ) или вавелет трансформацијом.

3. Технике маскирања и филтрације проширују податке слике тако да маскирају


сигнал који се жели сакрити у оригиналну слику и тиме повећавају
редундатност слике, која тако постаје отпорна на модификације. Зато је ова
метода најпопуларнија код рада с .ЈПЕГ форматом. Највише се користи за
израду дигиталних водених жигова. У свету се воде расправе о томе да ли
ова метода уопште припада стеганографије јер не скрива податке у постојећу
слику.

5
3.Скривање порука у аудио

Скривање стеганографских порука у аудио сигнал јер компликовано због


велике осетљивост људског уха. Ипак, људски слушни систем слабо разликује тихи
звук унутар гласног и та се чињеница искоришћава при кодирању. Метода
сакривања поруке зависиће од два фактора: формату у којем се налази аудио запис и
медију преко којега се преноси.
Типична 3 дигитална аудио формата који се користе су: отипкавање с
квантизацијом, отипкавање променљивом фреквенцијом и перцепцијско
отипкавање. Отипкавање с квантизацијом је 16-битно линеарно отипкавање које се
нпр. Користи у .ВАВ и .аифф форматима. Отипкавање променљивом фреквенцијом
омогућава селективну промену фреквенције отипкавања у кХз. Шта је виша
фреквенција отипкавања, то ће се простор података моћи боље искористити.
Перцепцијско отипкавање мења статистичке функције аудио сигнала тако да кодира
само делове сигнала које слушалац чује и тиме задржава звук, али мења сигнал.
Овај формат је коришћен у .МП3-у.
Преносни медијум тј. Пут сигнала од пошиљаоца до слушалаца се може
поделити на четири главан типа:
1) дигитални од краја до краја- сигнал се преноси без модификације
2) повечана / смањена фреквенција отипкавања- мења се фреквенција отипкавања,
али сигнал остаје дигиталан
3) аналоган и поновно отипкан- сигнал се претвори у аналоган сигнал и затим се
отипка различитом фреквенцијом
4) преко ваздуха - сигнал се преноси радио таласима, а поновно се отипкава у
микрофону

Три најпопуларније методе за скривање података у аудио сигнал су:

Метода најнижег бита скрива податке у најмање значајан бит аудио фајлове.
Капацитет канала је 1 КБ по секунди по кХз-у (44 кбпс за са 44 КХз отипкан
секвенцу). Ова је метода лагана за коришћење, али је јако подложна губитку
информација због шума или поновног отипкавања.
Фазно кодирање замењује фазу почетног сегмента аудио сигнала са
референтном фазом која представља сакривене податке. Притом се користи
дискретна Фуријеова трансформација.

6
Метода кодирања преко целог спектра скрива податке поруке у цео спектар
сигнала, те затим одашиље сигнал преко разних фреквенција зависно о методи која
је изабрана за промену спектра.

Циљ сваке стеганографске методе је да промене на оригиналном сигналу буду


визуелно, али и спектрално неприметне или барем спектрално нераздвојиве од
шума који је увек присутан. Још увек ниједна позната метода није у томе 100%
успела.

3. КОМЕРЦИЈАЛНЕ ПРИМЈЕНЕ стеганографије

Користи се за маскирање идентификационих података у ТЦП / ИП заглављу да би


се сакрио прави идентитет једног или више система. Оваква примена је корисна ако
се захтева да цео процес комуникације путем интернета буде тајан.

Најчешћа примена стеганографских поступака је у дигиталним воденим жиговима,


који се користе за заштиту ауторских права на начин да се у слику или угради лого
фирме или да се сакрије серијски број. На пример, писаћи у боји (ХП, КСЕРОКС)
додају свакој страници мале жуте тачке, које људско око не може распознати, а
садрже делове серијског броја, датум и време. Многе интернет компаније успешно
продају своје алате за стварање дигиталних водених жигова. Једна од
најуспешнијих је Дигимарц, која нуди све од бесплатног софтваре-а ПицтуреМарц,
који је додатак Пхотосхоп-у и ЦорелДрау-у, до апликације МарцСпидер, намењене
компанијама, која по интернету тражи недозвољене репродукције њиховог
власништва. Тиме се служи и часопис Плаибои.

Стеганографске технике нису толико ефикасне ако се примене на слике


компримисане с губитком нпр. На .ЈПГ слике. Таквом компресијом одбацују се
редундантна информација из слике, а стеганографија искоришћава управо те
небитне информације. Зато многи озбиљни програми, који тврде да проводе
стеганографију на .ЈПГ сликам, заправо лажу. Инвисибле Сецретс сакрива податке
у коментар у заглавља, а нешто бољи СецуреЕнгине додаје податке на крај
оригиналне датотеке.

3.1. СТЕГАНОГРАФСКИ АЛАТИ

Данас више није нужно знање програмирање да би се могле користити


стеганографске технике. Постоје многи стеганографски алати који омогућавају
сакривање података

7
драг-анд-дроп поступком. Одабере се датотека коју желимо сакрити, одабере се
датотека коју желимо користити као параван, одаберемо поступак који желимо
користити те лозинку и притиском на тастер на тастатури, подаци су скривени.
Притом, наравно, корисник мора водити рачуна коју ће слику користити као
параван. Једноставно правило било би да је увек боље одабрати шарену слику свога
пса која је већини људи непозната јер је мања вероватноћа да би неко могао уочити
неправилности. Пример оваквог алата јеС-Тоолс који нуди скривање датотека било
каквог формата у .ГИФ, или .БМП слике или .ВАВ звук.
МП3 стегли скрива податке у .МП3 аудио фајлове. Стеганос 3 нуди напредне
технике енкрипције у комбинацији са разним техникама стеганографије.

4. ЛСБстего

4.1 Опис апликације

Ова апликација користи ЛСБ-ове сваког пиксела као медиј похране скривених
података. За скривање текста користи се лозинка како би подаци били заштићени те
како не би сваки ЛСБ заменили (предвидљиво).
Код скривања слике велики је проблем величина слике коју желимо сачувати јер ако
особа која треба открити слику из стегослике не зна којих је димензија слика коју
смо сакрили, она ју никако не може реконструисати.
Зато смо у овој методи одлучили величину слике коју желимо сакрити прилагодити
величини "цовер" слике.
Други проблем је квалитет слике, кад бисмо хтели сакрити без квантизирање неку
РГБ слику, максималне димензије би нам биле 90 * 90 за "цовер" слику 256 * 256.
Зато смо одлучили квантизирати слику на 3 бита те сваки бит спремити у једну од
РГБ компонената.

У матлабовом цомманд прозору уписати

главниЛСБ

8
Апликација ЛСБстего коју смо израдили за потребе овог пројекта састоји се од
неколико подфункција које се лако бирају у горњем менију па ћемо описати сваки
поједини избор.

За сакривање текста у слику поступак је следећи:

1.Учитавање слике у коју треба сакрити податке

- у МАТЛАБ прозору тражи се унос црно-беле слике:

Унесите назив слике: 'Слика.тифф'

- приказ унесене слике

9
2.Учитавање текстуалне датотеке коју треба сакрити у слици

- прво се тражи унос лозинке да се израчуна максимални капацитет за унету


лозинку

Унесите лозинку: 'Досл'

- позива се функција капацитет која рачуна максимални капацитет за унету


лозинку на начин да проверава за колико пиксела на слици вреди услов да је
поједини бит лозинке у бинарном облику једнак задњем биту бинарно
гледаног редног броја пиксела на слици

Максимално мозете сакрити 14043 Бајтова података за унету лозинку

Унесите назив текстуалне датотеке: 'Првих5.ткт'

10
Првих 5 страница текста овог семинара величине 11254 Бајтова

- позива се функција уцитајдата која цита знакове из датотеке и претвара их у


бинарни низ те исписује величину датотеке

Велицина података које зелите сакрити је 11254 Бајтова

4. Сакривање текста у слику

- - позива се функција замјенаЛСБ која у задату слику сакрива бинарни облик


података из датотеке на начин да замењује ЛСБ на местима где је задовољен
услов да је поједини бит лозинке у бинарном облику једнак задњем биту
бинарно гледаног редног броја пиксела на слици
- ЛСБови се замењују док се не сакрију сви подаци, или док се не замене сви
ЛСБови који задовољавају тражени услов
- Приказује се број замена

Изврсено је 90032 замена ЛСБ-а

- приказује се слика у којој су сакривени подаци

11
Оригинална слика и стегослика
900 900

800 800

700 700

600 600

500 500

400 400

300 300

200 200

100 100

0 0

0 50 100 150 200 250 0 50 100 150 200 250

Хистограм оригиналне слике и стегослике

6.Спремање стегослике на диск

- функцијом имврите добијена стегослика уписује се у жељену датотеку

Унесите назив датотеке у коју зелите спремити стегослику:


'СтегоЛСБслика.тифф'

7.Уцитавање слике са скривеним подацима

- када желимо прочитати скривене податке из неке слике, прво морамо


учитати ту слику

12
Унесите назив стегослике: 'СтегоЛСБслика.тифф'
8.Прочитај сакривени текст из слике

- тражи се унос лозинке да би се спречило неовлашћено читање скривених


података.

Унесите лозинку за откривање података из слике:

- потребан је и унос назива датотеке у коју желимо сачувати откривене стего


податке

Унесите назив датотеке у коју треба сачувати податке: 'СтегоЛСБдат.ткт'

Датотека стегоЛСБдат.ткт идентична је датотеци првих5.ткт

За припадну лозинку повезаност величине слике и поруке приказана је у табели

Величина цовер слике Макимална величина поруке (бите)


256 * 256 14043
512 * 512 56174
1024 * 1024 224.694

За сакривање слике у слику поступак је следећи:


(За поступке идентичне као у сакривању текста неће бити детаљнијег објашњења)

1.Учитавање слике у коју треба сакрити податке

13
2. Учитавање црно-беле слике коју треба сакрити у слици

- тражи се унос неке црно беле слике коју желимо сакрити

Унесите назив црно-беле слике: 'Елаине.512.тифф'

- исписујемо величину слике

Велицина васе слике је 262144 Бајтова

- величину слике мењамо да буде једнаком димензија као цовер слика у коју
сакривамо слику

За потребе сакривања променити цемо велицину за фактор:


00:50 хоризонтално
00:50 вертикално

5. Сакривање црно-беле слике у слику

- мијењамо мењамо величину слике коју желимо сакрити у величину цовер


слике те
квантизирамо на 3 бита како бисмо могли сваки бит сакрити у једној РГБ
компоненти., што је и цела идеја мењања величине и квантизирање

- на тај начин промијенит ћемо у РГБ слици димензија к * и све ЛСБ-ове,


свеукупно 3 * к * и промена

14
- због чињенице да овим поступком морамо променити све ЛСБ-ове слике,
процес може бити дуготрајан када желимо сакрити слику у неку слику већих
димензија

- тако је за нашу цовер матрицу димензија 256 * 256 процес скривања трајао 6
минута

Изврсено је 196.608 замена ЛСБ-а

Оригинална слика и слика са сакривеном сликом у себи

900 900

800 800

700 700

600 600

500 500

400 400

300 300

200 200

100 100

0 0

0 50 100 150 200 250 0 50 100 150 200 250

15
6.Спремање стегослике на диск

7.Уцитавање слике са скривеним подацима

9.Процитај скривену слику из слике

- потребно је унети назив датотеке у коју желим спремити откривену слику

Унесите назив датотеке у коју треба сачувати слику: 'Стеготајнаслика.тифф'

- процес је такође дуготрајан за велике слике, трајање је слично као и за


сакривање слике
- позива се функција откријслику која извлачи ЛСБове и враћа бинарни низ
података који се затим пребаце у матрични облик те добијемо слику коју је
неко (ми) сакрили овом методом

Пронасао сам 196.608 битова података

16
5. ДЦТстего

5.1 Уопштено о дискретној косинусној трансформацији

Дефиниција

Формално, дискретна косинусна трансформација је линеарна функција Ф: РН -> РН


(где Р представља скуп реалних бројева). или еквивалентна квадратној матрици
димензија НкН. постоји неколико варијанти ДЦТ-а.
Дискретна косинусна трансформација је еквивалентна дискретној Фоуриеровој
трансформацији када се врше операције над реалним подацима са парном
симетријом (с обзиром да је Фуријеов трансформација активних и парне функције
реална и парна), где су у неким случајевима улаз и / или излаз померити за пола
узорка. Дискретна косинусна трансформација приказује функцију или сигнал у
облику збира синусоида различитих фреквенција и амплитуда.
Постоји 8 стандардних ДЦТ варијанти, од којих су четири уобичајене.

Најучесталија варијанта дискретне косинусне трансформације је тип-ИИ ДЦТ, који


се често скраћено назива ДЦТ. Тип-ИИИ ДЦТ је инверз типа-ИИ ДЦТ-а и познат је
као инверзна косинусна трансформација (ИДЦТ).

17
ДЦТ-ИИ

ДЦТ-ИИ је вероватно најчешће коришћен тип дискретне косинусне


трансформације, због чега се често назива једноставно ДЦТ.

Ова трансформација је управо еквивалентна ДФТ од 4Н реалних улазних сигнала


парне симетрије где су парно индексирани елементи једнаки нули. Односно,
одговара половини ДФТ-а од 4Н улазних сигнала ин, где је:

и2н = 0, и2н + 1 = кн за 0 ≤н <Н и и4Н - н = ин за 0 <н <2Н.

Неки аутори даље множе Кс0 са 1 / √2 што ДЦТ-ИИ матрицу чини ортогоналном.

ДЦТ-ИИ такође уводи граничне услове:

кнје паран око н = -1 / 2 и паран око н = Н-1/2; Кск је паран око к = 0 и непаран око
к = Н.

18
инверзне трансформације

Инверз од ДЦТ-И је ДЦТ-И помножен са 2 / (Н-1). Инверз ДЦТ-ИВ је ДЦТ-ИВ


помножен са 2 / Н. Инверз ДЦТ-ИИ је ДЦТ-ИИИ помножен са 2 / Н (важи и обрат).

upotreba

Дискретна косинусна трансформација, посебно ДЦТ-ИИ, често се користи у обради


сигнала и слике, посебно за компресију са губитком квалитета, када добијени
сигнал након обраде није једнак оригиналу. Већина сигнала смести се у неколико
ниско-фреквентних компоненти дискретне косинусне трансформацији.

На пример, дискретна косинусна трансформација користи се на ЈПЕГ компресији


слике, МЈПЕГ, МПЕГ и ДВ видео компресији. Следи, рачунамо дводимензионални
ДЦТ-ИИ блока димензије НкН и резултати се квантизирају и кодирају ентропијом.
У овом случају, Н је типично 8 и ДЦТ-ИИ формула користи се на сваком реду и
колони блока. Резултат је 8к8 низ коефицијента трансформације у којем је елемент
(0,0) ДЦ компонента (нулта фреквенција) и улази са растућом вертикалном и
хоризонталном вредности индекса који презентују више вертикалне и хоризонталне
просторне фреквенције.

Модификована косинусна трансформација, или МДЦТ (заснована на ДЦТ-ИВ),


користи се у компресији ААЦ, Ворбис и МП3 аудио формата.

Дискретна косинусна трансформација такође се пуно користи у решавању


парцијалних диференцијалних једначина помоћу спектралне метода, где разне
варијанте дискретне косинусне трансформације одговарају помало промењеним
парно / непарним граничним условима за два краја низа.
Дискретна косинусна трансформација уско је повезана и са Цхебисхевљевим
полиномима, а брзи ДЦТ алгоритми користе се у Цхебисхевљевој апроксимација
произвољних функција као серија Цхебисхевљевих полинома, на пример у
Цленсхав-Цуртис интегралним једначинама

слика 3. Приказ имплицитног парно /


непарног
наставка ДЦТ улазног сигнала,
за Н = 11 податковних тачака,
на примеру најчешће коришћених
ДЦТ типова (И-ИВ)

5.2 ОПИС КОРИШТЕНЕ МЕТОДЕ

19
Слику, коју желимо искористити за
прекривање поруке, трансформишемо главни
дискретном Косинусном
трансформацијом. Коефицијенти
дискретне косинусне трансформације,
који одговарају нижим фреквенцијама,
носе већину информација о слици.
Другим речима, то значи да промена на
коефицијентима виших фреквенција,
изазвана заменом бита поруке коју
желимо да пренесемо, и најмање
значајног бита одабраног ДЦТ
коефицијента, неће имати видљиви
утицај на изглед слике. Додатно се
промена, са аспекта статистичке
раздиобе коефицијената, али и са
аспекта безбедности, може учинити
непримјетније (?), Уколико се помоћу
шифре промијене само они
коефицијенти који одговарају некој
релацији. Релација се може произвољно
одабрати. У нашем случају релација Апликација ДЦТстего коју смо
гласи: израдили за потребе овог пројекта
састоји се од неколико подфункција које
задњи_бит_редног_броја_коефицијента = се лако бирају у горњем менију па ћемо
бит_лозинке АНД
(вриједност_ДЦТ_коефицијента = 1 ОР
описати сваки поједини избор.
вриједност_ДЦТ_коефицијента = 0)
1.Учитавање слике у коју треба сакрити
Уколико релација није задовољена, податке
коефицијент се неће променити. Да би
прималац могао одгонетнути поруку, - у МАТЛАБ прозору тражи се унос
мора унапред знати шифру. црно-беле слике:

Реконструкција поруке из слике ради се Унесите назив слике: 'Сиво.тифф'


на аналоган начин као и скривање
поруке. На слику, која садржи скривене - приказ унесене слике
информације, се примени дискретна
косинусна трансформација, затим се из
коефицијената, који задовољавају
унапред дефинисану релацију, извлаче
најмање значајни битови. Добијени низ
битова чини скривену поруку.

У матлабовом цомманд прозору


уписати

20
мање од 3, а који задовољавају
горњу релацију, замењује нулама
- на екрану се исписује број
коефицијената који су замењени
нулама

31924 бројева мањих од 3 заменио сам


нулама на припадним позицијама

- исписује се и колико макимално


можемо сакрити података

Макимално мозете сакрити 3991


Бајтова података за ову лозинку

Унесите назив датотеке: '


тест.ткт '
originalna слика

2.Учитавање датотеке коју треба


сакрити у слици

- у МАТЛАБ прозору тражи се


унос лозинке:

Унесите лозинку: 'Досл'

- унесена лозинка користи се као


својеврсни псеудорандом
генератор бројева, тако да се не
мења сваки ДЦТ коефицијент
већ само они коефицијенти који
- позива се функција уцитајдата
задовољавају доле описану
која из датотеке чита знакове и
релацију
претвара их у бинарни низ и
задњи_бит_редног_броја_коефицијента =
бинарна матрицу
бит_лозинке АНД
(вриједност_ДЦТ_коефицијента = 1 ОР 3.Сакривање датотеке у слику
вриједност_ДЦТ_коефицијента = 0)
- позива се функција сакриј која
- након тога позива се функција замењује ЛСБ-ове ДЦТ
дцтблокови8 која улазну слику коефицијената те на тај начин
претвара у 4Д матрицу ДЦТ сакрива податке у бинарном
коефицијената те која у доњој облику све док не замени све
трокутастој матрици сваког 8 * 8 ЛСБ-ове ДЦТ коефицијената
ДЦТ блока све коефицијенте

21
који задовољавају услов или кад 900

упише све податке 800

700

- функција враћа 4Д матрицу са 600

замењеним ДЦТ 500

коефицијентима 400

300

200
Изврсено је 7672 замена ЛСБ-а 100

- након што обави функцију 0 50 100 150 200 250

сакриј позива се функција


блокуматрицу која 4Д матрицу 900

ДЦТ коефицијената претвара у 800

2Д матрицу која представља 700

нашу добијену слику са 600

промењеним ДЦТ
500

400
коефицијентима 300

200

100

0 50 100 150 200 250

Приказ хистограма

4.Спремање стегослике на диск

- функцијом имврите добијена


стегослика уписује се у жељену
датотеку

Унесите назив датотеке у коју зелите


спремити стегослику:
'Стегослика.тифф'
Приказ оригиналне слике и
стегослике 5.Уцитавање слике са скривеним
подацима

- када желимо прочитати скривене


податке из неке слике, прво
морамо учитати ту слику

Унесите назив стегослике:


'Стегослика.тифф'

22
променом вредности пиксела, променио
се и њихов фреквенцијски однос, а тиме
5.Процитај сакривене податке из слике и коефицијенти ДЦТ-а. Мала је
вероватноћа, да ће баш они
- да бисмо заштитили податке, приступ коефицијенти које смо циљано мењали,
скривеној информацији могућ је само услед квантизације, остати
ако оба корисника користе исту лозинку непромењени. Промена коефицијената,
значи и промену битова поруке те се
Унесите лозинку за откривање порука више неће моћи реконструисати.
података из слике: 'Досл' Порука пренесном без кватизације
идентична је оригиналној.
- тражи се и унос имена датотеке Апликација ради са квадратним црно-
у коју се желе сачувати белим сликама димензија које су
откривени подаци вишекратници од 8, али уз мање
модификације апликација може радити
и за ргб слике, као и за слике
Унесите назив датотеке у коју треба произвољних димензија.
сачувати податке: 'Стегоподаци.ткт' Даља модификација била би решити
проблем квантизације која у овој
- позива се функција методи може створити криво пренесене
стегодцтблокови8 која од слике податке.
ради 4Д матрицу ДЦТ
коефицијената
- позива се функција откриј која
из ДЦТ коефицијената уз помоћ
лозинке, узима поједине ЛСБ-
ове те формира бинарни низ
података
- позива се функција уписидата
која узима добијени бинарни низ 6. КОДОВИ
података те их уписује у тражену
датотеку као слова 6.1 ЛСБстего
Величина цовер слике главни.м
256 * 256
512 * 512 % Мени функција
% 1. Учитавање слике у коју треба сачувати
1024 * 1024 податке
% 2. Учитавање датотеке са подацима које
треба спремити
% 3. Сакриј податке у слику
Проблем се јавља код МАТЛАБ-ове % 4. Учитавање слике у којој су скривени
подаци
функције имврите која слику описану % 5. Процитај сакривене податке из слике
вредностима тачака типа доубле, % Затвори програм

претвара у тип података уинт8, при избор = 0;


чему се изврши квантизација вредности варијанта = 10;

тачака слике. Иако визуелно слика и


% Направи мени
даље изгледа једнако, минималном вхиле избор ~ = варијанта,

23
избор = мену ('Стеганографија у сликама - иф(Боје ~ = 1)
ЛСБстего - ДОСЛ (2007)',... спринтф ('Покусавате сакрити ргб слику,
'1. Уцитавање слике у коју треба сакрити радије покусајте са црно-белом сликом \ н',
податке ',... Роунд (капац_лсб / 8))
"2. Уцитавање тесктуалним датотеке коју енд;
треба сакрити у слици ',... вел_слика = (ДИМ1) * (дим2) * (боје);
'3. Уцитавање црно-беле слике коју треба спринтф ('Велицина васе слике је% д
сакрити у слици ',... Бајтова', Вел_слика)
'4. Сакривање текста у слику ',... спринтф ('За потребе сакривања променити
'5. Сакривање црно-беле слике у слику цемо велицину за фактор: \ н% .2ф
',... хоризонтално \ н% .2ф вертикално',
'6. Чување стегослике на диск ',... (У./дим1), (в./дим2))
'7. Уцитавање слике са скривеним подацима
',...
'8. Процитај скривени текст из слике ',... енд;
'9. Процитај скривену слику из слике ',... % 4. Сакриј податке у слику
'Затвори програм'); иф избор == 4;

стеголсб = замјенаЛСБ (имглсб, лсблоз_бин,


лсббиндат);% Замена ЛСБа за скривање текста
% 1. Учитавање слике у коју треба сачувати фигуре, имсхов (стеголсб, мап); титле
податке ('Слика након замене ЛСБ-а');% Приказ слике
иф избор == 1; енд;
сликалсб = инпут ('Унесите назив слике:');
[Имглсб, мап] = имреад (сликалсб);% % 5. Сакриј слику у слику
Уцитавање слике иф избор == 5;
фигуре, имсхов (имглсб, мап);% Приказ [Ксиб] = сизе (имглсб);% Димензије цовер
слике слике
енд; сликахиде = имресизе (сликахиде,
[ки],'Билинеар'); % Уједнацавање димензија
% 2. Учитавање датотеке са подацима које стего и цовер слике
треба спремити сликахиде = квант (сликахиде, 8);%
иф избор == 2; Квантизирање на 8 ниво (вредности 0-7)
лсб_лозинка = инпут ('Унесите лозинку:'); фигуре, имсхов (сликахиде, []);% Приказ
лсблоз_бин = дец2бин (доубле (уинт8 слике
(лсб_лозинка)), 8);% Претварање у бинарни бинс = дец2бин (сликахиде, 3);% Претворити
облик у 3 бинарне цифре
капац_лсб = капацитет (имглсб, бинарнодата = [];
лсблоз_бин);% Рацунање капацитета [Ров, цол] = сизе (бинс);
спринтф ('Максимално мозете сакрити% д фор и = 1: ров
Бајтова података за унету лозинку', Роунд фор ј = 1: цол
(капац_лсб / 8)) бинарнодата = [бинарнодата бинс (ров * (ј-
лсбдат_улазна = инпут ('Унесите назив 1) + и)]; % Претворити у низ бинарних
текстуалне датотеке:'); бројки
[Лсббиндат, лсббинмат] = уцитајдата енд
(лсбдат_улазна); % Цитање текстуалне енд
датотеке стеголсб = сакријслику (имглсб,
иф(Лсббиндат> капац_лсб) бинарнодата);% Сакрити слику у слику
фпринтф ('Улазна датотека је превелика \ н фигуре, имсхов (стеголсб, мап); титле
максимални капацитет:% д Бајтова \ н ('Слика након замене ЛСБ-а са сакривеном
велицина улазних података:% д Бајтова \ н', сликом');
Роунд (капац_лсб / 8), роунд (сизе енд;
(лсббиндат, 2) / 8))
енд; % 6. Чување стегослике на диск
спринтф ('Велицина података које зелите иф избор == 6;
сакрити је% д Бајтова', Роунд (сизе лсбстего_сл = инпут ('Унесите назив
(лсббиндат, 2) / 8)) датотеке у коју зелите спремити
енд; стегослику:');
имврите (стеголсб, лсбстего_сл);% Спреми
% 3. Учитавање слике које треба спремити слику на диск
иф избор == 3;
[Увз] = сизе (имглсб);% Димензије цовер енд;
слике
капац_лсб = у * в * з;% Рацунање % 7. Учитавање слике у којој су скривени
капацитета подаци
лсбслика_улазна = инпут ('Унесите назив иф избор == 7;
црно-беле слике:'); лсбстегослика = инпут ('Унесите назив
[Сликахиде, мап] = имреад стегослике:');
(лсбслика_улазна);% Уцитавање слике коју [Лсбстегоимг, мап] = имреад
треба сакрити (лсбстегослика);% Уцитавање слике са
[ДИМ1 дим2 боје] = сизе (сликахиде); сакривеном подацима

24
% Враца број битова који се могу заменити,
енд; тј. Који задовољавају услов
% 8. Процитај сакривене податке из слике % Да је задњи бит бинарног облика
иф избор == 8; коефицијента једнак поједином биту лозинке
лсбстего_лозинка = инпут ('Унесите лозинку % У бинарном облику
за откривање података из слике:');% Унос % Н - улазна слика (слика у којој сакривамо
лозинке податке)
лсбстеголоз_бин = дец2бин (доубле (уинт8 % Лсб_лозинка - лозинка у бинарном облику
(лсбстего_лозинка)), 8);% Конверзија % Лсбкоеф - броји чланове матрице
лозинке у бинарни облик %
лсбдат_излазна = инпут ('Унесите назив %
датотеке у коју треба сачувати податке:');% [Кси ргб] = сизе (Н);
Унос излазне датотеке [Безвезе кеилен] = сизе (лсб_лозинка);
тајна = откријлсб (лсбстегоимг,
лсбстеголоз_бин); % Откривање скривених капац_лсб = 0;
података лсбкоеф = 1;
уписидата (тајна, лсбдат_излазна);% Упис бројац = 1;
скривених података у датотеку фор и = 1: к
фор ј = 1: и
енд; лсбкоеф_бин = дец2бин (лсбкоеф, 8);
иф ((Лсбкоеф_бин (сизе (лсбкоеф_бин, 2))
% 9. Процитај сакривену слику из слике == лсб_лозинка (бројац)))% Провера услова
иф избор == 9; капац_лсб = капац_лсб + 1;
бројац = бројац + 1;
лсбслика_излазна = инпут ('Унесите назив иф(Бројац> кеилен)
датотеке у коју треба сачувати слику:'); бројац = 1;
енд
тајна = откријслику (лсбстегоимг); % енд
Открити скривени низ бинарних података лсбкоеф = лсбкоеф + 1;
[Клм] = сизе (лсбстегоимг); енд
тајна_слика = зерос (к, л);% Празна енд
матрица димензија као и сакривена слика капац_лсб = капац_лсб * ргб;
бројац = 1;
[Днк, сизетајна] = сизе (тајна);
фор и = 1: (сизетајна / 3)
бинтемп (:, и) = бин2дец (тајна ((и-1) * 3
уцитајдата.м
фунцтион [Биндат, бинмат] = уцитајдат
+ 1: и * 3));% Конверзија у декадски облик
(датотека);
енд;
% Ова функција слузи за цитање података
типа цхар из неке датотеке
фор и = 1: к
% Датотека - име датотеке из које је
фор ј = 1: л
потребно процитати податке
иф((Бројац * 3)> (сизе (тајна, 2)))
% Биндат - бинарни низ процитаниј знакова
бреак;
% Бинмат - колона са знаковима у бинарном
енд;
облику
тајна_слика (ј, и) = бинтемп (бројац);%
Спреми бројеве у поља матрице
% Инициализација вектора
бројац = бројац + 1;
биндат = [];
енд
енд
% Отвори датотеку за цитање
фигуре, имсхов (тајна_слика, []);% Приказ
фид = фопен (датотека, 'Р');
откривене слике
имврите (тајна_слика, граи (8),
% Провера да ли тражена датотека постоји
лсбслика_излазна);% Упис откривене слике на
иф (Фид == -1)
диск
еррор ('Не могу отворити датотеку за
цитање');
енд;
енд
% Затвори програм
% У цхарниз спреми све знакове из датотеке
иф избор == 10;
цхарниз = фсцанф (фид, '% Ц');
цлосе алл;% Затвори све прозоре
енд;
% Конверзија знакова у уинт8
енд;
интниз = уинт8 (цхарниз);

% Конверзија уин8 у бинарни облик


капацитет.м бинмат = дец2бин (интниз, 8);
фунцтион капац_лсб = капацитет (Н,
лсб_лозинка); % Претворити бинарна матрицу бинмат у
% Ова функција рацуна својеврсни стего бинарни низ биндат
капацитет слике Н за [Ров, цол] = сизе (бинмат);
% Лозинку у бинарном облику фор и = 1: ров
фор ј = 1: цол

25
биндат = [биндат бинмат (ров * (ј-1) + коеф = 1;% За сваку РГБ компоненту
и)]; ресетирај бројац коефицијената
енд енд
енд спринтф ('Изврсено је% д замена ЛСБ-а',
Замена)
биндат = биндат; В = Б;

% Затвори датотеку
фцлосе (фид);
квант.м
фунцтион И = квант (И, Р)
% Функција која квантизира слику И у Р ниво
замјенаЛСБ.м % Враца квантизирана матрицу И
фунцтион В = замјенаЛСБ (Б, лсблоз_бин, % И - матрица коју треба квантизирати
лсбдата) % Р - број квантизацијских ниво
% Ова функција замењује ЛСБ у матрици оним И = доубле (И);
елементима цији коефицијент
% Има ЛСБ једнак припадном биту бинарног И = И / мак (мак (И));
облика насе матрице д = 1 / (Р-1);
% Б - РГБ слика у којој треба сакрити текст И = роунд (И / д);
% Лсблоз_бин - бинарни облик лозинке
% Лсбдата - бинарни облик података које
треба сакрити у слику
сакријслику.м
фунцтион В = сакријслику (Б, лсбдата)
% В - слика са замењеним ЛСБ-овима
% Ова функција сакрива квантизирана слику у
% Замена - броји број битова који су
цвовер слику истих димензија
замењени
% Те у сваком пикелу замени Р, Г и Б
%
компоненту, дакле 3 бита по пикселу
[Кси ргб] = сизе (Б);
% Б - слика у коју треба сакрити слику
кеилен = сизе (лсблоз_бин, 2);
% Лсбдата - бинарни низ података које треба
лсбдатален = сизе (лсбдата, 2);
сакрити (кватизирана слика
% 3 бита за сваки пиксел)
замена = 0;%
% В - слика са сакривеном сликом у себи
коеф = 1;% Броји пикселе у свакој од РГБ
%
компоненти
%
бројац = 1;% Бројац за битове лозинке
[Кси ргб] = сизе (Б);
датабројац = 1;% Бројац битова података
лсбдатален = сизе (лсбдата, 2);
фор боја = 1: ргб
замена = 0;
фор и = 1: к
датабројац = 1;
фор ј = 1: и
иф(Датабројац> лсбдатален)% Ако је крај
фор и = 1: к
податка који зелимо сакрити
фор ј = 1: и
спринтф ('Сакривени су сви тразени подаци,
фор боја = 1: ргб
укупно је сакривено% д Бајтова', Замена /
иф(Датабројац> лсбдатален)
8);
спринтф ('Сакривени су сви тразени подаци,
бреак
укупно је замењено% д Бајтова', Замена)
енд
бреак
% Пронади пикселе који задовољавају услов
енд
лозинке
бинарни = дец2бин (доубле (Б (ј, и,
коеф_бин = дец2бин (коеф, 8);% Претвори
боја)), 8);% Претвори у бинарно сваки
кеф у бинарно
пиксел
иф (Коеф_бин (сизе (коеф_бин, 2)) ==
сиз = сизе (бинарни, 2);
лсблоз_бин (бројац))
бинарни (сиз) = лсбдата (датабројац);%
бинарни = дец2бин (Б (и, ј, боја), 8);%
Замена ЛСБ-а
Претвори елемент матрице у бинарно
замена = замена + 1;
сиз = сизе (бинарни, 2);
Б (ј, и, боја) = бин2дец (бинарни);%
бинарни (сиз) = лсбдата (датабројац);%
Претвори назад у декадски
Замена ЛСБ-а
датабројац = датабројац + 1;
замена = замена + 1;% Повецај бројац
енд
замена
енд
Б (и, ј, боја) = бин2дец (бинарни);%
енд
Претвори назад у декадски облик
спринтф ('Изврсено је% д замена ЛСБ-а',
датабројац = датабројац + 1;
Замена)
бројац = бројац + 1;
В = Б;
коеф = коеф + 1;
иф(Бројац> кеилен)
бројац = 1;
енд
елсе
коеф = коеф + 1;
енд
енд
енд

26
% Отвори датотеку за писање
фид = фопен (датотека, 'В');
откријлсб.м % Провери да ли потоји, иако ју сам створи
фунцтион стегодата = откриј (Б, иф (Фид == -1)
лсбстеголоз_бин) еррор ('На могу отворити датотеку за
% Ова функција проналази ЛСБ-ове за упис !!!');
припадну лозинку енд;
% Б - матрица са сакривеним подацима у ЛСБ
% Лсбстеголоз_бин - бинарни облик лозинке % Уписи рес у датотеку
% Стегодата - бинарни низ откривених фурите (фид, рес);
података
% % Затвори датотеку
% фцлосе (фид);

[Кси ргб] = сизе (Б);


откријслику.м
фунцтион стегодата = откријслику (Б)
кеилен = сизе (лсбстеголоз_бин, 2);
% Функција из слике узима ЛСБ-ове те их
низе у бинарни низ
коеф = 1;
% Б - слика са скривеном сликом у себи
процитано = 0;
% Стегодата - бинарни низ ЛСБ-ова
бројац = 1;
%
стегодатабројац = 1;
%
фор боја = 1: ргб
%
фор и = 1: к
[Кси ргб] = сизе (Б);
фор ј = 1: и
коеф_бин = дец2бин (коеф, 8);% Претвори у
процитано = 0;
бинарни облик
стегодатабројац = 1;
иф (Коеф_бин (сизе (коеф_бин, 2)) ==
фор и = 1: к
лсбстеголоз_бин (бројац))
фор ј = 1: и
бинарни = дец2бин (Б (и, ј, боја), 8);%
фор боја = 1: ргб
Претвори у бинарни облик
бинарни = дец2бин (доубле (Б (ј, и,
сиз = сизе (бинарни, 2);
боја)), 8);% Претвори у бинарни облик
стегодата (:, стегодатабројац) = бинарни
сиз = сизе (бинарни, 2);
(сиз);% Спреми бит
стегодата (стегодатабројац) = бинарни
стегодатабројац = стегодатабројац + 1;
(сиз);% Спреми ЛСБ
бројац = бројац + 1;
стегодатабројац = стегодатабројац + 1;
коеф = коеф + 1;
процитано = процитано + 1;
процитано = процитано + 1;
енд
иф(Бројац> кеилен)
енд
бројац = 1;
енд
енд
елсе
спринтф ('Пронасао сам% д битова података',
коеф = коеф + 1;
Процитано)
енд
енд
енд
коеф = 1; 6.2 ДЦТстего
енд

спринтф ('Пронасао сам% д Бајтова дцтблокови.м


података', Роунд (процитано / 8)) фунцтион [Нуле, Б] = дцтблокови8 (Н,
лоз_бин);
% Ова функција слику Н претвара у матрицу
уписидата.м којој су елементи 8 * 8 блокови ДЦТ
фунцтион рес = уписидата (стегодат,
% Коефицијената, док у другом делу све
датотека);
коефицијенте у доњој трокутастој
% Функција слузи за записивање у датотеку
% Матрици сваког ДЦТ блока који су мањи од
% Биндат - бинарни низ података које треба
2, а задовољавају увејт лозинке
записати
% Мења у 0
% Датотека - име датотеке у коју треба
% Н - слика
записати податке
% Лоз_бин - лозинка у бинарном облику
% Нуле - број замена који уједно говори ио
капацитету за ову лозинку
% Из бинарног низа направи бинарна матрицу
% Б - 4Д матрица у којој су 8 * 8 ДЦТ
сизестегодат = сизе (стегодат, 2);
коефицијенти
фор и = 1: (сизестегодат / 8)
%
бинтемп (и) = бин2дец (стегодат ((и-1) * 8
%
+ 1: и * 8));
[Кси ргб] = сизе (Н);
рес (и) = цхар (бинтемп (и));
кеилен = сизе (лоз_бин, 2);
енд;
к1 = к / 8;

27
блокови = зерос (8,8, к1, к1); "2. Уцитавање датотеке коју требе сакрити
% Претвори матрицу у 8 * 8 ДЦТ блокове и у слици ',...
кватизирај '3. Сакривање датотеке у слику ',...
фор и = 1: к1 '4. Чување стегослике на диск ',...
фор ј = 1: к1 '5. Уцитавање слике са скривеним подацима
блокови (:,:, и, ј) = роунд (ДЦТ2 (Н (8 * ',...
и-7: и * 8,8 * ј-7: ј * 8))); '6. Процитај сакривене податке из слике
енд ',...
енд 'Затвори програм');

% Проверава услов лозинке те све вредности


мање од 2 претвара у 0 % 1. Учитавање слике у коју треба сачувати
коеф = 1; податке
бројац = 1; иф избор == 1;
к = сизе (блокови, 3); слика = инпут ('Унесите назив слике:');
нуле = 0; [Имг, мап] = имреад (слика);
фор и = 1: к фигуре, имсхов (имг, мап)% Прикази слику
фор ј = 1: к енд;
фор н = 1: 8
фор м = 8-н + 1: 8 % 2. Учитавање датотеке са подацима које
коеф_бин = дец2бин (коеф, 8);% Претвара у треба спремити
бинарни облик иф избор == 2;
иф (Абс (блокови (н, м, и, ј)) <= 3)% лозинка = инпут ('Унесите лозинку:');%
Проверава услов Унос лозинке
блокови (н, м, и, ј) = 0;% Промена у нулу лоз_бин = дец2бин (доубле (уинт8
нуле = нуле + 1; (лозинка)), 8);% Лозинку претворити у
коеф = коеф + 1; бинарни облик
бројац = бројац + 1; [Кап, блок_дцт] = дцтблокови8 (имг,
иф(Бројац> кеилен) лоз_бин);% Претворити у 8 * 8 дцт блокове
бројац = 1; спринтф ('Макимално мозете сакрити% д
енд Бајтова података за ову лозинку \ н', Роунд
елсе (кап / 8))
коеф = коеф + 1; дат_улазна = инпут ('Унесите назив
енд датотеке:');
енд [Биндат, бинмат] = уцитајдата
енд (дат_улазна); % Уцитавање датотеке са
коеф = 1; подацима
енд иф((Сизе (биндат, 2))> кап)% Провера
енд велицине улазних података
спринтф ('Велицина података коју зелите
спринтф ('% Д бројева мањих од 3 заменио пренети је превелика за задату слику и
сам нулама на припадним позицијама', Нуле) лозинку \ н Макимална велицина:% д
Бајтова \ н Велицина васе датотеке:% д
Б = блокови; Бајтова \ н Нецете успети пренети све
зељене податке! \ Н', Роунд (кап / 8),
((сизе (биндат, 2)) / 8))
енд;
главни.м
% Мени функција енд;
% 1. Учитавање слике у коју треба сачувати
податке % 3. Сакриј податке у слику
% 2. Учитавање датотеке са подацима које иф избор == 3;
треба спремити В = сакриј (блок_дцт, лоз_бин, биндат);%
% 3. Сакриј податке у слику Сакриј податке у ЛСБ ДЦТ коефицијената
% 4. Учитавање слике у којој су скривени стего = блокуматрицу (В);% Претвори 8 * 8
подаци ДЦТ блокове у матрицу
% 5. Процитај сакривене податке из слике фигуре, имсхов (стего, []);% Прикази слику
% Затвори програм са скривеним подацима
енд;
избор = 0; % 3. Чување стегослике на диск
варијанта = 7; иф избор == 4;
стего_сл = инпут ('Унесите назив датотеке
у коју зелите спремити стегослику:');
% Направи мени имврите (стего, граи (256), стего_сл);%
вхиле избор ~ = варијанта, Чување слике на диск
избор = мену ('Стеганографија у сликама - енд;
ДЦТстего - ДОСЛ (2007)',...
'1. Уцитавање слике у коју треба сакрити % 4. Учитавање слике у којој су скривени
податке ',... подаци
иф избор == 5;

28
стегослика = инпут ('Унесите назив Б (н, м, и, ј) = бин2дец (бинарни);%
стегослике:'); Конверзија назад у декадски облик
[Стегоимг, мап] = имреад (стегослика);% датабројац = датабројац + 1;
Уцитавање слике са диска бројац = бројац + 1;
коеф = коеф + 1;
енд; иф(Бројац> кеилен)
% 5. Процитај сакривене податке из слике бројац = 1;
иф избор == 6; енд
стего_лозинка = инпут ('Унесите лозинку за елсе
откривање података из слике:'); коеф = коеф + 1;
стеголоз_бин = дец2бин (доубле енд
(стего_лозинка), 8);% Претвори лозинку у енд
бинарни облик енд
дат_излазна = инпут ('Унесите назив коеф = 1;
датотеке у коју треба сачувати податке:'); енд
стегоблок_дцт = стегодцтблокови8 енд
(стегоимг, стеголоз_бин);% Претвори у 8 * 8 спринтф ('Изврсено је% д замена ЛСБ-а',
ДЦТ блокове Замена)
стегодата = откриј (стегоблок_дцт,
стеголоз_бин); % Откриј податке В = Б;
уписидата (стегодата, дат_излазна);% Уписи
податке на диск
енд; блокуматрицу.м
фунцтион Б = блокуматрицу (Н)
% Затвори програм % Ова функција као 4Д матрицу ДЦТ
иф избор == 7; коефицијената претвара у матрицу са
цлосе алл; % Атварно вредностима пиксела
енд; % Н - 4Д матрица са 8 * 8 блоковима ДЦТ
енд; коефицијената
% Б - 2Д матрица ције вредности
представљају пикселе слике
сакриј.м %
%
фунцтион В = сакриј (Б, лоз_бин, дата) к = сизе (Н, 3);
% Ова функција сакрива податке у ЛСБ-ове к1 = к * 8;
ДЦТ коефицијената који матрица = зерос (к1, к1);
% Задовољавају тражени услов те враћа 4Д фор и = 1: к
матрицу са промењеним ДЦТ фор ј = 1: к
% коефицијентима матрица (8 * и-7: и * 8,8 * ј-7: ј * 8) =
% Б - 4д матрица са ДЦТ коефицијентима идцт2 (Н (:,:, и, ј));
% Лоз_бин - лозинка у бинарном облику енд
% Дата - подаци у бинарном облику које енд
желимо сакрити Б = матрица;
%
к = сизе (Б, 3);
кеилен = сизе (лоз_бин, 2);
стегодцтблокови8.м
фунцтион [Б] = стегодцтблокови8 (Н,
датален = сизе (дата, 2);
стеголоз_бин);
% Ова функција претвара улазну 2Д матрицу Н
замена = 0;
у 4Д матрицу Б у којој су
коеф = 1;
% 8 * 8 блокови ДЦТ коефицијената
бројац = 1;
% Н - улазна 2Д матрица
датабројац = 1;
% Стеголоз_бин - лозинка у бинарном облику
фор и = 1: к
%
фор ј = 1: к
кеилен = сизе (стеголоз_бин, 2);
фор н = 1: 8
[Кси ргб] = сизе (Н);
фор м = 8-н + 1: 8
к1 = к / 8;
иф(Датабројац> датален)
бреак
енд
блокови = зерос (8,8, к1, к1);
коеф_бин = дец2бин (доубле (коеф), 8);%
% Претвара матрицу у 8 * 8 блокове ДЦТ
Конверзија у бинарни облик
коефицијената и квантизира их
иф ((Коеф_бин (сизе (коеф_бин, 2)) ==
фор и = 1: к1
лоз_бин (бројац)) & ((Б (н, м, и, ј) == 1)
фор ј = 1: к1
| (Б (н, м, и, ј) == 0 )))
блокови (:,:, и, ј) = роунд (ДЦТ2 (Н (8 *
бинарни = дец2бин (Б (н, м, и, ј), 8);%
и-7: и * 8,8 * ј-7: ј * 8)));
Конверзија у бинарни облик
енд
сиз = сизе (бинарни, 2);
енд
бинарни (сиз) = дата (датабројац);% Замена
ЛСБ-а
Б = блокови;
замена = замена + 1;

29
откриј.м
фунцтион стегодата = откриј (Б,
стеголоз_бин)
% Ова функција открива скривене податке у
ЛСБ-овима ДЦТ коефицијената те
% Враца бинарне податке који представљају
скривену поруку
% Б - 4Д матрица ДЦТ коефицијената у којима
су скривени подаци
% Стеголоз_бин - лозинка у бинарном облику
%
%
%

к = сизе (Б, 3);


кеилен = сизе (стеголоз_бин, 2);

коеф = 1;
бројац = 1;
стегодатабројац = 1;
фор и = 1: к
фор ј = 1: к
фор н = 1: 8
фор м = 8-н + 1: 8
коеф_бин = дец2бин (коеф, 8);% Претвори у
бинарни облик
иф((Коеф_бин (сизе (коеф_бин, 2)) ==
стеголоз_бин (бројац)) & ((абс (Б (н, м, и,
ј)) <= 1)))
иф(Б (н, м, и, ј) == (- 1))
стегодата (:, стегодатабројац) = 0;% Због
греске квантизације ово је цест слуцај
елсе
бинарни = дец2бин (Б (н, м, и, ј), 8);%
Претвори у бинарни облик
сиз = сизе (бинарни, 2);
стегодата (:, стегодатабројац) = бинарни
(сиз);
енд
стегодатабројац = стегодатабројац + 1;
бројац = бројац + 1;
коеф = коеф + 1;
иф(Бројац> кеилен)
бројац = 1;
енд
елсе
коеф = коеф + 1;
енд
енд
енд
коеф = 1;
енд
енд
В = стегодата;

30

You might also like