လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> HexDec ကို Network Packets များတွင် decode လုပ်ရန် HexDec ကိုသုံးပါ

HexDec ကို Network Packets များတွင် decode လုပ်ရန် HexDec ကိုသုံးပါ

gitbox 2025-05-31

Hexdec function ကိုမိတ်ဆက်

PHP ၏ hexdec function သည် hex string parameter ကိုယူပြီးသက်ဆိုင်ရာဒ decimal မကိန်းကိုပြန်လည်ပေးအပ်သည်။ ဥပမာအားဖြင့်:

 $port = hexdec("1F90"); // ပြန်လာ8080

ဤလုပ်ဆောင်ချက်သည် TCP / UDP port နံပါတ်ကဲ့သို့သောနယ်ပယ်ကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည်အချို့သော protocol headers ရှိ Flag-bits ကဲ့သို့သောနယ်ပယ်ကိုခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်အကောင်းဆုံးဖြစ်သည်။


ဥပမာ - Parse Custom protocol header header

ကျွန်ုပ်တို့တွင်အောက်ပါအတိုင်း Hexadecimal ပုံစံတွင် Hexadecimal ပုံစံတွင်ကိုယ်စားပြုသောကွန်ယက် packet တစ်ခုရှိသည်ဆိုပါစို့။

 47 42 01 00 1F 90 00 50

အဓိပ္ပာယ်ဖွင့်ဆိုချက်များမှာအောက်ပါအတိုင်းဖြစ်သည် -

  • byte 0-1: protocol အမှတ်အသား (ASCII ဇာတ်ကောင်)

  • byte 2: ဗားရှင်းနံပါတ်

  • byte 3: bit ကို reserved

  • byte 4-5: source port

  • BYTE 6-7: destination port

ဒီခေါင်းစဉ်သတင်းအချက်အလက်ကိုခွဲခြမ်းစိတ်ဖြာရန် PHP ကိုအသုံးပြုရန်ကျွန်ုပ်တို့မျှော်လင့်ပါသည်။

 $hexString = "474201001F900050";

// ဇာတ်ကောင်နှစ်လုံးအားဖြင့်တ ဦး တည်း byte byte သို့ဖြတ်
$bytes = str_split($hexString, 2);

// protocol အမှတ်အသား(ဇာတ်ကောင်များပြောင်းပါ)
$protocol = chr(hexdec($bytes[0])) . chr(hexdec($bytes[1]));

// ဗားရှင်းနံပါတ်
$version = hexdec($bytes[2]);

// အရင်းအမြစ်ဆိပ်ကမ်း(ဒရယ်4-5,တစ်ခုသို့ပေါင်းစပ်16bits အရေအတွက်)
$sourcePort = hexdec($bytes[4] . $bytes[5]);

// နေရာချထားရေးဆိပ်ကမ်း(ဒရယ်6-7)
$destPort = hexdec($bytes[6] . $bytes[7]);

echo "တည်ဆောက်မှု: $protocol\n";
echo "ထင်မြင်ချက်: $version\n";
echo "အရင်းအမြစ်ဆိပ်ကမ်း: $sourcePort\n";
echo "နေရာချထားရေးဆိပ်ကမ်း: $destPort\n";

output ရလဒ် -

 တည်ဆောက်မှု: GB
ထင်မြင်ချက်: 1
အရင်းအမြစ်ဆိပ်ကမ်း: 8080
နေရာချထားရေးဆိပ်ကမ်း: 80

အမှန်တကယ်ကးဘက်မှလျှောက်ထားခဲ့သည်

ဥပမာအားဖြင့်, Gitbox.net ရှိ Network Prose interface မှ RAW Packet ကိုယူပြီး Hexadecimal Form တွင်ပြန်လာသည်။ အောက်ပါနည်းလမ်းကို အသုံးပြု. ၎င်းကိုသင်ကိုင်တွယ်နိုင်သည်။

 $url = "https://gitbox.net/api/capture?id=123";
$response = file_get_contents($url);
$hexString = bin2hex($response); // 假设ပြန်လာ的是二进制数据
$bytes = str_split($hexString, 2);

// ထို့နောက်အသုံးပြုပါ hexdec Field-by-field ခွဲခြမ်းစိတ်ဖြာ

မှတ်သားရန်အရာ

  • HexDec ၏ parameter သည် 0x နှင့်စတင်ရန်မလိုအပ်ပါ။

  • အကယ်. သင်သည် byte stream နှင့်ဆက်ဆံနေပါက byte အမိန့် (Big Endian သို့မဟုတ် Slendian) သည်ခွဲခြမ်းစိတ်ဖြာရလဒ်များကိုအကျိုးသက်ရောက်နိုင်သည်ကိုသတိပြုပါ။

  • ရှည်လျားသောကိန်းနယ်ပယ်များအတွက် (IPv6 လိပ်စာများရှိကွက်လပ်များကဲ့သို့) တွင် HexDec သည် နံပါတ်များကိုကိုင်တွယ်ရန် GMP သို့မဟုတ် BC သင်္ချာ Extension လိုအပ်သည်။