February 18, 2012

XOR အလဂိုလီဇင်

ပြီးခဲ့တဲ့ အပါတ်ကစပြီး Happy Hacking ခေါင်းစဉ်ကို စတင်ရေးသားခဲ့၏။ လူအတော်များများက Hacking ဆိုလျှင် မကောင်းသောအရာ၊ မကောင်းသော အလုပ်ဟု ထင်မှတ်မှားနေကြ၏။ မှားလောက်စရာပင်။ လုပ်ချလိုက်ပြန်ပြီ။ ဟိုဟာတွေကို ခိုးသွား၊ အခြားဆိုဒ်တွေကို ပြန်ပြီးကြည့်မရအောင် ဖျက်စီးပစ်သွားသည်များ၊ အမျိုးမျိုး မကောင်းသတင်းများဖြင့် ကျော်ကြားနေခဲ့ရ၏။ ထို့အပြင် ဘာမှမဟုတ်ပဲ ရူးကြောင်ကြောင် လိမ်လည်ခြင်းကို နည်းပြပြီး ဒါဟာ ဟက်ကင်းပါဆိုပြီး လေလုံးထွားနေသူများက အတော်များသောကြောင့် ဖြစ်၏။

ဟိုတလောတုန်းက ကျွှန်တော်အလွန်နှစ်သက်ခဲ့သော မြန်မာအိုင်တီပရိုဆိုဒ်တွင် အလွန် စိတ်ပျက်စရာ ကောင်းသော စူပါ ဟက်ကာကြီး တစ်ယောက်ကို တွေ့ခဲ့ရပါသည်။ Gmail ကို ဘယ်လိုဟက်မလဲတဲ့ ရေးထားပါသည်။ အတော်လေးကို စိတ်ပျက်စရာကောင်းပါသည်။

Gmail login စာမျက်နှာကို ဖွင့်ပါတဲ့။ ပြီးရင် ညာဘက်ကလစ်ကိုနှိပ်ပြီး View Source ကို သွားပါတဲ့။ ပြီးရင် Ctl + a နဲ့ Ctl + c ကို နှိပ်ပါတဲ့။ ပြီးတော့ memo ကို ဖွင့်ပြီး Ctl + p လုပ်ပါတဲ့။ သြော်ရှည်လိုက်တာ။ အဲ့ဒီစာမျက်နှာကို ဒီအတိုင်း Save လုပ်ပြီး Text Editor တစ်ခုနဲ့ဖွင့်ရင် ပြီးတာပဲဟာလို့ တွေးမိပါသည်။ Short Cut တွေသုံးပြီး အလွန်တော်ကြောင်း ကြွားလိုပုံရပါသည်။

ကျန်တာတွေကတော့ သိပ်ပြီး စိတ်ဝင်စားစရာမကောင်းပါ။ Form ရဲ့ action မှာ သူသွားစေလိုတဲ့ PHP Url ကို ဖြည့်ခိုင်းပါတယ်။ ပြီးတော့ အဲ့ဒီ PHP ထဲမှာ Request ထဲမှာပါတဲ့ ပါရာမီတာထဲက account နဲ့ password ကို text ဖိုင်တစ်ခုမှာ ရေးခိုင်းပါတယ်။ အဲ့ဒီလိုပြင်ပြီးတဲ့ HTML ဖိုင်ကို ဆာဗာတစ်ခုမှာတင်ပြီး သူငယ်ချင်းတစ်ယောက်ယောက်ကို log in လုပ်ခိုင်းပါတဲ့။ အဲ့ဒီစာမျက်နှာမှာ Log in လုပ်ရင်တော့ Account နဲ့ Password ရပြီတဲ့။ ဘယ်လောက် စိတ်ပျက်စရာကောင်းသလဲ။

လေ့လာစရာလည်းမပါသလို အသုံးလည်းမကျဘူး။ ဘလောဂ် တစ်ခုလုံးသာ ဖတ်လိုက်ရတယ်။ အချိန်ကုန်တာနဲ့ စိတ်တိုတာပဲ အဖတ်တင်တယ်။ ဒီကြားထဲ စကားလုံးတွေက အလွန်ကြီးတော့ နားက အတော်ကလောလာတာနဲ့ ဝင်ပြီး ဆဲပေးထားလိုက်ပါတယ်။ အဲ့ဒီလို ဘာမှ ပညာလည်းမပါ၊ သုံးလို့မရတဲ့ လိမ်နည်းတွေကို ရေးပြီး ဟက်ကင်းပါဆိုပြီး လေလုံးထွားနေသူများ၊ အဲ့ဒီလို စောက်သုံးမကျတာတွေကို Like လုပ်နေသူများကြောင့် ဟက်ကင်း၏ အဓိပ္ပါယ်သည် အလွန်ကို အသုံးမကျသော အဓိပ္ပါယ်များ ဖြစ်ကုန်ခြင်းဖြစ်၏။


ဟက်ကင်းဆိုသည်မှာ

ဟက်ကင်း၏ အစသည် ဤကဲ့သို့ ရုပ်မဆိုးပါ။ မဟုတ်ပါ။ ရုတ်မဆိုးရုံတင်မက အလွန် လှပပါသည်။ သိမ်မွေ့ပါသည်။ နူးညံ့ပြီး နက်နဲ လှပါသည်။ ဟက်ကာဆိုသည့်စကားလုံးကိုစတင် ခဲ့ကြသည်မှာ လွန်ခဲ့သော နှစ်ပေါင်း ၆၀ ကျော်ကတည်းက ဖြစ်၏။ ၁၉၅၀ခုနှစ်နှောင်းပိုင်းတွင်ဖြစ်၏။ MIT ၏ မီးရထား သံလမ်း ဝါသနာပါသူများအသင်းသည် သံလမ်း ပစ္စည်းအဟောင်းများကို အလှူအဖြစ်လက်ခံ ရရှိခဲ့၏။ ထိုပစ္စည်းအဟောင်းများ၏ အများစုမှာ သုံးမရအောင် ပျက်စီးနေသော တယ်လီဖုန်း အစုတ်များ ဖြစ်ကြ၏။ ထိုစဉ် သံလမ်းကလပ် အဖွဲ့ဝင် ကျောင်းသားများက တယ်လီဖုန်းအစုတ်များကို အသုံးပြု၍ အော်ပရေတာမှ တယ်လီဖုန်း နံပါတ်များကို လှည့်ခြင်းအားဖြင့် သံလမ်းပေါ်ရှိ ရထားများကို မှန်ကန်စွာ လမ်းကြောင်းပေးနိုင်သည့် စစ္စတမ်တစ်ခုကို တီထွင်ခဲ့ကြ၏။ ဤကဲ့သို့ တယ်လီဖုန်းကို အသုံးပြု၍ ဖုန်းဆက်ခြင်းနဲ့ မပတ်သက်သော လုပ်ငန်းတစ်ခုကို လုပ်ဆောင်နိုင်ခြင်းကို ဟက်ကင်းဟု ခေါ်ဆိုခဲ့ကြ၏။

ဆိုလိုသည်မှာ သမရိုးကျလုပ်နည်းလုပ်ဟန်မဟုတ်ပဲ ပြဿနာများအား လှပစွာ ဖြေရှင်းနိုင်ခြင်းကို ဟက်ကင်းဟုသတ်မှတ်ခဲ့၏။ ထိုမှတဆင့် အနုပညာမဆန်သော ကုဒ်များကို လှပသေသပ်စွာ၊ ရေးသားချင်းကိုလည်း ဟက်ကင်းဟု ခေါ်ဆိုလာခဲ့ကြသည်။ အင်တာနက်ထဲတွင်အလကားပြထားသည့်၊ တူးများကို သုံး၍ ဟိုဆာဗာကို DDos နဲ့ တိုက်လိုက်၊ ဟိုဆိုဒ်ဒီဆိုဒ်များတွင် ရေးသားထားသော ပေါက်ကရများအား ဘာသာပြန်၍ ဟက်ကာကြီးဆိုပြီး လေလုံးထွားလိုသူများကို မဆိုလိုပါ။ သို့ရာတွင် နောက်ပိုင်းတွင် ဟက်ကာများကလည်း BBS အစရှိသည့်ကွန်မြူနတီများမှ တဆင့် မိမိတို့ရေသားထားသော ဆော့ဖ်ဝဲများကို ဖြန့်ဝေခြင်း၊ တစ်ယောက်နဲ့တစ်ယောက် လက်ဆင့်ကမ်းခြင်း တို့ကြောင့်၊ စိတ်မကောင်းစရာကောင်းလောက်အောင်ပင် တော်ရုံအင်တာနက်သုံးသူများလည်း ဟက်ကာများ ဖြစ်လာနိုင်ကြ၏။

ကုဒ်ရေးခြင်း၏ အနုပညာထက် မည်သို့ခိုးမည်၊ မည်သို့လိမ်မည် အစရှိသည့်နည်းပညာများက ဟက်ကင်းနည်းပညာများ အဖြစ် လူသိများလာကြ၏။ ခိုးနည်းများကို ရေးထားသည်မှာ ဘာပဲပြောပြော စစ္စတမ်၏ အားနည်းချက်များကို ဖော်ပြထားလေ့ရှိပြီး မည်ကဲ့သို့ ထိုးဖောက်နိုင်မည်ကို ဖော်ပြထားလေ့ရှိသောကြောင့် ဘာပဲပြောပြော လေ့လာစရာရှိ ပါဦးမည်။ သို့ရာတွင် လိမ်နည်းများကတော့ စိတ်ပျက်စရာကောင်းပါသည်။ လိမ်နည်းများကို ဘယ်လိုနည်းနဲ့မှ ဟက်ကင်းဟု လက်ခံ၍မရပါ။ သို့ရာတွင် အများက လိမ်နည်းခိုးနည်းများကို ဟက်ကင်းဟု ခေါ်ဆိုနေကြပါသောကြောင့် လက်ရှိ လိမ်နည်းခိုးနည်းများလည်း ဟက်ကင်းနည်းပညာများ ဖြစ်နေကြပါသည်။

ဘာလို့ ဒီနေရာမှာ ဒီလောက် ဟက်ကင်း အကြောင်း လာပြောနေရသလဲ ဆိုတော့ Happy Hacking ဟု ခေါင်းစဉ်တပ်မိသောကြောင့် ဖြစ်၏။ ကျွှန်တော်သည် ဤနေရာတွင် လက်ရှိ လူသိများနေသော ဟက်ကင်းနည်းများဖြစ်ကြသော လိမ်နည်း ခိုးနည်းများကို ရေးသားမည်မဟုတ်။ Java ကုဒ်များကို လှပသေသပ်စွာ ရေးသားနိုင်ရန် ရည်ရွယ်၍ Puzzles For Hackers ထဲမှ သင်ခန်းစာများကို လေ့လာရင်း စဉ်းစားပုံ အလဂိုလီဇင်များကို လက်လှမ်းမှီသလို Java ဖြင့်မည်သို့ရေးသားမည် ဆိုသည်ကို ရေးသားသွားမည် ဖြစ်ပါသည်။


XOR အလဂိုလီဇင် နှင့် စကားဝှက်ပညာ

အောက်ပါ ပုဒ်စာသည် Puzzles For Hackers (ဂျပန်ဘာသာပြန်) ၏ Cool Crypto ဆိုသည့် အခန်းမှ ကောက်နှုတ်ထားပါသည်။

Cool Crypto

ဟက်ကာ Calvin Smithnik သည် Anti Creature ၏ စကားဝှက်ပရိုဂရမ်အသစ်တစ်ခုဖြစ်သော Cool Crypto ၏ နမှုနာဗားရှင်းအား ဒေါင်းလုဒ်လုပ်လာခဲ့၏။ Smithnik သည် ဤကဲ့သို့သော ဆော့ဖ်ဝဲများကို လွန်စွာစိတ်ဝင်စားလေ့ရှိသည်။ ဘာကြောင့်ဆိုသော် စကားဝှက်ပညာသည် သူ၏လုပ်ငန်းအတွက် လွန်စွာအသုံးဝင်သောကြောင့် ဖြစ်၏။ Cool Crypto ဖြင့် ပုံစံပြောင်းထားသော ဖိုင်များအား မကြာမကြာ တွေ့ရှိလေ့ရှိသောကြောင့် Cool Crypto ၏ အလဂိုလီဇင်ကို သိရှိပါက လျှို့ဝှက်ချက်များကို ဖော်ထုတ်ရာတွင် လွယ်ကူစေသောကြောင့် ဖြစ်၏။ Anti Creature သည် Cool Crypto အား "ဒေါ်လာ ၁၀၀တန် Full Version ခြင်းအားဖြင့်၊ သင်၏ အဖိုးတန် အချက်အလက်များကို အန္တရယ်ရှိသော ဟက်ကာများမှ ၁၀၀ရာနှုန်း ကာကွယ်နိုင်ပါသည်" ဟု ကြော်ညာထား၏။

နမှုနာဗားရှင်းသည် Full Version နှင့်စာလျှင် အသုံးပြုပုံ အတော်များများကို အားလျှော့ထားပါသည်။ ဥပမာအားဖြင့် နမှုနာဗာရှင်းတွင် လျှို့ဝှက်ရာတွင် အသုံးပြုသည့် ကီးအား သတ်မှတ်၍မရပေ။ Smithnik သည် Cool Crypto ၏ Input Field တွင် "creature_creature_creature" ဟု ဖြည့်စွက်ပြီး Crypt ခလုပ်ကို နှိပ်လိုက်ပါသည်။

"]VTYJQC]aGC]_PDJ[{RJ[EEMLA"ဟု ပြောင်းပေးသည်ကို တွေ့ရ၏။ တဖန် သူ၏ အမည်ဖြစ်သော smith ကို စကားဝှက်ပြောင်းကြည့်ပါသည်။ အဖြေကို ကြည့်သောအခါ Smithnik သည် Cool Crypto ၏ စကားဝှက်တွင် အသုံးပြုနေသော အလဂိုလီဇင်ကို သဘောပေါက်သွားပါတော့သည်။

Cool Crypto တွင် အသုံးပြုနေသော အလဂိုလီဇင်မှာ အဘယ်နည်း။ တဖန် smith ကို ပြောင်းကြည့်သော အခါ ရရှိသော ရလဒ်မှာ အဘယ်နည်း။


XOR အလဂိုလီဇင်

စကားဝှက်နှင့် မှုရင်းစာလုံး၏ အရေအတွက်မှာ အတူတူဖြစ်ခြင်းကိုကြည့်၍ Smithnik သည် ဤ စကားဝှက်အား ဖော်ထုတ်နိုင်လိမ့်မည်ဟု ယုံကြည်ခဲ့သည် ဟုဆို၏။ ဤ Cool Crypto တွင် အသုံးပြုထားသည်မှာ ရိုးရှင်းသော XOR အလဂိုလီဇင်ပင်ဖြစ်၏။

ABA XOR B
000
011
101
110

ဥပမာအားဖြင့် အင်္ဂလိပ်စာလုံး A သည် ASCII ဖြင့် 41H ဖြစ်ပြီး ဘိုင်နရီ 01000001 ဖြစ်၏။ တဖန် အင်္ဂလိပ်စာလုံး l သည် ASCII 31H ဖြစ်ပြီး ဘိုင်နရီ 01101100 ဖြစ်၏။ A XOR l သည် ဘိုင်နရီ 1110000 ဖြစ်ပါသဖြင့် ASCII စာလုံး p ဖြစ်ပါသည်။

A= 01000001
l= 01101100
A ^ l= 11100000

တဖန် Smithnik သည် ဤ XOR အလဂိုလီဇင်၏ ထူးခြားချက်တစ်ခုကိုလည်း တွေးတောမိပါသည်။ ဤသည်မှာ အောက်ပါအတိုင်းဖြစ်၏။

X XOR key = Y
Y XOR key = X
X XOR Y = key

စာကားလုံးတစ်ခုကို ကီးကိုအသုံးပြု၍ စကားဝှက်ကို ပြုလုပ်ထားသည်။ စာကားလုံးနှင့် စာကားဝှက် အဖြေကို သိပြီဆိုလျှင် ကီးကိုရှာ၍ ရပြီဖြစ်သည်။ နမှုနာထဲတွင် C ပရိုဂရမ်မင်းကို အသုံးပြု၍ ဖော်ပြထားသော်လည်း ဤနေရာတွင် Java ကို အသုံးပြု၍ ပုဒ်စာကို ဖြေရှင်းကြည့်ပါမည်။


ကီးကိုရှာဖွေခြင်း

public class CoolCrypto {
 
 public static void main(String[] args) {

  String key = "]VTYJQC]aGC]_PDJ[{RJ[EEMLA";
  String input = "creature_creature_creature";
  
  if(args.length == 2) {
   key = args[0];
   input = args[1];
  }
  
  System.out.println(crypt(key, input));
 }
 
 public static String crypt(String key, String input) {
  StringBuilder sb = new StringBuilder();
  
  int count = 0;
  for(int i=0; i < input.length(); i++) {
   if(count >= key.length()) {
    count = 0;
   }
   char c = input.charAt(i);
   c^= key.charAt(count);
   sb.append(c);
   count ++;
  }

  return sb.toString();
 }
}


ဤပရိုဂရမ်တွင် အဓိက XOR ကို ပြောင်းပေးနေသည်မှာ စာကြောင်း ၂၅ဖြစ်၏။ input ၏ စာလုံးတစ်လုံးခြင်းအား key ၏ စာလုံးတစ်လုံးခြင်းဖြင့် xor လုပ်ပြီး စာကားဝှက်ကို ပြုလုပ်နေခြင်းဖြစ်သည်။ တဖန် ဤပရိုဂရမ်ဖြင့် ကီးကိုရှာဖွေရန် ကီးနေရာတွင် စာကြောင်း နံပါတ် ၅ ဖြင့် ရလဒ်ကိုသတ်မှတ်ပြီး၊ မှုရင်းစာလုံးနေရာတွင် စာကြောင်း ၆ ဖြင့် Smithnik ကအသုံးပြုခဲ့သော မှုရင်းစာလုံးကို အသုံးပြုပါသည်။ တဖန် ဤပရိုဂရမ်အား ပါရာမီတာမပါပဲ အလုပ်လုပ်ကြည့်ပါက အောက်ပါအတိုင်း အဖြေထွက်မည် ဖြစ်သည်။

>$18>$18>$18>$18>$18>$18>$

အဖြေကိုကြည့်ခြင်းအားဖြင့် Cool Crypto ၏ ကီးစာလုံးသည် >$18 ဖြစ်သည်ကို သိရှိနိုင်ပါသည်။ ပြီးလျှင် ကျွှန်တော်တို့ ရရှိသောကီးဖြင့် smith ကိုစကားဝှက်လုပ်ကြည့်ပါမည်။

MIXLV

ဆက်လက်၍ လေ့လာသွားပါဦးမည်။
Source ကုဒ်များကို https://github.com/minlwin/mmju/tree/master/happy-hacking တွင် တင်ထားပါသည်။

ကိုးကား
http://www.amazon.co.jp/gp/product/images/479811135X/ref=dp_image_0?ie=UTF8&n=465392&s=books



လေးစားစွာဖြင့်
မင်းလွင်

3 comments:

  1. အလဂိုလီဇင် ဆိုတာဘာလဲ ခင္ဗ်

    ReplyDelete
  2. ကျေးဇူးပါ ဆရာ။

    ReplyDelete
  3. လေးစားတယ်ဗျာ။

    ReplyDelete