เบกเบตเบเบฑเปเบเบซเบเบถเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเบเบญเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ
เบกเบทเปโเบเบตเปโเบเบงเบโเปเบฎเบปเบฒโเบเบฐโเบเบฐโเบเบฒโเบเบฒเบกโเบเบธเบโเบเบปเปเบโเปเบฅเบดเบโเปเบฅเบฑเบโเบเปเบญเบโเปเบฅเบฐโเปเบเบดเปเบ LSB algorithmโ. เบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบ, เบเปเบฒเบเบเบดเบเบเบตเบเปเบญเบเบฎเบฑเบเบเบฒเบเปเบเป cat. (เบเบฒเบเปเบเปเบเบฒเบเบเบฑเบเปเบกเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ: เบเบฐเบกเบฒเบ megabyte.)
เบซเบเปเบฒเบเปเบฒเบญเบดเบเบเบญเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ, เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเบฒเบเปเบเบฐเบเปเบฒเบชเบฑเปเบ. เบเบธเบเบเบปเบเบฎเบนเปเบงเปเบฒเบเบธเบเบเบฐเบชเบปเบเบเบญเบเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบฅเบฑเบเปเบกเปเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเปเปเบกเบนเบเบฅเบฑเบเปเบเป. เปเบเปเบเบญเบ, เบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบฅเบฑเบเบกเบตเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบกเบฑเบ, เปเบเปเบกเบตเบงเบดเบเบตเบเบฒเบเบเปเบญเบเบเบฑเบเบเปเปเบกเบนเบเบญเบทเปเบ. เบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเปเปเบกเบนเบ, เปเบเปเบเปเบฒเบเปเบฒเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบกเบตเบกเบฑเบ. เบเบตเปเปเบกเปเบเปเบเปเบเบญเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบ steganography เปเบเปเบเบทเบเบเบฐเบเบดเบ. Wikipedia เบฎเบฑเบเบเบฐเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบงเปเบฒ "steganography (เบเบฒเบเบเปเบฃเบฑเบ ฯฯฮตฮณฮฑฮฝฮฟฯ - เปเบเบทเปเบญเบเปเบงเปเปเบฅเบฐเบเปเบฃเบฑเบ ฮณฯฮฑฯฯ - เบเปเบญเบเบเบฝเบ, "เบเบฒเบเบเบฝเบเบเบงเบฒเบกเบฅเบฑเบ") เปเบกเปเบเบงเบดเบเบฐเบเบฒเบชเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบกเบนเบเบเบตเปเปเบเบทเปเบญเบเปเบงเปเปเบเบเบเบฒเบเบฎเบฑเบเบชเบฒเบเบงเบฒเบกเบฅเบฑเบเบเบญเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบกเบนเบ.
เปเบเปเบเบญเบ, เบเปเปเบกเบตเปเบเบซเปเบฒเบกเบเบฒเบเบฅเบงเบกเปเบญเบปเบฒเบงเบดเบเบตเบเบฒเบ cryptographic เปเบฅเบฐ steganographic. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบงเบเปเบเบปเบฒเปเบฎเบฑเบเปเบเบงเบเบตเป, เปเบเปเบงเบฝเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบเบทเปเบเบเบฒเบ. เบเปเบฒเบเปเบฒเบเบชเบถเบเบชเบฒเบเบปเบเบเบงเบฒเบก Wikipedia เบขเปเบฒเบเบฅเบฐเบญเบฝเบ, เบเปเบฒเบเบเบฐเบเบปเบเบงเปเบฒ steganography algorithms เบเบฐเบเบญเบเบกเบตเบญเบฑเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ. เบเบฑเบเบเบธเปเบฅเบฐเบเปเปเบเบงเบฒเบก. เบเปเบญเบเบเบฑเบเบเบธเปเบกเปเบเบเปเปเบกเบนเบเปเบเปเบเบตเปเบเปเบงเบเปเบเบทเปเบญเบเบเปเปเบเบงเบฒเบกเบฅเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบนเปเบเบญเบเปเบเบเปเบเบตเบเบฐเปเบเบฑเบเบฎเบนเบเบเบฒเบเปเบเบฎเบนเบเปเบเบ BMP. เบเปเบฒเบญเบดเบ, เปเบซเปเปเบเบดเปเบเปเบเบเบชเปเบฒเบเบเบญเบเปเบเบฅเปเบเบตเป. เปเบเบฅเปเบชเบฒเบกเบฒเบเปเบเปเบเบญเบญเบเปเบเบฑเบ 4 เบชเปเบงเบ: เบซเบปเบงเปเบเบฅเป, เบซเบปเบงเบฎเบนเบเบเบฒเบ, palette เปเบฅเบฐเบฎเบนเบเบเบฒเบเบเบปเบงเบกเบฑเบเปเบญเบ. เบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบฎเบนเปเบงเปเบฒเบชเบดเปเบเบเบตเปเบเบฝเบเบขเบนเปเปเบเบชเปเบงเบเบซเบปเบง.
เบชเบญเบ bytes เบเปเบฒเบญเบดเบเบเบญเบ header เปเบกเปเบเบฅเบฒเบเปเบเบฑเบ BM, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฐเบซเบเบฒเบเปเบเบฅเปเปเบ bytes เปเบกเปเบเบเบฝเบเปเบเบฑเบเบชเบญเบเบเปเบฒ, 4 bytes เบเปเปเปเบเปเบกเปเบเบชเบฐเบซเบเบงเบเปเบงเปเปเบฅเบฐเบเปเบญเบเบกเบตเบชเบนเบ, เปเบฅเบฐเบชเบธเบเบเปเบฒเบ, เบเปเบฒเบเบนเปเบญเบทเปเบเบกเบต offset เปเบเบเบญเบเบเบปเปเบเบเบญเบ. เปเบเบฅเปเปเบเบซเบฒ bytes เบเบปเบงเบเบดเบเบเบญเบเบฎเบนเบเบเบฒเบ. เปเบเปเบเบฅเป bmp 24-bit, เปเบเปเบฅเบฐ pixels เบเบฐเบเบทเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเปเบงเบเบชเบฒเบก BGR bytes.
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบฎเบนเปเบงเบดเบเบตเบเบฒเบเปเบเบซเบฒเบฎเบนเบเบเบฒเบ, เบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฑเบเบเบปเบเบขเบนเปเปเบกเปเบเปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบงเบดเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฝเบเบเปเปเบกเบนเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบขเบนเปเบเบตเปเบเบฑเปเบ. เบชเปเบฒเบฅเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเบเบฒเบเบงเบดเบเบตเบเบฒเบ LSB. เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบงเบเบญเบเบงเบดเบเบตเบเบฒเบเปเบกเปเบเบเบฑเปเบเบเปเปเปเบเบเบตเป: เบเบงเบเปเบฎเบปเบฒเบเบปเบเปเบเบ bits เบซเบเปเบญเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบ bytes เบเบตเปเบฎเบฑเบเบเบดเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบชเบต. เบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒ byte เบเปเปเปเบเบเบญเบเบเปเปเบเบงเบฒเบกเบฅเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบ 11001011, เปเบฅเบฐ bytes เปเบเบฎเบนเบเปเบกเปเบ...11101100 01001110 01111100 0101100111..., เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบตเป. เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบ byte เบเปเปเบเบงเบฒเบกเบฅเบฑเบเบญเบญเบเปเบเบฑเบ 4 เบเบฒเบเบชเปเบงเบเบชเบญเบเบเบดเบ: 11, 00, 10, 11, เปเบฅเบฐเบเบปเบเปเบเบ bits เบเปเปเบฒเบเบญเบเบฎเบนเบเบเบฒเบเบเบตเปเบกเบต fragments เบเบปเบเปเบเปเบฎเบฑเบ: ...11101111 01001100 01111110 0101100111โฆ. เบเบฒเบเบเบปเบเปเบเบเบเบฑเปเบเบเปเบฒเบงเปเบเบเบเบปเปเบงเปเบเปเบกเปเบเบเปเปเบชเบฑเบเปเบเบเปเบซเบฑเบเบเบฑเบเบเบฒเบเบญเบเบกเบฐเบเบธเบ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบญเบธเบเบฐเบเบญเบเบเบปเบเบเบฐเบฅเบดเบเบเบตเปเปเบเบปเปเบฒเปเบเปเบซเบผเบฒเบเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบชเบฐเปเบเบเบเบฒเบเบเปเบฝเบเปเบเบเปเบฅเบฑเบเบเปเบญเบเบเบฑเปเบเบเปเบฒเบงเปเบเป.
เบกเบฑเบเปเบเบฑเบเบเบตเปเบเบฑเบเปเบเบเบงเปเบฒเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเบเปเปเบเบฝเบเปเบเป 2 bits เบซเบเปเบญเบเบเบตเปเบชเปเบฒเบเบฑเบ, เปเบเปเบเปเบฒเบเบงเบเปเบเบเปเปเบเบฒเบก. เบกเบตเบฎเบนเบเปเบเบเบเบฑเปเบเบเปเปเปเบเบเบตเป: เบซเบผเบฒเบเบเบดเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฝเบเปเบเบ, เบเปเปเบกเบนเบเบซเบผเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเปเบญเบ, เปเบฅเบฐเบเบฒเบเปเบเบเปเบเบเบซเบผเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบฎเบนเบเบเบฒเบเบเบปเปเบเบชเบฐเบเบฑเบ. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเบตเปเปเบกเปเบเบชเบญเบเบฎเบนเบเบเบฒเบ:
เปเบเบดเบเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบญเบเบเปเบญเบ, เบเปเบญเบเบเปเปเบชเบฒเบกเบฒเบเปเบซเบฑเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบเบงเบเบกเบฑเบ, เปเบเปเบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เปเบเบฎเบนเบเบเบฒเบเบเบตเบชเบญเบ, เบเบฒเบเบเปเบฒเปเบเปเบงเบดเบเบตเบเบฒเบเบญเบฐเบเบดเบเบฒเบ, เบเบปเบเบเบฐเบงเบตเบเบญเบ Lewis Carroll "เบเบฒเบเบฅเปเบฒเบชเบฑเบเบเบญเบ Snark" เปเบเปเบเบทเบเปเบเบทเปเบญเบเปเบงเป. เบเปเบฒเบเปเบฒเบเปเบเปเบญเปเบฒเบเบเบตเปเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบฒเบเบเบฐเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเบเบฒเบเบฎเบฝเบเบฎเบนเปเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบ. เบกเบฑเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบ, เปเบเปเบเปเบญเบเบเบฐเปเบเบทเบญเบเปเบเบปเปเบฒเบเบฑเบเบเบตเบงเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบชเปเบฒเปเบฅเบฑเบเปเบ Delphi. เบกเบตเบชเบญเบเปเบซเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป: 1. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบงเปเบฒ Delphi เปเบเบฑเบเบเบฒเบชเบฒเบเบตเปเบเบต; 2. เปเบเบฃเปเบเบกเบเบตเปเปเบเบตเบเบกเบฒเปเบเบเบฐเบเบงเบเบเบฒเบเบเบฐเบเบฝเบกเบซเบผเบฑเบเบชเบนเบเบเบทเปเบเบเบฒเบเบเบญเบกเบเบดเบงเปเบเบตเบงเบดเปเบชเบเบฑเบ, เบเบนเปเบเบฒเบเบเบตเปเบเปเบญเบเบเปเบฒเบฅเบฑเบเบชเบญเบเบซเบผเบฑเบเบชเบนเบเบเบตเปเบเบฑเบเบเปเปเบเบฑเบเบฎเบนเปเบซเบเบฑเบเบเบญเบเบเบฒเบ Delphi. เบชเปเบฒเบฅเบฑเบเบเบนเปเบเบตเปเบเปเปเบเบธเปเบเปเบเบตเบเบเบฑเบ syntax, เบชเบดเปเบเบซเบเบถเปเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบญเบฐเบเบดเบเบฒเบ: shl x เปเบกเปเบเบเบฒเบเบเปเบฝเบเปเบฅเบฑเบเบเปเบญเบเปเบเบเบฒเบเบเปเบฒเบเปเบเบ x, shr x เปเบกเปเบเบเบฒเบเบเปเบฝเบ bitwise เปเบเบเบฒเบเบเบงเบฒเปเบเบ x.
เบเบงเบเปเบฎเบปเบฒเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบฝเบเบเปเปเบเบงเบฒเบกเบเบตเปเปเบเบฑเบเปเบงเปเปเบ string เปเบเบปเปเบฒเปเบเปเบ container เปเบฅเบฐเบเปเบฝเบเปเบเบเบชเบญเบ bytes เบเปเปเบฒ:
เบฅเบฐเบซเบฑเบเบเบฒเบเบเบฑเบเบเบถเบ:
เบชเปเบฒเบฅเบฑเบ i:=1 เบเบฑเบ 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);
เบชเบดเปเบเบชเบธเบ
เบฅเบฐโเบซเบฑเบโเบเบตเปโเบเบฐโเบญเปเบฒเบโ:
เบชเปเบฒเบฅเบฑเบ i:=1 เบเบฑเบ 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);
เบชเบดเปเบเบชเบธเบ
เปเบฅเปเบง, เบชเปเบฒเบฅเบฑเบเบเบปเบเบเบตเปเบเบตเปเบเปเบฒเบเปเบเปเป -
เบเปเบเบญเบเปเบเบเปเบฒเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com