พจนานุกรม

Raw Header ของไฟล์คืออะไร?

ส่วนหัวดิบจะแสดงไบต์แรกของไฟล์เป็นตัวเลขฐานสิบหก ไบต์เหล่านี้เผยให้เห็นประเภทไฟล์ที่แท้จริง และคุณสามารถอ่านไบต์จำนวนมากเหล่านี้เป็นข้อความได้

raw-header

Raw header คือส่วนแรกของไฟล์ที่แสดงทีละไบต์ แทนที่จะแสดงเป็นช่องข้อมูลเมทาดาทาที่มีชื่อกำกับ รูปแบบไฟล์จำนวนมากเริ่มต้นด้วยรูปแบบของไบต์ที่ตายตัว ซึ่งมักเรียกว่า signature หรือ magic number โปรแกรมจะอ่านรูปแบบนี้เพื่อดูว่าไฟล์นั้นเป็นชนิดใด

ในรายงานเมทาดาทา ช่อง Raw Header จะแสดงไบต์เหล่านี้เป็นตัวเลขฐานสิบหก ตัวอักษร 2 ตัวเช่น 89 หรือ FF แทน 1 ไบต์

อีเมลก็มีส่วนหัวอยู่ด้านบนเช่นกัน ซึ่งมีช่องต่างๆ เช่น From, To และ Subject บทความนี้อธิบายส่วนหัวของไฟล์

ลักษณะของค่านั้นเป็นอย่างไร

เลขฐานสิบหก หรือฐาน 16 จะแทน 1 ไบต์ด้วยอักขระ 2 ตัวจากตัวเลข 0 ถึง 9 และตัวอักษร A ถึง F ดังนั้น 1 ไบต์จึงมีค่าได้ตั้งแต่ 00 ถึง FF

ในการเข้ารหัสอักขระแบบ ASCII ค่าตั้งแต่ 21 ถึง 7E แทนตัวอักษร ตัวเลข และเครื่องหมายวรรคตอน และ 20 คือช่องว่าง ค่าต่ำกว่า 20 คือโค้ดควบคุม และ 00 คืออักขระที่เป็นศูนย์ทั้งหมดเรียกว่า NUL

วิธีอ่าน raw header เป็นข้อความ

ในการแปลง raw header เป็นข้อความ ให้ค้นหาแต่ละไบต์ในตาราง ASCII มีเพียงไบต์ตั้งแต่ 20 ถึง 7E เท่านั้นที่แทนอักขระ ASCII ที่มองเห็นได้หรือช่องว่าง ไบต์อื่นจะไม่แทนตัวอักขระ ดังนั้นคุณมักจะอ่านได้เพียงบางส่วนของ header

  • 25 50 44 46 2D อ่านได้เป็นสัญลักษณ์เปอร์เซ็นต์ ตัวอักษร PDF และเครื่องหมายยัติภังค์
  • 89 50 4E 47 มีตัวอักษร PNG อยู่ในไบต์ที่ 2 ถึง 4

ค่าทั่วไป

รูปแบบที่ใช้บ่อยจะเริ่มต้นด้วย signature เหล่านี้:

  • ภาพ PNG: 89 50 4E 47 0D 0A 1A 0A
  • ภาพ JPEG: FF D8 FF โดย FF D8 เป็นจุดเริ่มต้นของภาพ
  • ภาพ GIF: 47 49 46 38 จากนั้นเป็น 39 61 หรือ 37 61 (GIF89a หรือ GIF87a)
  • เอกสาร PDF: 25 50 44 46 2D ตามด้วยเวอร์ชัน เช่น 1.7
  • ภาพ TIFF แบบ little-endian: 49 49 2A 00 (II และตามด้วยเลข 42)
  • ภาพ TIFF แบบ big-endian: 4D 4D 00 2A (MM และตามด้วยเลข 42)
  • ไฟล์ ZIP และไฟล์ Office ที่ใช้ ZIP เป็นพื้นฐาน เช่น DOCX: 50 4B 03 04 (PK)
  • ไฟล์เสียง MP3 ที่มีแท็ก ID3v2: 49 44 33 (ID3)
  • ไฟล์เสียง WAV: 52 49 46 46 (RIFF) ตามด้วยไบต์ 4 ไบต์ที่เปลี่ยนแปลงได้ จากนั้นเป็น 57 41 56 45 (WAVE)
  • วิดีโอ MP4: ขนาด 4 ไบต์ ตามด้วย 66 74 79 70 (ftyp)

ในไฟล์ TIFF 2 ไบต์แรกยังใช้กำหนดลำดับไบต์ของตัวเลขในไฟล์ด้วย ในไฟล์ PDF อักขระหลังจาก signature จะบอกเวอร์ชัน PDF แต่รายการที่อยู่ถัดไปในไฟล์อาจเขียนทับข้อมูลนี้ได้

ไฟล์ใดที่มีรายการนี้อยู่

ทุกไฟล์มี raw header แต่ไม่ใช่ทุกรูปแบบที่จะมี signature ไฟล์ข้อความล้วนจะเริ่มต้นด้วยข้อความของไฟล์ทันที โปรแกรมจะจดจำไฟล์เหล่านี้ได้เพราะไบต์แรกๆ มีแต่อักขระข้อความเท่านั้น

ทำไมมันจึงสำคัญ

นามสกุลไฟล์เป็นเพียงส่วนหนึ่งของชื่อ และใครก็เปลี่ยนได้ ส่วนหัวสามารถบอกชนิดไฟล์จริงและMIME type ได้แม้นามสกุลไฟล์จะไม่ถูกต้อง

เว็บเซิร์ฟเวอร์อาจไม่ส่ง MIME type มาเลย หรือเบราว์เซอร์อาจคิดว่า MIME type ที่ได้รับมาไม่ถูกต้อง จากนั้นเบราว์เซอร์อาจเปรียบเทียบไบต์แรกๆ กับตารางรูปแบบที่รู้จัก คำสั่ง file บน Unix จะค้นหา magic number ใกล้จุดเริ่มต้นของไฟล์

ส่วนหัวช่วยให้คุณตรวจพบปัญหาได้เช่นกัน ถ้าไฟล์ชื่อ photo.png ไม่ได้เริ่มด้วย 89 50 4E 47 แสดงว่าไม่ได้เป็นไปตามรูปแบบ PNG ส่วนต้นของไฟล์อาจเสียหาย หรือไฟล์อาจเป็นชนิดอื่นที่มีนามสกุลไม่ตรง

ส่วนหัวที่ประกอบด้วยไบต์ 00 เท่านั้นจะไม่ตรงกับ signature ที่ใช้กันทั่วไป แต่ไฟล์ MP4 สามารถเริ่มต้นด้วย 00 ได้ เพราะขนาดที่มีค่าต่ำใน 4 ไบต์แรกจะเริ่มด้วยศูนย์ เมื่อไม่มีรูปแบบใดตรงกันและไบต์เหล่านั้นไม่ใช่ข้อความ เบราว์เซอร์จะมองไฟล์นั้นเป็น application/octet-stream

คีย์เมตา