áá áºáá»áááºá áá»áœááºáá±á¬áºáá±ážáááºá . ááŒá®ážáá±á¬á· áá®ááá¯á·á áºáᬠá¡ááœááºá áááºáááºá á¬ážá áá¬áá±á¬ááºážáá²á· ááŒá¿áá¬áá áºáá¯ááŒá áºáá²á· Steganography ááᯠáááºááœáŸááºážáá«áááºá áá¯ááºáá«áááºá áá®á¡ááŒá±á¬ááºážá¡áá¬áá±á¬ááºážááŸá¬ á¡ááá¯ááŒá¯áá¬ážáá²á· á¡ááŒá±ááᯠá áá¬ážáá¯á¶ážáá²á· á á áºááŸááºáá²á·ááá±á¬á¡á Steganography ááá¯á· ááá±á«áºááá¯ááºáá«áá°ážá áááºážááẠááá¯ááºáá±á¬áºáááºáá»á¬ážáá«ááá·áº ááááºážáá áºáá¯áá»áŸáá¬ááŒá áºáá±á¬áºáááºáž á¡ááœááºá áááºáááºá á¬ážá áá¬áá±á¬ááºážááá·áº ááááºážáá áºáá¯ááŒá áºáááºá
ááá±á·áá»áœááºá¯ááºááá¯á·áááºáááºážáááºážáá±ážáááºá¡á±á¬ááºááŒáá¯ážá
á¬ážááŒá®áž LSB algorithm ááá¯ááŒáá·áºááŸá¯áá«áááºá á
áááºáááºá
á¬ážááẠááŒá±á¬ááºá¡á±á¬ááºááŸá¬ ááŒáá¯ááá¯áá«áááºá (ááŒááºáá±á¬ááºááŸá¯á¡á±á¬ááºááœáẠáá¬ááºá¡ááœá¬ážá¡áá¬- áá®áá«ááá¯ááºááá·áºááŸááááºá)
ááááá¯á¶ážá¡áá±áá²á· á¡ááá¯áá»á¯á¶ážááááºáááºááá¯á· ááá¯áá«áááºá cryptography á áááºááœááºáá»ááºááŸá¬ áá»áŸáá¯á·ááŸááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáááºááẠáááŒá
áºááá¯ááºááŒá±á¬ááºáž áá°ááá¯ááºážáááá«áááºá áá¯ááºáá«áááº, cryptography ááœááºáááºážáá¡áá¯á¶ážáá»áááá¯ááááºáá»á¬ážáá«ááŸááá±á¬áºáááºážáá±áá¬ááá¯áá¬ááœááºáááºá¡ááŒá¬ážáááºážáááºážáá
áºáá¯ááŸááááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá»ááºá¡áááºááᯠáá¯ááºááŸááºááẠáááá¯á¡ááºáá±á¬áºáááºáž áááºážááᯠáá»áœááºá¯ááºááá¯á·ááœáẠáááŸááᯠáááºáá±á¬ááºáá«á á€áááºááŸá¬ áááá»á
áœá¬ steganography ááᯠáá®ááœááºáá²á·ááŒááºáž ááŒá
áºáááºá âSteganography (ááá ÏÏÎµÎ³Î±ÎœÎ¿Ï - ááŸááºáá¬ážááŒá®áž ááááá¬áᬠγÏαÏÏ - áá«áá±ážáááºá á
á¬áá¬ážá¡á âáá»áŸáá¯á·ááŸááºá
á¬áá±ážâ) áᬠáá»áŸáá¯á·ááŸááºá¡áá»ááºá¡áááºááœá±ááᯠáá»áŸáá¯á·ááŸááºáá¬ážááŒááºážá¡á¬ážááŒáá·áº ááááºážá¡áá»ááºá¡áááºááœá±ááᯠáá»áŸáá¯á·ááŸááºáá±ážááá¯á·ááŒááºážááá¯ááºáᬠáááá¹áá¶ááá¬ááŒá
áºáááºááá¯á· áá®áá®áá®ážáá®ážáá¬ážá á¡á¬ááá¶áá«áááºá
áá¯ááºáá«áááºá áááºáá°áá០cryptographic áá²á· steganographic áááºážáááºážááœá±ááᯠáá±á«ááºážá ááºáá¬ááᯠáá¬ážááŒá áºáá¬ážááŸá¬ ááá¯ááºáá«áá°ážá ááá¯á·á¡ááŒááºá áááºááœá±á·ááœáẠáááºážááá¯á·ááẠáááºážááá¯áá¯ááºáá±á¬ááºáá±á¬áºáááºáž áá»áœááºá¯ááºááá¯á·ááá¬áááºááŸá¬ á¡ááŒá±áá¶áá»á¬ážááᯠáá¬ážáááºáááºááŒá áºáááºá Wikipedia áá±á¬ááºážáá«ážááᯠáá±áá»á¬áá±á·áá¬áá«áá steganography algorithms ááœáẠáááºážáá¯áá±á«áºáá±á¬ á¡áá¬áá»á¬ážáá«áááºáááºááᯠáááºááœá±á·ááŸáááá¯ááºáááºááŒá áºáááºá ááœááºááááºáá¬ááŸáá·áºáááºáá±á·ááºá»á ááœááºááááºáá¬ááá¯áááºááŸá¬ áá»áœááºá¯ááºááá¯á·ááá»áŸáá¯á·ááŸááºá á¬ááá¯ááᯠáá¯á¶ážááœááºááẠáá°áá®áá±ážááá·áº áááºááá·áºá¡áá»ááºá¡áááºáááá¯ááŒá áºáááºá
áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá ááœááºááááºáá¬ááẠBMP áá±á¬áºáááºááŒáá·áº áá¯á¶ááŒá áºáááá·áºáááºá á¡áááºáá¯á¶áž áá®ááá¯ááºáá²á· ááœá²á·á ááºážáá¯á¶ááᯠááŒáá·áºáá¡á±á¬ááºá ááá¯ááºááᯠá¡ááá¯ááºáž á ááá¯ááºáž ááœá²ááŒá¬ážááá¯ááºáááº- ááá¯áẠáá±á«ááºážá á®ážá áá¯ááºáá¯á¶ áá±á«ááºážá á®ážá áá»ááºáá»áẠááŸáá·áº áá¯ááºáá¯á¶ ááá¯ááºááá¯ááºá áá»áœááºá¯ááºááá¯á·ááááºááœááºáá»ááºáá»á¬ážá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá±á«ááºážá á®ážááœáẠáá±ážáá¬ážáááºááᯠáááááºáᬠááá¯á¡ááºáá«áááºá
áá±á«ááºážá á®ážááááááŸá áºááá¯ááºááẠBM áááºááŸááºááŒá áºááŒá®ážá ááá¯á·áá±á¬áẠbytes ááœááºááá¯ááºá¡ááœááºá¡á á¬ážááá¯á áá¬ážáá¯á¶ážááŸá áºáá¯á¶ážááŒáá·áºáá±ážáá¬ážáááºá áá±á¬áẠ4 bytes ááá¯áá®ážááá·áºáá¬ážááŒá®ážáá¯ááá«ááŸáááááºá áá±á¬ááºáá¯á¶ážááœááºá¡ááŒá¬ážá áá¬ážáá¯á¶ážááŸá áºáááºáááºáááºážáá¡á á០offset áá«ááŸááááºá áá¯á¶á áááá·áº bytes ááá¯á· ááá¯ááºá 24-bit bmp ááá¯ááºááœááºá pixel áá áºáá¯á á®ááᯠBGR bytes áá¯á¶ážáá»áá¯ážááŒáá·áº áá¯ááºáá¯ááºáá¬ážáááºá
ááᯠáá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáá¯á¶ááá¯á· áááºááá¯á·ááœá¬ážááááºááᯠáááá¬ážááŒá®áž áá»ááºá¡áá¬á¡á¬ážáá¯á¶ážááŸá¬ ááá¯áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáááºááá¯á·áá±ážááá¯ááºáááºááᯠáá¬ážáááºáááºááŒá áºáááºá á€á¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠLSB áááºážáááºážááᯠááá¯á¡ááºáá«áááºá áááºážáááºážá á¡ááŸá áºáá¬áááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááº- á¡áá±á¬ááºáá¯ááºááŒá±á¬ááºážááŒááºážá¡ááœáẠáá¬áááºááŸááá±á¬ bytes ááŸá áááá¬áááºááŸá¬ážáá±á¬ bits áá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· á¡á á¬ážááá¯ážáá«áááºá áá»áœááºá¯ááºááá¯á·ááá»áŸáá¯á·ááŸááºá á¬ááá¯ááá±á¬ááºáá áºááá¯ááºááẠ11001011 ááŒá áºááŒá®áž áá¯á¶ááŸáááá¯ááºáá»á¬ážáááº... 11101100 01001110 01111100 0101100111... ááá¯ááŒáá«á áá¯á·á áá¯ááºáá¯ááºááẠá€áá²á·ááá¯á·ááŒá áºáááá·áºáááºá áá»áŸáá¯á·ááŸááºáááºáá±á·áá»áº byte ááᯠááŸá áºáá Ạá¡ááá¯ááºáž 4 áá¯á¡ááŒá Ạááá¯ááºážááŒá¬ážáá«áááº- 11, 00, 10, 11, ááŸáá·áº áá¯á¶á á¡áááá·áºááá¯ááºážáá áºáá»á¬ážááᯠááááºá¡ááá¯ááºážá¡á áá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážáááº- ...11101111 01001100 01111110 0101100111âŠ. ááá¯ááá¯á·áá±á¬ á¡á á¬ážááá¯ážááŸá¯ááẠáá±áá¯áá»á¡á¬ážááŒáá·áº áá°á·áá»ááºá áá¡ááœáẠááááá¬áá±á ááá¯á·á¡ááŒááºá á¡áá±á¬ááºážá¡ááœááºá ááºáá á¹á ááºážáá»á¬ážá áœá¬ááẠááá¯áá²á·ááá¯á·áá±á¬ á¡áá±ážá á¬ážááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááá¯ááẠááŒáááá¯ááºáááºááá¯ááºáá±á
áááá¬áááºááŸá¬ážáá±á¬ bit 2 áá¯áá¬áááá² áááºááá·áºá¡áá±á¡ááœááºááá¯áááᯠáááºááŒá±á¬ááºážáá²ááá¯ááºáááºááŸá¬ ááŸááºážáá«áááºá á¡á±á¬ááºáá«áá¯á¶á á¶ááŸááá«áááº- áá»áœááºá¯ááºááá¯á·ááẠbit áá»á¬ážááá¯ááá¯ááŒá±á¬ááºážáá²áá±á á¡áá»ááºá¡áááºááá¯ááŸááºááá¯ááºáá±áá±á áááºážááẠáá°áááºážáá¯á¶ááœáẠáááºáá±á¬ááºá áœááºáááºáá±áá±ááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá á€ááœáẠáá¯á¶ááŸá áºáá¯á¶ááŒá áºáááº-


áá»áœááºá¯ááºáá¡áá±á¬ááºážáá¯á¶ážááŒáá¯ážá
á¬ážááŸá¯áá»á¬ážááŒá¬ážá០ááŒá¬ážáá¬ážáá»ááºááᯠáá»áœááºá¯ááºáááŒááºááá¯ááºáá±á¬áºáááºážá áááºááá¯á·áááºááá¯á
á±áá¬áá° áá¯ááááá¯á¶ááœáẠáá±á¬áºááŒáá¬ážáá±á¬áááºážáááºážááᯠá¡áá¯á¶ážááŒá¯á Lewis Carroll áááá»á¬ âThe Hunting of the Snarkâ ááᯠááŸááºáá¬ážáááºá áá®á¡ááŒá±á¬ááºážááᯠáááºááŒá®ážááŒá® ááá¯ááẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ á¡ááŒá±á¬ááºážááᯠáá±á·áá¬ááá¯á· á
áááºáááºá
á¬ážáá±áá±á¬ááºáá«ááŒá®á á¡á²áá«á áá±á¬áºáá±á¬áºááá¯ážááŸááºážáá«áááºá áá«áá±ááá·áº Delphi ááŸá¬ á¡áá¬á¡á¬ážáá¯á¶ážááŒá®ážááœá¬ážááŒá®ááá¯á· áááºážááᯠáá«áá»ááºáá»ááºážááááá±ážáááºá áá®á¡ááœáẠá¡ááŒá±á¬ááºážááŒáá»áẠááŸá
áºáá¯ááŸááá«áááº- 1. Delphi áᬠáá¬áá¬á
áá¬ážáá±á¬ááºážáá
áºáá¯ááá¯á· áá»áœááºáá±á¬áºáááºáá«áááºá 2. á€áááá¯ááááºááẠááœááºááŒá°áá¬á¡ááŒááºááá¯ááºáᬠá¡ááŒá±áá¶áááºáááºážááᯠááŒááºáááºáá±á
ááºááœáẠááœá±ážááœá¬ážáá¬áá²á·ááŒá®áž á€áááºáááºážááœáẠáá»áœááºá¯ááºáááºááŒá¬ážáá±áá±á¬ áá±á¬ááºá»á¬ážáá»á¬ážááẠDelphi ááŸááœá²á á¡ááŒá¬ážáá¬ááŸáááááŒáá±ážáá«á syntax ááŸáá·áº ááááºážááŸá®ážáá°áá»á¬ážá¡ááœááºá áá
áºáá¯ááŸááºážááŒááá¯áááº- shl x ááẠx ááŒáá·áº áááºáááºááá¯á· á¡áááºážáááºááŒá±á¬ááºážáááºá shr x ááẠx ááŒáá·áº áá¬áááºááá¯á· á¡áááºážáááºááŒá±á¬ááºážáááºá
áá»áœááºá¯ááºááá¯á·ááẠááœááºááááºáá¬áá²ááá¯á· á
á¬ááŒá±á¬ááºážáá
áºáá¯ááœáẠááááºážáááºážáá¬ážáá±á¬ á
á¬áá¬ážááᯠáá±ážáá¬ážáá±ááŒá®áž á¡á±á¬ááºááŸá
áºááá¯ááºááᯠá¡á
á¬ážááá¯ážáá±áááºáᯠáá»áœááºá¯ááºááá¯á· áá°ááááº-
ááŸááºáááºážáááºáá¯ááº-
for i:=1 to length(str) áá¯ááºáá«á
á¡á ááŒá¯
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);
á¡áá¯á¶áž;
áááºááẠáá¯ááº
for i:=1 to 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);
á¡áá¯á¶áž;
ááááºáá»ááºážáá°ááœá±á¡ááœááº- .
ááá»ááá»ááá¯áá»á±ážáá°ážáááºáá«áááºá
source: www.habr.com
