অভিধান

ফাইলের Raw Header বা কাঁচা হেডার কী?

Raw header একটি ফাইলের প্রথম বাইটগুলোকে ষোড়শিক সংখ্যা হিসেবে দেখায়। এই বাইটগুলোই আসল ফাইলের ধরন প্রকাশ করে, এবং এদের অনেকগুলো আপনি লেখা হিসেবে পড়তে পারেন।

raw-header

Raw header হল একটি ফাইলের প্রথম অংশ, যেটি নামযুক্ত মেটাডেটা ফিল্ডের বদলে প্রতিটি বাইট আলাদা করে দেখানো হয়। অনেক ফাইল ফরম্যাট নির্দিষ্ট একটি বাইট প্যাটার্ন দিয়ে শুরু হয়, যেটিকে প্রায়ই signature বা magic number বলা হয়। প্রোগ্রামগুলি সেই প্যাটার্ন পড়ে বোঝে এটি কী ধরনের ফাইল।

একটি মেটাডেটা রিপোর্টে, Raw Header ফিল্ডে এই বাইটগুলোকে হেক্সাডেসিমাল সংখ্যার আকারে দেখানো হয়। প্রতিটি অক্ষর জোড়া, যেমন 89 বা FF, ১টি বাইট বোঝায়।

একটি ইমেইলেও উপরে একটি হেডার অংশ থাকে, যেখানে From, To এবং Subject এর মতো ফিল্ড থাকে। এই প্রবন্ধে ফাইলের হেডার নিয়ে আলোচনা করা হয়েছে।

মানটি দেখতে কেমন

Hexadecimal বা base 16 এ প্রতিটি বাইটকে ২টি অক্ষরে লেখা হয়, যা 0 থেকে 9 পর্যন্ত সংখ্যা এবং A থেকে F পর্যন্ত অক্ষর ব্যবহার করে। তাই একটি বাইটের মান 00 থেকে FF পর্যন্ত যেকোনো কিছু হতে পারে।

ASCII character code এ, 21 থেকে 7E মানগুলো বর্ণ, সংখ্যা এবং যতিচিহ্ন বোঝায়, আর 20 একটি স্পেস। 20 এর নিচের মানগুলো control code, এবং 00 হল সব-বিট-শূন্য এমন একটি অক্ষর, যার নাম NUL।

র’ হেডারকে লেখা হিসেবে কীভাবে পড়বেন

Raw header কে টেক্সটে রূপান্তর করতে, প্রতিটি বাইটের মান ASCII টেবিলে খুঁজে দেখুন। কেবল 20 থেকে 7E পর্যন্ত বাইট মানই দৃশ্যমান ASCII অক্ষর বা স্পেস বোঝায়। অন্য বাইটগুলো বোঝায় না, তাই সাধারণত আপনি হেডারের কেবল একটি অংশ পড়তে পারবেন।

  • 25 50 44 46 2D মানে একটি percent চিহ্ন, এরপর PDF অক্ষরগুলো এবং একটি হাইফেন।
  • 89 50 4E 47 এর ২ থেকে ৪ নম্বর বাইটে PNG অক্ষরগুলো থাকে।

প্রচলিত মান

সাধারণ কিছু ফরম্যাট এই signature দিয়ে শুরু হয়:

  • PNG image: 89 50 4E 47 0D 0A 1A 0A
  • JPEG image: FF D8 FF, যেখানে FF D8 দিয়ে ছবির শুরু বোঝানো হয়
  • GIF image: 47 49 46 38, এরপর 39 61 বা 37 61 (GIF89a বা GIF87a)
  • PDF document: 25 50 44 46 2D, এরপর ভার্সন, যেমন 1.7
  • TIFF image, little-endian: 49 49 2A 00 (II, এরপর সংখ্যা 42)
  • TIFF image, big-endian: 4D 4D 00 2A (MM, এরপর সংখ্যা 42)
  • ZIP archive, এবং ZIP-ভিত্তিক Office ফাইল যেমন DOCX: 50 4B 03 04 (PK)
  • ID3v2 ট্যাগসহ MP3 audio: 49 44 33 (ID3)
  • WAV audio: 52 49 46 46 (RIFF), এরপর ভিন্ন হতে পারে এমন ৪টি বাইট, তারপর 57 41 56 45 (WAVE)
  • MP4 video: একটি ৪-বাইটের সাইজ, এরপর 66 74 79 70 (ftyp)

একটি TIFF ফাইলে, প্রথম ২টি বাইট ফাইলের সংখ্যাগুলোর জন্য byte order ঠিক করে। একটি PDF ফাইলে, signature এর পরের অক্ষরগুলো PDF version দেয়, তবে ফাইলের পরে থাকা একটি এন্ট্রি সেটিকে ওভাররাইড করতে পারে।

কোন ফাইলগুলো এটিকে বহন করে

প্রতিটি ফাইলেরই একটি raw header থাকে, তবে সব ফরম্যাটে signature থাকে না। সাধারণ টেক্সট ফাইল সরাসরি টেক্সট দিয়েই শুরু হয়। প্রোগ্রামগুলো এগুলোকে চিনতে পারে কারণ প্রথম দিকের বাইটগুলো কেবল টেক্সট অক্ষর থাকে।

এটি কেন গুরুত্বপূর্ণ

ফাইল নামের extension কেবল নামের একটি অংশ, এবং যে কেউ এটি বদলে দিতে পারে। header আসল file type এবং MIME type প্রকাশ করতে পারে, এমনকি extension ভুল হলেও।

একটি ওয়েব সার্ভার MIME type না-ও পাঠাতে পারে, অথবা ব্রাউজার পেতে থাকা টাইপটিকে ভুল মনে করতে পারে। তখন ব্রাউজার প্রথম কয়েকটি বাইটকে পরিচিত pattern এর একটি টেবিলের সাথে মিলিয়ে দেখে। Unix এর file কমান্ড ফাইলের শুরু অংশে একটি magic number খুঁজে দেখে।

একটি header আপনাকে সমস্যাও শনাক্ত করতে সাহায্য করে। যদি photo.png নামের একটি ফাইল 89 50 4E 47 দিয়ে শুরু না হয়, তবে এটি PNG format অনুসরণ করে না। ফাইলের শুরু অংশ ক্ষতিগ্রস্ত হতে পারে, অথবা ফাইলটি অন্য ধরনের হলেও extensionটি ভুল হতে পারে।

শুধু 00 বাইট দিয়ে বানানো একটি header কোনো প্রচলিত signature এর সাথে মেলে না। তবে একটি MP4 ফাইল 00 দিয়ে শুরু হতে পারে, কারণ প্রথম ৪টি বাইটে খুব ছোট সাইজ থাকলে সেটি শূন্য দিয়ে শুরু হয়। যখন কিছুই মেলে না এবং বাইটগুলো টেক্সট নয়, তখন ব্রাউজার ফাইলটিকে application/octet-stream হিসেবে ধরে।

মেটা কী