LSB steganography

Sa usa ka panahon gisulat ko ang akong unang post sa hub. Ug kana nga post gipahinungod sa usa ka makapaikag kaayo nga problema, nga mao ang steganography. Siyempre, ang solusyon nga gisugyot sa karaan nga hilisgutan dili matawag nga steganography sa tinuud nga kahulugan sa pulong. Kini usa lang ka dula nga adunay mga format sa file, apan usa ka makapaikag nga dula bisan pa.

Karon atong sulayan ang pagkalot og gamay ug tan-awon ang LSB algorithm. Kung interesado ka, welcome ka ubos sa iring. (Ubos sa pagputol mao ang trapiko: mga usa ka megabyte.)

Una sa tanan, kinahanglan nga maghimo usa ka mubo nga pasiuna. Nahibal-an sa tanan nga ang katuyoan sa cryptography mao ang paghimo nga imposible nga mabasa ang sekreto nga kasayuran. Siyempre, ang cryptography adunay mga aplikasyon niini, apan adunay lain nga pamaagi sa pagpanalipod sa datos. Dili namo kinahanglan nga i-encrypt ang impormasyon, apan magpakaaron-ingnon nga wala kami niini. Mao gyud kini ang hinungdan nga naimbento ang steganography. Ang Wikipedia nagpasalig kanato nga ang "steganography (gikan sa Greek στεγανοσ - tinago ug ang Greek γραφω - Ako nagsulat, sa literal nga "sekreto nga pagsulat") mao ang siyensiya sa tinago nga pagpasa sa impormasyon pinaagi sa pagtago sa kamatuoran sa transmission nga sekreto.

Siyempre, walay usa nga nagdili sa paghiusa sa cryptographic ug steganographic nga mga pamaagi. Dugang pa, sa praktis gibuhat nila kini, apan ang among tahas mao ang pagsabut sa mga sukaranan. Kung imong tun-an pag-ayo ang artikulo sa Wikipedia, imong mahibal-an nga ang mga algorithm sa steganography naglakip sa gitawag nga. sudlanan ug mensahe. Ang sudlanan mao ang bisan unsang impormasyon nga makatabang sa pagtago sa among sekretong mensahe.

Sa among kaso, ang sudlanan mahimong usa ka imahe sa BMP format. Una, atong tan-awon ang istruktura niini nga file. Ang file mahimong bahinon sa 4 ka bahin: file header, image header, palette ug ang imahe mismo. Alang sa atong mga katuyoan, kinahanglan ra naton mahibal-an kung unsa ang nahisulat sa ulohan.

Ang unang duha ka byte sa header mao ang BM signature, unya ang file size sa bytes gisulat sa double word, ang sunod nga 4 bytes kay gitagana ug kinahanglang adunay mga zero, ug sa kataposan, laing double word ang naglangkob sa offset gikan sa sinugdanan sa file ngadto sa aktuwal nga byte sa hulagway. Sa usa ka 24-bit bmp file, ang matag pixel gi-encode sa tulo ka BGR bytes.

Karon nahibal-an namon kung unsaon pag-adto sa imahe, ang nahabilin mao ang pagsabut kung giunsa namon isulat ang kasayuran nga kinahanglan namon didto. Alang niini kinahanglan naton ang pamaagi sa LSB. Ang esensya sa pamaagi mao ang mga musunud: gipulihan namon ang labing gamay nga hinungdanon nga mga bit sa mga byte nga responsable sa pag-encode sa kolor. Ingnon ta kung ang sunod nga byte sa among sekreto nga mensahe mao ang 11001011, ug ang mga byte sa imahe mao ang...11101100 01001110 01111100 0101100111..., nan ang pag-encode mahimong ingon niini. Atong bahinon ang sekretong mensahe nga byte ngadto sa 4 ka duha ka bit nga mga bahin: 11, 00, 10, 11, ug ilisan ang ubos nga pagkahan-ay nga mga bit sa hulagway sa resulta nga mga tipik: ...11101111 01001100 01111110 0101100111…. Ang ingon nga kapuli sa kasagaran dili mamatikdan sa mata sa tawo. Dugang pa, daghang mga daan nga mga aparato sa output dili gani makapakita sa ingon nga gagmay nga mga pagbag-o.

Klaro nga mahimo nimong usbon dili lamang ang 2 nga labing gamay nga hinungdanon nga mga piraso, apan bisan unsang gidaghanon niini. Adunay mosunod nga sumbanan: ang mas daghang mga bit nga atong usbon, ang dugang nga impormasyon nga atong matago, ug ang dugang nga interference nga mahimo niini sa orihinal nga larawan. Pananglitan, aniay duha ka mga imahe:

LSB steganography
LSB steganography

Bisan pa sa akong pinakamaayo nga mga paningkamot, dili nako makita ang kalainan tali kanila, apan bisan pa niana, sa ikaduhang hulagway, gamit ang gihulagway nga pamaagi, ang balak ni Lewis Carroll nga "The Hunting of the Snark" gitago. Kung nabasa na nimo kini, nan tingali interesado ka nga mahibal-an ang bahin sa pagpatuman. Kini yano ra, apan pasidan-an ko ikaw dayon nga ang tanan nahimo sa Delphi. Adunay duha ka rason niini: 1. Sa akong hunahuna ang Delphi usa ka maayong pinulongan; 2. Kini nga programa natawo sa proseso sa pag-andam sa usa ka kurso sa mga sukaranan sa computer vision, ug ang mga lalaki nga akong gitudloan niini nga kurso wala pay nahibal-an gawas sa Delphi. Alang sa mga dili pamilyar sa syntax, usa ka butang ang kinahanglan ipasabut: ang shl x usa ka bitwise nga pagbalhin sa wala sa x, ang shr x usa ka bitwise nga pagbalhin sa tuo sa x.

Nagtuo kami nga nagsulat kami og teksto nga gitipigan sa usa ka hilo ngadto sa sudlanan ug gipulihan ang ubos nga duha ka byte:
Pagrekord code:

kay i:=1 sa gitas-on(str) buhaton
    magsugod
      l1:=byte(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.Posisyon:=f.Posisyon-1;
      tmp:=((tmp shr 2) shl 2)+l1;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Posisyon:=f.Posisyon-1;
      tmp:=((tmp shr 2) shl 2)+l2;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Posisyon:=f.Posisyon-1;
      tmp:=((tmp shr 2) shl 2)+l3;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Posisyon:=f.Posisyon-1;
      tmp:=((tmp shr 2) shl 2)+l4;
      f.WriteBuffer(tmp,1);
 
    katapusan;

code nga basahon:

kay i:=1 to MsgSize buhaton
    magsugod
      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);
    katapusan;

Aw, para sa mga tapolan gyud - link sa programa ug sa source code niini.

Спасибо.

Source: www.habr.com

Idugang sa usa ka comment