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

Боре ман навишта будам паёми аввал дар hub. Ва он пост ба як масъалаи хеле ҷолиб, яъне стеганография бахшида шуда буд. Албатта, ҳалли дар он мавзӯи кӯҳна пешниҳодшударо ба маънои аслии калима стеганография номидан мумкин нест. Ин танҳо як бозӣ бо форматҳои файл аст, аммо ба ҳар ҳол бозии хеле ҷолиб аст.

Имрӯз мо кӯшиш мекунем, ки каме амиқтар кобед ва алгоритми LSB-ро бубинем. Агар шумо таваҷҷӯҳ доранд, шумо дар зери гурба хуш омадед. (Дар зери буриш трафик аст: тақрибан як мегабайт.)

Пеш аз хама сарсухани мухтасар кардан лозим аст. Ҳама медонанд, ки ҳадафи криптография хондани маълумоти махфӣ мебошад. Албатта, криптография барномаҳои худро дорад, аммо равиши дигаре барои ҳифзи додаҳо вуҷуд дорад. Мо набояд маълумотро рамзгузорӣ кунем, аммо вонамуд кунем, ки мо онро надорем. Махз барои хамин стеганография ихтироъ карда шуд. Википедиа моро итминон медиҳад, ки «стеганография (аз юнонӣ στεγανοσ - пинҳон ва юнонӣ γραφω - ман менависам, айнан "навиштани махфӣ") илми интиқоли пинҳонии иттилоот бо нигоҳ доштани махфӣ будани худи далели интиқол аст.

Албатта, ҳеҷ кас якҷоя кардани усулҳои криптографӣ ва стеганографиро манъ намекунад. Гузашта аз ин, дар амал онҳо ин корро мекунанд, аммо вазифаи мо фаҳмидани асосҳо аст. Агар шумо мақолаи Википедиаро бодиққат омӯзед, шумо хоҳед фаҳмид, ки алгоритмҳои стеганография ба истилоҳ дохил мешаванд. контейнер ва паём. Контейнер ҳама гуна маълумотест, ки барои пинҳон кардани паёми махфии мо кӯмак мекунад.

Дар ҳолати мо, контейнер тасвир дар формати BMP хоҳад буд. Аввалан, биёед сохтори ин файлро бубинем. Файлро ба 4 қисм тақсим кардан мумкин аст: сарлавҳаи файл, сарлавҳаи тасвир, палитра ва худи тасвир. Барои мақсадҳои мо, мо танҳо бояд донем, ки дар сарлавҳа чӣ навишта шудааст.

Ду байти аввали сарлавҳа имзои BM мебошанд, пас андозаи файл бо байт бо як калимаи дугона навишта мешавад, 4 байти баъдӣ ҳифз карда мешавад ва бояд сифрҳоро дар бар гирад ва дар ниҳоят, калимаи дугонаи дигар офсетро аз аввали файл ба байтҳои воқеии тасвир. Дар файли 24-битии bmp, ҳар як пиксел бо се байт BGR рамзгузорӣ шудааст.

Акнун мо медонем, ки чӣ тавр ба тасвир расидан мумкин аст, танҳо фаҳмидани он ки чӣ тавр мо метавонем маълумоти лозимаро дар он ҷо нависем. Барои ин ба мо усули LSB лозим аст. Моҳияти усул чунин аст: мо битҳои камтаринро дар байтҳое иваз мекунем, ки барои рамзгузории ранг масъуланд. Фарз мекунем, ки агар байти навбатии паёми махфии мо 11001011 бошад ва байтҳои тасвир...11101100 01001110 01111100 0101100111..., пас рамзгузорӣ чунин хоҳад буд. Байти паёми махфиро ба 4 қисмати ду-битӣ тақсим мекунем: 11, 00, 10, 11 ва битҳои пасттартиби тасвирро бо порчаҳои натиҷавӣ иваз мекунем: ...11101111 01001100 01111110 0101100111... Чунин ивазкунӣ умуман ба чашми инсон намоён нест. Гузашта аз ин, бисёре аз дастгоҳҳои кӯҳнаи баромад ҳатто наметавонанд чунин тағироти ночизро намоиш диҳанд.

Маълум аст, ки шумо метавонед на танҳо 2 битҳои камтаринро, балки ҳар як шумораи онҳоро тағир диҳед. Намунаи зерин вуҷуд дорад: чӣ қадаре ки мо битҳоро тағйир диҳем, ҳамон қадар иттилооти бештарро пинҳон карда метавонем ва ин дахолати бештар ба тасвири аслӣ оварда мерасонад. Масалан, дар ин ҷо ду тасвир ҳастанд:

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

Бо вуҷуди кӯшишҳои зиёд, ман фарқияти байни онҳоро дида натавонистам, аммо бо вуҷуди ин, дар тасвири дуюм бо истифода аз усули тасвиршуда шеъри Льюис Кэррол "Шикори Снарк" пинҳон шудааст. Агар шумо то ин вақт хонда бошед, пас шумо эҳтимол ба омӯхтани татбиқи он таваҷҷӯҳ доред. Ин хеле содда аст, аммо ман фавран шуморо огоҳ мекунам, ки ҳама чиз дар Delphi анҷом дода мешавад. Ин ду сабаб дорад: 1. Ба фикрам, Delphi забони хуб аст; 2. Ин барнома дар ҷараёни омода кардани курси асосҳои биниши компютер ба вуҷуд омадааст ва бачаҳое, ки ман ба онҳо ин курсро таълим медиҳам, то ҳол ба ҷуз аз Delphi дигар чизеро намедонанд. Барои онҳое, ки бо синтаксис ошно нестанд, як чизро шарҳ додан лозим аст: shl x як каме гузаштан ба чап ба x, shr x як каме ба тарафи рост гузаштан аз x аст.

Мо тахмин мезанем, ки мо матни дар сатр ҳифзшударо ба контейнер менависем ва ду байти поёниро иваз мекунем:
Рамзи сабт:

барои i:=1 ба length(str) кунед
    оғоз кунед
      l1:=байт(str[i]) shr 6;
      l2:=byte(str[i]) shl 2; l2:=l2 shr 6;
      l3:=byte(str[i]) shl 4; l3:=l3 shr 6;
      l4:=byte(str[i]) shl 6; l4:=l4 shr 6;
 
      f.ReadBuffer(tmp,1);
      f.Вазифаи:=f.Вазифаи-1;
      tmp:=((tmp shr 2) shl 2)+l1;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Вазифаи:=f.Вазифаи-1;
      tmp:=((tmp shr 2) shl 2)+l2;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Вазифаи:=f.Вазифаи-1;
      tmp:=((tmp shr 2) shl 2)+l3;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Вазифаи:=f.Вазифаи-1;
      tmp:=((tmp shr 2) shl 2)+l4;
      f.WriteBuffer(tmp,1);
 
    хотима;

рамзи хондан:

барои i:=1 ба MsgSize
    оғоз кунед
      f.ReadBuffer(tmp,1);
      l1:=tmp shl 6;
      f.ReadBuffer(tmp,1);
      l2:=tmp shl 6; l2:=l2 shr 2;
      f.ReadBuffer(tmp,1);
      l3:=tmp shl 6; l3:=l3 shr 4;
      f.ReadBuffer(tmp,1);
      l4:=tmp shl 6; l4:=l4 shr 6;
      str:=str+char(l1+l2+l3+l4);
    хотима;

Хуб, барои танбалони воқеан - пайванд ба барнома ва рамзи сарчашмаи он.

Спасибо.

Манбаъ: will.com

Илова Эзоҳ