Binary, Hex, and Data Units Explained
ศัพท์เฉพาะด้านการใช้งานเกี่ยวกับระบบเลขฐาน 2 ฐาน 16 และการใช้หน่วยข้อมูลที่ใช้ในการเขียนโปรแกรม การสื่อสารเครือข่าย และการวิเคราะห์อาชญากรรมดิจิทัล
ทุกไบต์ที่คุณตรวจสอบในตัวแก้ไข hex ทุกซับเน็ตมาสก์ที่คุณคำนวณ และทุกขนาดไฟล์ที่เครื่องมือรายงาน ล้วนขึ้นอยู่กับชุดระบบตัวเลขและการใช้หน่วยที่เล็กน้อย หากคุณทำผิด คุณจะประเมินขนาด buffer ผิด อ่าน memory dump ผิด หรือถกเถียงกับเพื่อนร่วมงานว่า 1 KB เท่ากับ 1000 หรือ 1024 ไบต์
Binary: ระบบฐานที่คอมพิวเตอร์พูดจริง ๆ
Binary คือฐาน 2 — มีแค่ 0 และ 1 เท่านั้น ตัวเลข binary ตัวเดียวคือ bit ถ้ากลุ่ม 8 bits เข้าด้วยกัน คุณจะได้ byte ซึ่งสามารถแทนค่าที่แตกต่างกัน 256 ค่า (0 ถึง 255 สำหรับจำนวนไม่มีเครื่องหมาย หรือ -128 ถึง 127 สำหรับ signed two's complement)
เมื่อคุณเห็น 01001000 นั่นคือ 72 ในระบบทศนิยม ซึ่งเป็นรหัส ASCII สำหรับ 'H' การแปลงด้วยมือเป็นเพียงการบวกกำลัง 2 จาก bit ขวาสุด: 2^6 + 2^3 = 64 + 8 = 72 เครื่องมือเช่น python3 -c "print(bin(72))" หรือ xxd บนไฟล์จะทำสิ่งนี้ได้ทันที แต่การเข้าใจคณิตศาสตร์มีความสำคัญเมื่อคุณกำลังวิเคราะห์ย้อนกลับ bitmask หรือคิดค่า flag ในส่วนหัว TCP
Hexadecimal: ตัวย่อของ binary
Hex คือฐาน 16 โดยใช้ 0-9 และ A-F มันมีอยู่เพราะ binary อ่านยากจนมาก และทศนิยมไม่ตรงกับขอบเขตไบต์อย่างเรียบร้อย ตัวเลข hex ตัวเดียวแทนค่า 4 bits ได้พอดี ดังนั้นตัวเลข hex สองตัวแทนไบต์เต็มหนึ่งตัว — 0x00 ถึง 0xFF ครอบคลุมค่าไบต์ทั้ง 256 ค่าโดยไม่เสียพื้นที่
นี่คือเหตุผลว่าทำไม hex dumps จึงเป็นค่าเริ่มต้นในเครื่องมือเช่น xxd hexdump -C หรืออะเดสแอสเซมเบลอร์มุมมอง memory เมื่อคุณเห็น 0x4D 0x5A ที่จุดเริ่มต้นของไฟล์ นั่นคือส่วนหัว MZ ที่ระบุไฟล์ executable PE ของ Windows ที่อยู่ memory โค้ดสี (#FF5733) ที่อยู่ MAC และที่อยู่ IPv6 ล้วนถูกเขียนแบบ hex โดยธรรมเนียม เพราะมันจับคู่กับโครงสร้างไบต์และ nibble ของระบบได้เรียบร้อย
การแปลง hex เป็น decimal: 0x4D = (4 × 16) + 13 = 77 ใน Python int('4D', 16) นำคุณไปได้โดยไม่ต้องคำนวณด้วยมือ และ hex(77) ก็ไปทางอื่น
ที่ที่ binary decimal และ hex มารวมกันในการปฏิบัติจริง
ที่อยู่ IP เป็นตัวอย่างที่ดีของทั้งสามอย่างชนกัน ที่อยู่ IPv4 เช่น 192.168.1.1 เป็นไบต์สี่ตัวจริง ๆ: 11000000.10101000.00000001.00000001 ใน binary หรือ C0.A8.01.01 ใน hex คณิตศาสตร์ subnetting — การคิดออกว่าที่อยู่สองตัวอยู่บนเครือข่ายเดียวกันหรือไม่ — เป็นโดยพื้นฐานแล้ว binary AND operations ต่อ subnet mask แม้ว่าเราเขียนทุกอย่างเป็น dotted decimal เพื่อความสะดวก
ในการวิเคราะห์อาชญากรรมดิจิทัลและการวิเคราะห์ malware คุณกำลังแปลระหว่างการแทนค่าเหล่านี้อยู่ตลอด disassembler แสดง opcode ใน hex แต่ CPU รันเลขฐานสองดิบ และค่า register มักถูกตีความเป็น decimal offsets หรือสตริง ASCII ขึ้นอยู่กับบริบท การรู้ว่า 0x41 คือทั้งตัวเลข 65 และอักขระ ASCII 'A' เป็นการจดจำรูปแบบประเภทที่เร่งความเร็วในการวิเคราะห์ด้วยมือได้มาก
หน่วยข้อมูล: ปัญหา 1000 เทียบ 1024
นี่คือที่ที่ผู้คนเสียหายจริง ผู้ผลิตที่เก็บข้อมูล filesystems และระบบปฏิบัติการไม่ได้ตกลงกันเสมอเกี่ยวกับความหมายของ
เขียนด้วยความช่วยเหลือของ AI ตรวจสอบและเผยแพร่โดย Michal Pilch (CISSP), Korra Studio
นี่คือบันทึกหนึ่งจากฐานความรู้ของ Korra Studio — แพลตฟอร์มจับคู่หัวข้อแต่ละหัวข้อกับการฝึกสอนแบบ 1-to-1
เริ่มใช้งานฟรีarrow_forward