စာသား၏တစ်ဦးကဖိုင်မှတ်တမ်းဒါမှမဟုတ် String တစ် Hexdump Create ရန်ကဘယ်လို

နိဒါန်း

တစ်ဦးက 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 သုံးထားသလဲ? အဖြေအက္ခရာများဖြစ်ပါတယ်။

တန်ဖိုးက 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