I-LSB steganography

Kudala ndabhala eyam ipowusti yokuqala kwi hub. Kwaye eso sithuba sanikezelwa kwingxaki enomdla kakhulu, oko kukuthi i-steganography. Kakade ke, isisombululo esicetywayo kweso sihloko sidala asinakubizwa ngokuba yi-steganography ngokwenyani yegama. Ngumdlalo nje onefomathi zefayile, kodwa umdlalo omhle onomdla nangona kunjalo.

Namhlanje siza kuzama ukumba ubunzulu kwaye sijonge i-algorithm ye-LSB. Ukuba unomdla, wamkelekile phantsi kwekati. (Ngaphantsi kokusikwa kukho itrafikhi: malunga ne-megabyte.)

Okokuqala, kuyimfuneko ukwenza isingeniso esifutshane. Wonke umntu uyazi ukuba injongo ye-cryptography kukwenza kube nzima ukufunda ulwazi oluyimfihlo. Ewe, i-cryptography inezicelo zayo, kodwa kukho enye indlela yokukhusela idatha. Akunyanzelekanga ukuba sibethelele ulwazi, kodwa senze ngathi asinalo. Yiyo kanye loo nto yenziwa i-steganography. I-Wikipedia iyasiqinisekisa ukuba "i-steganography (ukusuka kwi-Greek στεγανοσ - efihliweyo kunye nesiGrike γραφω - Ndibhala, ngokoqobo "ukubhala okufihlakeleyo") yinzululwazi yosasazo olufihliweyo lolwazi ngokugcina eyona nyaniso yokudluliselwa iyimfihlo.

Ewe, akukho mntu uyala ukudibanisa iindlela ze-cryptographic kunye ne-steganographic. Ngaphezu koko, ekusebenzeni bayakwenza oku, kodwa umsebenzi wethu kukuqonda iziseko. Ukuba ufunda ngononophelo inqaku leWikipedia, uya kufumanisa ukuba i-algorithms ye-steganography ibandakanya okubizwa ngokuba. isikhongozeli kunye nomyalezo. Isikhongozeli silo naluphi na ulwazi olunceda ukufihla umyalezo wethu oyimfihlo.

Kwimeko yethu, isitya siya kuba ngumfanekiso kwifomathi ye-BMP. Okokuqala, makhe sijonge isakhiwo sale fayile. Ifayile inokwahlulwa ibe ngamacandelo ama-4: iheader yefayile, iheader yomfanekiso, ipalette kunye nomfanekiso ngokwawo. Ngeenjongo zethu, kufuneka sazi kuphela oko kubhalwe kwisihloko.

Iibytes ezimbini zokuqala zeheader yi-BM signature, ngoko ke ubungakanani befayile kwibytes bubhalwa ngegama eliphindwe kabini, iibytes ezi-4 ezilandelayo zigciniwe kwaye kufuneka ziqulathe ooziro, kwaye ekugqibeleni, elinye igama eliphindwe kabini liqulathe i-offset ukusuka ekuqaleni ifayile kweyona bytes yomfanekiso. Kwifayile ye-bmp ye-24-bit, ipixel nganye ifakwe ngekhowudi ngeebhayithi ezintathu ze-BGR.

Ngoku siyazi indlela yokufika emfanekisweni, konke okuseleyo kukuqonda indlela esinokubhala ngayo ulwazi esiludingayo apho. Kule nto siya kufuna indlela ye-LSB. Undoqo wendlela umi ngolu hlobo lulandelayo: sithatha indawo yawona masuntswana abalulekileyo kwiibytes ezinoxanduva lokufaka ikhowudi yombala. Masithi ukuba i-byte elandelayo yomyalezo wethu oyimfihlo ngu-11001011, kwaye i-byte emfanekisweni ...11101100 01001110 01111100 0101100111..., ngoko i-encoding iya kujongeka ngolu hlobo. Siza kwahlula i-byte yomyalezo oyimfihlo ube ngamasuntswana amasuntswana amabini ama-4: 11, 00, 10, 11, kwaye sibuyisele amasuntswana anolandelelwano oluphantsi lomfanekiso ngamaqhekeza avelayo: ...11101111 01001100 01111110 0101100111…. Ukutshintshwa okunjalo ngokuqhelekileyo akubonakali emehlweni abantu. Ngaphaya koko, izixhobo ezininzi zemveliso ezindala azinakukwazi ukubonisa utshintsho oluncinci.

Kucacile ukuba awukwazi ukutshintsha kuphela ama-2 amancinci amancinci, kodwa naliphi na inani lawo. Kukho le pateni ilandelayo: okukhona sitshintsha amasuntswana, kokukhona singakwazi ukufihla ulwazi oluninzi, kwaye kokukhona oku kuya kubangela ukuphazamiseka kumfanekiso wokuqala. Umzekelo, nantsi imifanekiso emibini:

I-LSB steganography
I-LSB steganography

Nangona ndizama kangangoko, andizange ndiwubone umahluko phakathi kwabo, kodwa nangona kunjalo, kumfanekiso wesibini, usebenzisa indlela echazwe ngayo, inkondlo kaLewis Carroll ethi "Ukuzingela Kwenyoka" ifihliwe. Ukuba ufunde oku kude, ngoko mhlawumbi unomdla wokufunda malunga nokuphunyezwa. Ilula kakhulu, kodwa ndiza kukulumkisa kwangoko ukuba yonke into yenziwa eDelphi. Kukho izizathu ezibini zoku: 1. Ndicinga ukuba iDelphi lulwimi olulungileyo; 2. Le program yazalelwa kwinkqubo yokulungiselela ikhosi kwizinto ezisisiseko ze-computer vision, kwaye abafana endibafundisa le khosi abakazi nto ngaphandle kweDelphi. Kwabo bangaqhelananga nesintaksi, into enye ifuna ukucaciswa: shl x yishifti kancinane ukuya ekhohlo ngo x, shr x yi shift kancinane ukuya ekunene ngo x.

Sicinga ukuba sibhala umbhalo ogcinwe kumtya kwisikhongozeli kwaye sitshintshela iibyte ezimbini ezisezantsi:
Ikhowudi yokurekhoda:

kuba i:=1 ukuya kubude(str) yenze
    qalisa
      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.Isikhundla:=f.Isikhundla-1;
      tmp:=((tmp shr 2) shl 2)+l1;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Isikhundla:=f.Isikhundla-1;
      tmp:=((tmp shr 2) shl 2)+l2;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Isikhundla:=f.Isikhundla-1;
      tmp:=((tmp shr 2) shl 2)+l3;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Isikhundla:=f.Isikhundla-1;
      tmp:=((tmp shr 2) shl 2)+l4;
      f.WriteBuffer(tmp,1);
 
    isiphelo;

ikhowudi yokufunda:

ye i:=1 ukuya kuMsgSize yenze
    qalisa
      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);
    isiphelo;

Ewe, kwabo bavila ngokwenene - ikhonkco kwinkqubo kunye nekhowudi yayo yemvelaphi.

Спасибо.

umthombo: www.habr.com

Yongeza izimvo