Steganografija LSB

Darba waħda ktibt tiegħi l-ewwel post fuq il-hub. U dik il-kariga kienet iddedikata għal problema interessanti ħafna, jiġifieri l-isteganografija. Naturalment, is-soluzzjoni proposta f’dak is-suġġett antik ma tistax tissejjaħ steganografija fil-veru sens tal-kelma. Hija biss logħba b'formati ta 'fajls, iżda madankollu logħba pjuttost interessanti.

Illum se nippruvaw inħaffru ftit aktar fil-fond u nħarsu lejn l-algoritmu LSB. Jekk inti interessat, inti merħba taħt cat. (Taħt il-qatgħa hemm it-traffiku: madwar megabyte.)

L-ewwelnett, huwa meħtieġ li ssir introduzzjoni qasira. Kulħadd jaf li l-iskop tal-kriptografija huwa li jagħmilha impossibbli li tinqara informazzjoni sigrieta. Naturalment, il-kriptografija għandha l-applikazzjonijiet tagħha, iżda hemm approċċ ieħor għall-protezzjoni tad-data. M'għandniex għalfejn nikkriptaw l-informazzjoni, imma nippretendu li m'għandniex. Dan huwa preċiżament għaliex l-isteganografija ġiet ivvintata. Il-Wikipedija tassigurana li "l-esteganografija (mill-Grieg στεγανοσ - moħbi u l-Grieg γραφω - nikteb, litteralment "kitba sigrieta") hija x-xjenza tat-trażmissjoni moħbija ta 'informazzjoni billi żżomm il-fatt stess tat-trasmissjoni sigriet.

Naturalment, ħadd ma jipprojbixxi l-kombinazzjoni ta 'metodi kriptografiċi u steganografiċi. Barra minn hekk, fil-prattika jagħmlu dan, iżda l-kompitu tagħna huwa li nifhmu l-baŜi. Jekk tistudja bir-reqqa l-artiklu tal-Wikipedija, issib li l-algoritmi ta 'steganografija jinkludu l-hekk imsejħa. kontenitur u messaġġ. Kontenitur huwa kwalunkwe informazzjoni li tgħin naħbi l-messaġġ sigriet tagħna.

Fil-każ tagħna, il-kontenitur se jkun immaġni fil-format BMP. L-ewwel, ejja nħarsu lejn l-istruttura ta 'dan il-fajl. Il-fajl jista 'jinqasam f'4 partijiet: header tal-fajl, header tal-immaġni, paletta u l-immaġni nnifisha. Għall-iskopijiet tagħna, irridu nkunu nafu biss x'inhu miktub fl-intestatura.

L-ewwel żewġ bytes tal-header huma l-firma BM, imbagħad id-daqs tal-fajl f'bytes jinkiteb f'kelma doppja, l-4 bytes li jmiss huma riżervati u għandu jkun fihom żerijiet, u finalment, kelma doppja oħra fiha l-offset mill-bidu tal- fajl għall-bytes attwali tal-immaġni. F'fajl bmp 24-bit, kull pixel huwa kodifikat bi tliet bytes BGR.

Issa nafu kif naslu għall-immaġini, li jibqa 'huwa li nifhmu kif nistgħu niktbu l-informazzjoni li għandna bżonn hemmhekk. Għal dan ikollna bżonn il-metodu LSB. L-essenza tal-metodu hija kif ġej: nissostitwixxu l-bits l-inqas sinifikanti fil-bytes responsabbli għall-kodifikazzjoni tal-kulur. Ejja ngħidu jekk il-byte li jmiss tal-messaġġ sigriet tagħna huwa 11001011, u l-bytes fl-immaġni huma...11101100 01001110 01111100 0101100111..., allura l-kodifikazzjoni tidher bħal din. Se naqsmu l-byte tal-messaġġ sigriet f'4 partijiet ta' żewġ bit: 11, 00, 10, 11, u nibdlu l-bits ta' ordni baxx tal-immaġni bil-frammenti li jirriżultaw: ...11101111 01001100 01111110 0101100111…. Sostitut bħal dan ġeneralment mhuwiex notevoli għall-għajn tal-bniedem. Barra minn hekk, ħafna apparati ta 'output anzjani lanqas biss se jkunu jistgħu juru bidliet żgħar bħal dawn.

Huwa ċar li tista 'tbiddel mhux biss it-2 bits l-inqas sinifikanti, iżda kwalunkwe numru minnhom. Hemm il-mudell li ġej: aktar ma nibdlu bits, aktar informazzjoni nistgħu naħbu, u aktar interferenza dan jikkawża fl-immaġni oriġinali. Pereżempju, hawn żewġ stampi:

Steganografija LSB
Steganografija LSB

Minkejja l-aħjar sforzi tiegħi, ma stajtx nara d-differenza bejniethom, iżda madankollu, fit-tieni immaġni, bl-użu tal-metodu deskritt, il-poeżija ta 'Lewis Carroll "The Hunting of the Snark" hija moħbija. Jekk qrajt s'issa, allura inti probabilment interessat li titgħallem dwar l-implimentazzjoni. Huwa pjuttost sempliċi, imma jien ser inwissik mill-ewwel li kollox isir f'Delphi. Hemm żewġ raġunijiet għal dan: 1. Naħseb li Delphi hija lingwa tajba; 2. Dan il-programm twieled fil-proċess ta’ tħejjija ta’ kors dwar il-bażi tal-viżjoni bil-kompjuter, u l-ġuvini li qed ngħallem dan il-kors għadhom ma jafu xejn ħlief Delphi. Għal dawk li mhumiex familjari mas-sintassi, ħaġa waħda jeħtieġ li tiġi spjegata: shl x hija bidla bit-bit lejn ix-xellug b'x, shr x hija bidla bit-bit lejn il-lemin b'x.

Nassumu li qed niktbu test maħżun f'sekwenza fil-kontenitur u nissostitwixxu ż-żewġ bytes t'isfel:
Kodiċi tar-reġistrazzjoni:

għal i:=1 to length(str) do
    tibda
      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.Pożizzjoni:=f.Pożizzjoni-1;
      tmp:=((tmp shr 2) shl 2)+l1;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Pożizzjoni:=f.Pożizzjoni-1;
      tmp:=((tmp shr 2) shl 2)+l2;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Pożizzjoni:=f.Pożizzjoni-1;
      tmp:=((tmp shr 2) shl 2)+l3;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Pożizzjoni:=f.Pożizzjoni-1;
      tmp:=((tmp shr 2) shl 2)+l4;
      f.WriteBuffer(tmp,1);
 
    tmiem;

kodiċi biex taqra:

għal i:=1 to MsgSize do
    tibda
      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);
    tmiem;

Ukoll, għal dawk verament għażżien - link għall-programm u l-kodiċi tas-sors tiegħu.

Grazzi.

Sors: www.habr.com

Żid kumment