နိဒါန်း
တစ်ဦးက hex အမှိုက်ပုံအချက်အလက်များ၏တစ်ဦး hexadecimal အမြင်ဖြစ်ပါတယ်။ သငျသညျ program တစ်ခု debugging သည့်အခါ hexadecimal ကိုအသုံးပြုရန်သို့မဟုတ် program တစ်ခု engineer reverse လိုပေမည်။
ဥပမာအားဖြင့်များစွာသောဖိုင် Format သူတို့ရဲ့ type ကိုဖျောညှနျးဖို့တိကျတဲ့ hex ဇာတ်ကောင်ရှိသည်။ သငျသညျ program တစ်ခုကို အသုံးပြု. ဖိုင်တစ်ဖိုင်ဖတ်ရှုဖို့ကြိုးစားနေကြပါတယ်နှင့်အချို့သောအကြောင်းပြချက်ကမှန်ကန်စွာ loading မဟုတ်သည်ဆိုပါကဖိုင်ကိုသင်ကမျှော်လင့်နေကြသည်ပုံစံထဲမှာမကြောင်းဖြစ်လိမ့်မယ်။
သငျသညျ program တစ်ခုဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာကိုမြင်ချင်နှငျ့သငျအင်ဂျင်နီယာများ code ကိုပြောင်းပြန်လှန်ထားတဲ့ဆော့ဖ်ဝဲ၏ source code ကိုသို့မဟုတ်အပိုင်းအစရှိသည်မဟုတ်ကြဘူးလျှင်သင်ကြိုးစားဘာတွေဖြစ်နေတယ်ဆိုတာကိုထွက်အလုပ်လုပ်ဖို့ hex အမှိုက်ပုံကိုကြည့်နိုင်ပါတယ်။
Hexadecimal ဆိုတာဘာလဲ
ကွန်ပျူတာများအတွက်စဉ်းစား binary ။ တိုင်းဇာတ်ကောင်အရေအတွက်နှင့်သင်္ကေတတစ်ခု binary သို့မဟုတ်မျိုးစုံ binary တန်ဖိုးများအားဖြင့်ရည်ညွှန်းသည်။
လူ့သတ္တဝါ, သို့သော်, ဒဿမအတွက်စဉ်းစားလေ့ရှိပါတယ်။
ထောင်နှင့်ချီသော | ရာနှင့်ချီ | သောင်းချီ | ယူနစ် |
1 | 0 င် | 1 | 1 |
လူသားများအဖြစ်ကျွန်တော်တို့ရဲ့နိမ့်ဆုံးနံပါတ်များကိုယူနစ်ဟုခေါ်ကြသည်နှင့်ကျွန်ုပ်တို့ပြန် 0 င်ဖို့ယူနစ်ကော်လံကို reset နှင့်သောင်းချီကော်လံ (10) 1 မှ add 10 ရသည့်အခါ 9. မှနံပါတ်များပါ 0 င်ကိုယ်စားပြုသည်။
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 င် | 0 င် | 1 | 0 င် | 0 င် | 0 င် | 1 |
ငါတို့သည် 2 ရဲ့ကော်လံနှင့် 1 ကော်လံအတွက်ပါ 0 င်တစ်ဦး 1 ကိုတင် 1 အတိတ်ရသည့်အခါထို binary များတွင်သာအနိမ့်ဆုံးအရေအတွက်က 0 င်နှင့်အ 1. ကိုကိုယ်စားပြုသည်။ သငျသညျ 4 ကိုယ်စားပြုချင်တဲ့အခါ 4 ကော်လံအတွက် 1 ကိုထားနှင့် 2 ရဲ့နဲ့ 1 ရဲ့ကော်လံကို reset ။
ထို့ကြောင့် 15 ကိုကိုယ်စားပြုရန်သင့်အား 1 ရှစ်, 1 လေး 1 နှစ် 1 ဦးတည်းအတိုကောက်ဖြစ်သော 1111 ရှိလိမ့်မယ်။ (+ 4 8 + 2 + 1 = 15) ။
ကျနော်တို့ binary format နဲ့ဒေတာဖိုင်ကိုကြည့်ရှုအားပေးခဲ့လျှင်ထိုသို့သဘောမျိုးလုပ်လုံးဝကြီးမားခြင်းနှင့်မဖြစ်နိုင်သလောက်ပါလိမ့်မယ်။
ဒွိကနေလာမယ့်ခြေလှမ်းကိုတက်ခြေရင်းအရေအတွက်ကိုအဖြစ် 8 ကိုအသုံးပြုသည်အရာ, octal ဖြစ်ပါတယ်။
24 | 16 | 8 | 1 |
0 င် | 1 | 1 | 0 င် |
ပထမဦးဆုံးကော်လံ 7 မှပါ 0 င်ကနေဝင်တစ်ဦး octal စနစ်, ဒုတိယကော်လံမှ 23 တတိယကော်လံ 16 နဲ့စတုတ္ထကော်လံ 24 31 နှင့်ဒါပေါ်, 8 မှ 15 ဖြစ်ပါတယ်။ ဒွိလူအများစု hexadecimal သုံးစွဲဖို့ပိုနှစ်သက်သည်ထက်ဖတ်ရှုဖို့ယေဘုယျအားဖြင့်ပိုမိုလွယ်ကူနေတုန်း။
hexadecimal ခြေရင်းအရေအတွက်ကိုအဖြစ် 16 ကိုအသုံးပြုသည်။ လူသားများအဖြစ်ကျွန်တော် 9 မှတဆင့် 0 င်အဖြစ်နံပါတ်များကိုစဉ်းစားလို့ရှုပ်ထွေးရရှိသွားတဲ့ရှိရာယခုဤဖြစ်ပါတယ်။
ဒါကြောင့်အဘယျသို့ 10, 11, 12, 13, 14, 15 သုံးထားသလဲ? အဖြေအက္ခရာများဖြစ်ပါတယ်။
- 0 = 0
- 1 = 1
- 2 = 2
- 3 = 3
- 4 = 4
- 5 = 5
- 6 = 6
- 7 = 7
- 8 = 8
- 9 = 9
- 10 = တစ်ဦးက
- 11 = B,
- 12 = ကို C
- 13 = D ကို
- 14 = E ကို
- 15 = F ကို
တန်ဖိုးက 100 သို့ဖြစ်. သင်က 96 အထိဆောင်တတ်၏, ပြီးတော့ 100 ကိုအောင်ယူနစ်ကော်လံအတွက် 4 သည့် 16 တိုက်လေယာဉ်ကော်လံ၏ 6 လိုအပ်ပါလိမ့်မည် 64. ကိုယ်စားပြုနေသည်။
ဖိုင်တစ်ဖိုင်ထဲမှာဇာတ်ကောင်အားလုံးတစ်ဦး hexadecimal တန်ဖိုးအားဖြင့်ခေါ်လိုက်ပါမယ်လိမ့်မည်။ အဘယျသို့သောဤတန်ဖိုးများကိုဆိုလိုဖိုင်ကိုကိုယ်နှိုက်၏ပုံစံပေါ်မူတည်သည်။ ဖိုင်ရဲ့ပုံစံကိုအများအားဖြင့်ဖိုင်ရဲ့အစမှာသိုလှောင်ထားသည့် hexadecimal တန်ဖိုးများအားဖြင့်ခေါ်လိုက်ပါမယ်ဖြစ်ပါတယ်။
၏ sequence ကို၏အသိပညာနှင့်အတူ hexadecimal ဖိုင်တွေရဲ့အစမှာပေါ်လာကြောင်းတန်ဖိုးများကိုသင်ကိုယ်တိုင်ဖိုင်ထဲမှာဖြစ်ပါတယ် format အဘယ်အရာကိုထွက်အလုပ်လုပ်နိုင်ပါတယ်။ တစ်ဦး hex အမှိုက်ပုံထဲမှာဖိုင်တစ်ခုကိုကြည့်ရှုခြင်းသင်ဖိုင်ကိုအခါပြသကြသည်မဟုတ်ကြောင်းဝှက်ထားသောဇာတ်ကောင်ကိုကူညီရှာဖွေနိုင်ပါတယ် ပုံမှန်စာသားကိုအယ်ဒီတာသို့တင်ဆောင်။
Linux ကိုအသုံးပြုခြင်းတစ်ဦးက hex စွတ် Create ရန်ကဘယ်လို
Linux ကိုသုံးပြီး hex အမှိုက်ပုံဖန်တီးရန် hexdump command ကိုသုံးပါ။
ရန် hex အဖြစ်ဖိုင်တစ်ဖိုင်ဖော်ပြရန် terminal ကို (စံ output ကို) ကိုအောက်ပါ command ကို run:
hexdump ဖိုင်အမည်
ဥပမာ
hexdump image.png
ကို default အထွက် (hexadecimal format နဲ့) ကိုလိုင်းအရေအတွက်အားပြသ, ပြီးတော့လိုင်းနှုန်း 4 hexadecimal တန်ဖိုး 8 အစုံပါလိမ့်မယ်။
ဥပမာ:
00000000 5089 474e 0a0d 0a1a 0d00 4849 5244 0000
သင်က default အနေနဲ့ output ကိုပြောင်းလဲပစ်ရန်ကွဲပြားခြားနားသော switches များထောက်ပံ့ပေးနိုင်သည်။ ဥပမာအားများအတွက်အနုတ်ခ switch ကိုသတ်မှတ်ခြင်း 16 သုံးကော်လံ, သုညပြည့် octal format နဲ့ input ကိုအချက်အလက်များ၏ bytes အားဖြင့်နောက်တော်သို့လိုက် offset 8 ဂဏန်းထုတ်လုပ်ပါလိမ့်မယ်။
hexdump -b image.png
အောက်မှာဖေါ်ပြတဲ့အတိုင်းထိုကြောင့်အထက်ဥပမာယခုကိုယ်စားပြုလိမ့်မည်:
00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122
အထက်ပါပုံစံကိုတဦးတည်း-byte octal display ကိုအဖြစ်လူသိများသည်။
ဖိုင်ကိုကြည့်ရှုရန်နောက်ထပ်နည်းလမ်းအနုတ်က c switch ကို အသုံးပြု. တက byte ဇာတ်ကောင် display ကိုဖြစ်ပါတယ်။
hexdump -c image.png
ဒီအထပ်ကိုထေမိပေမယ့်ဒီအချိန်ကွဲကွာတဆယ်ခြောက်အာကာသလိုင်းနှုန်း input ကိုအချက်အလက်များ၏သုံးကော်လံ, အာကာသဖြည့်ဇာတ်ကောင်များကနောက်တော်သို့လိုက်ပြသပေးပါတယ်။
အခြားရွေးချယ်မှုဟာအနုတ်ဃ switch ကို အသုံးပြု. ပြသနိုင်သည့်အတွက်အနုတ်ကို C switch ကိုနှစ်ယောက်-byte ဒဿမ display ကို အသုံးပြု. ပြသနိုင်သည့် Canonical မှ hex + ASCII display ကိုပါဝင်သည်။ အဆိုပါအနုတ်ဏ switch ကို Two-byte octal display ကိုဖော်ပြရန်အသုံးပြုသောနိုင်ပါသည်။ နောက်ဆုံးအနေနဲ့ minux x ကို switch ကို Two-byte hexadecimal display ကိုဖော်ပြရန်အသုံးပြုသောနိုင်ပါသည်။
hexdump -C image.png
hexdump -D image.png
hexdump -O image.png
hexdump -x image.png
အထက်ပါပုံစံများအဘယ်သူအားမျှသင်တို့လိုအပ်ချက်နှင့်ကိုက်ညီလျှင်ပုံစံကိုသတ်မှတ်ပေးရန်အနုတ်အီး switch ကိုသုံးပါ။
သင်တစ်ဦးဒေတာဖိုင်သိလျှင်အလွန်ရှည်လျားသည်နှင့်သင်ရုံသင်က hex အတွက်ဖော်ပြရန်ဖိုင်ဘယ်လောက်သတ်မှတ်ပေးရန် -n switch ကိုသုံးနိုငျက၎င်း၏ type ကိုဆုံးဖြတ်ရန်ပထမဦးဆုံးအနည်းငယ်ဇာတ်ကောင်ကိုတွေ့မြင်ချင်တယ်။
hexdump -n100 image.png
အထက်ပါ command ကိုပထမဦးဆုံးတရာ bytes ဖော်ပြပေးမှာဖြစ်ပါတယ်။
သင်ဖိုင်တစ်ဦးသောအဘို့ကို skip လိုပါကသင့်ထံမှစတင်နိုင်ရန် offset တစ်ခုသတ်မှတ်ထားဖို့အနုတ် s ကို switch ကိုသုံးနိုင်သည်။
hexdump -s10 image.png
သင်တစ်ဦးဖိုင်အမည်ထောက်ပံ့မထားဘူးဆိုရင်စာသားစံ input ကိုမှဖတ်ဖြစ်ပါတယ်။
ရိုးရှင်းစွာအကိုအောက်ပါ command ကိုရိုက်ထည့်ပါ:
hexdump
ထို့နောက်ဆေးလိပ်ဖြတ်ရိုက်ခြင်းအားဖြင့်အဆင့်အတန်း input ကိုနှင့် finish ကိုသို့စာသားကိုရိုက်ထည့်ပါ။ အဆိုပါ hex စံကို output ပြသပါလိမ့်မည်။
အကျဉ်းချုပ်
အဆိုပါ hexdump utility ကိုသိသာထင်ရှားစွာပင်တရားမျှတစွာအစွမ်းထက် tool တစ်ခုဖြစ်သည်နှင့်အသငျသညျကျိန်းသေအပြည့်အဝအင်္ဂါရပ်များအားလုံးနှင့်အတူအိမ်မှာရှိနေတဲ့မှရရန်လက်စွဲစာမျက်နှာကိုဖတ်သင့်ပါတယ်။
သငျသညျကိုလညျး output ကိုဖတ်နေသည့်အခါသင်တို့အဘို့ရှာကြသည်အရာကိုအကောင်းတစ်ဦးနားလည်မှုလိုအပ်ပေသည်။
ရန် လက်စွဲစာမျက်နှာရှုမြင် အောက်ပါ command ကို run:
လူကို hexdump