LSB ပုံသဏ္ဍာန်

တစ်ချိန်က ကျလန်တော်ရေသတယ်။ hub မဟာ ပထမဆုံသတင်တာပါ။. ပဌီသတော့ ဒီပို့စ်ဟာ အလလန်စိတ်ဝင်စာသစရာကောင်သတဲ့ ပဌဿနာတစ်ခုဖဌစ်တဲ့ 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 မျာသပိုမိုပဌောင်သလဲလေ၊ အချက်အလက်ပိုဝဟက်နိုင်လေလေ၊ ၎င်သသည် မူရင်သပုံတလင် ဝင်ရောက်စလက်ဖက်လေလေဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ ကတလင် ပုံနဟစ်ပုံဖဌစ်သည်-

LSB ပုံသဏ္ဍာန်
LSB ပုံသဏ္ဍာန်

ကျလန်ုပ်၏အကောင်သဆုံသကဌိုသစာသမဟုမျာသကဌာသမဟ ခဌာသနာသချက်ကို ကျလန်ုပ်မမဌင်နိုင်သော်လည်သ၊ မည်သို့ပင်ဆိုစေကာမူ ဒုတိယပုံတလင် ဖော်ပဌထာသသောနည်သလမ်သကို အသုံသပဌု၍ 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

DDoS ကာကလယ်ရေသ၊ VPS VDS ဆာဗာမျာသပါသည့် ဆိုက်မျာသအတလက် ယုံကဌည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကလယ်မဟု၊ VPS VDS ဆာဗာမျာသပါရဟိသော ယုံကဌည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster