LSB steganography

Pane imwe nguva ndakanyora zvangu yekutanga post pane hub. Uye iyo positi yakatsaurirwa kune inonakidza dambudziko, iro steganography. Ehe, mhinduro inotsanangurwa mumusoro wekare haigone kunzi steganography mupfungwa yechokwadi yeshoko. Ungori mutambo une mafomati efaira, asi mutambo unonakidza zvakadaro.

Nhasi tichaedza kuchera zvishoma uye kutarisa LSB algorithm. Kana iwe uchifarira, unogamuchirwa pasi pekati. (Pasi pekucheka kune traffic: inenge megabyte.)

Chokutanga pane zvose, zvakakosha kuita sumo pfupi. Wese munhu anoziva kuti chinangwa checryptography ndechekuita kuti zvisakwanise kuverenga ruzivo rwakavanzika. Ehe, cryptography ine maitiro ayo, asi kune imwe nzira yekudzivirira data. Hatifanirwe kuvharidzira ruzivo, asi kunyepedzera kuti hatina. Ichi ndicho chikonzero nei steganography yakagadzirwa. Wikipedia inotivimbisa kuti "steganography (kubva kuGreek στεγανοσ - yakavanzika uye chiGiriki γραφω - Ndinonyora, chaizvo "kunyora kwakavanzika") isainzi yekutapurirana kwakavanzika kweruzivo nekuchengeta chokwadi chaicho chekufambisa chakavanzika.

Ehe, hapana anorambidza kubatanidza cryptographic uye steganographic nzira. Uyezve, mukuita vanoita izvi, asi basa redu nderekunzwisisa zvakakosha. Kana iwe ukanyatso dzidza chinyorwa cheWikipedia, uchaona kuti steganography algorithms inosanganisira iyo inonzi. mudziyo uye meseji. Chigaba chero ruzivo runobatsira kuvanza meseji yedu yakavanzika.

Kwatiri, mudziyo uchave mufananidzo muBMP fomati. Kutanga, ngatitarisei chimiro chefaira iri. Iyo faira inogona kukamurwa kuita 4 zvikamu: faira musoro, mufananidzo musoro, palette uye mufananidzo pachawo. Nezvinangwa zvedu, isu tinongoda kuziva zvakanyorwa mumusoro.

Mabhayiti maviri ekutanga emusoro ndiyo siginecha yeBM, ipapo saizi yefaira mumabhaiti inonyorwa nezwi rakapetwa, mana anotevera akachengetwa uye anofanirwa kunge aine zero, uye pakupedzisira, rimwe izwi rakapetwa rine mhedzisiro kubva pakutanga kwe faira kune chaiwo mabhayiti emufananidzo. Mune 4-bit bmp faira, pixel yega yega inoiswa encoded nematatu BGR bytes.

Iye zvino tava kuziva nzira yekusvika pamufananidzo, chasara kunzwisisa kuti tinganyora sei ruzivo rwatinoda ipapo. Nokuda kweizvi tichada nzira yeLSB. Izvo zvakakosha zveiyo nzira ndeiyi: isu tinotsiva mashoma akakosha mabheti mumabhaiti ane basa remavara encoding. Ngatitii kana byte inotevera yemeseji yedu yakavanzika iri 11001011, uye mabyte ari mumufananidzo ari...11101100 01001110 01111100 0101100111..., ipapo iyo encoding ichaita seizvi. Tichapatsanura yakavanzika meseji byte kuita 4-bit zvikamu: 11, 00, 10, 11, uye totsiva yakaderera-yakarongeka mabits emufananidzo nezvimedu zvinobuda: ...11101111 01001100 01111110 0101100111…. Kutsiva kwakadaro hakuwanzooneki neziso romunhu. Zvakare, akawanda ekare madhizaini ekuburitsa haatombokwanisa kuratidza shanduko diki dzakadaro.

Zviri pachena kuti iwe unogona kushandura kwete chete 2 zvishoma zvakakosha bits, asi chero nhamba yavo. Pane iyo inotevera patani: iyo mabhiti akawanda atinoshandura, ruzivo rwakawanda rwatinogona kuvanza, uye zvakanyanya kukanganisa izvi zvinokonzeresa mumufananidzo wekutanga. Semuenzaniso, heino mifananidzo miviri:

LSB steganography
LSB steganography

Pasinei nekuedza kwangu kwakanakisisa, handina kukwanisa kuona musiyano pakati pavo, asi zvisinei, mumufananidzo wechipiri, uchishandisa nzira yakatsanangurwa, nhetembo yaLewis Carroll "Kuvhima kweSnark" yakavanzwa. Kana iwe wakaverenga kusvika ikozvino, saka iwe unofarira kudzidza nezvekuita. Zviri nyore, asi ini ndichakuyambira ipapo kuti zvese zvinoitwa muDelphi. Pane zvikonzero zviviri zveizvi: 1. Ndinofunga kuti Delphi mutauro wakanaka; 2. Chirongwa ichi chakazvarwa mukugadzirira kosi pamusoro pezvakakosha zvekuona komputa, uye vakomana vandiri kudzidzisa kosi iyi havasati vaziva chimwe chinhu kunze kweDelphi. Kune avo vasina kujairana neiyo syntax, chinhu chimwe chinoda kutsanangurwa: shl x kuchinjika zvishoma kuruboshwe na x, shr x kuchinjika zvishoma kurudyi ne x.

Isu tinofungidzira kuti tiri kunyora zvinyorwa zvakachengetwa mutambo mumudziyo uye kutsiva maviri ezasi mabheti:
Kodhi yekurekodha:

nokuti ini:=1 kureba(str) kuita
    tanga
      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.Position:=f.Position-1;
      tmp:=((tmp shr 2) shl 2)+l1;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Position:=f.Position-1;
      tmp:=((tmp shr 2) shl 2)+l2;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Position:=f.Position-1;
      tmp:=((tmp shr 2) shl 2)+l3;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Position:=f.Position-1;
      tmp:=((tmp shr 2) shl 2)+l4;
      f.WriteBuffer(tmp,1);
 
    kuguma;

kodhi yekuverenga:

for i:=1 to MsgSize do
    tanga
      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);
    kuguma;

Zvakanaka, kune vane usimbe chaihwo - chinongedzo kuchirongwa uye kodhi yayo yekubva.

Спасибо.

Source: www.habr.com

Voeg