§

Options

মোড
Hex গ্রুপিং
0x প্রিফিক্স
কেস
টেক্সট এনকোডিং
§

ইনপুট

§

আউটপুট

বাংলাদেশ ও পশ্চিমবঙ্গের নেটওয়ার্ক ইঞ্জিনিয়ার ও সিকিউরিটি গবেষকরা Wireshark-এ প্যাকেট ক্যাপচার বিশ্লেষণ করতে এবং এমবেডেড ফার্মওয়্যার JTAG ডাম্প পড়তে hex ↔ ASCII রূপান্তর ব্যবহার করেন। ক্রিপ্টোগ্রাফিক উপাদান পর্যালোচনা করার সময় সেশন কী হেক্স স্ট্রিং হিসেবে আসে কিন্তু ভেন্ডর-নির্দিষ্ট ট্যাগ বাইটে ASCII লেবেল লুকানো থাকে। এই কনভার্টার ব্রাউজার ট্যাব না ছেড়েই সেই অনুবাদ সামলায়।

হেক্স এনকোডিং কীভাবে কাজ করে

পেজের প্রতিটি অক্ষর এক বা একাধিক বাইটে সংরক্ষিত। হেক্স এনকোডিং সেই বাইটগুলো বেস ১৬-এ পুনর্লিখন করে, প্রতি বাইটে দুটি অক্ষর, যাতে বিশেষ টুল ছাড়াই বাইট স্ট্রিম পড়া যায়।

  1. টেক্সট বাইটে এনকোড করুন. UTF-8 মোড ইনপুট new TextEncoder().encode(text) দিয়ে চালায়, যা বাইট মানের একটি Uint8Array ফেরত দেয়। Latin-1 মোড charCodeAt(0) & 0xFF দিয়ে প্রতিটি কোড ইউনিটের নিচের আট বিট নেয়।
  2. প্রতিটি বাইট দুটি হেক্স ডিজিটে রেন্ডার করুন. প্রতিটি বাইট byte.toString(16).padStart(2, "0") দিয়ে দুটি হেক্স ডিজিটে ম্যাপ হয়। কেস টগল আউটপুট অক্ষরে বড় হাত (A-F) বা ছোট হাত (a-f) বেছে নেয়।
  3. গ্রুপিং ও প্রিফিক্স প্রয়োগ করুন. গ্রুপিং বাইটের মধ্যে বিভাজক ঢোকায়: একটি স্পেস, একটি ড্যাশ, বা প্রতি চার বাইটে একটি স্পেস। 0x প্রিফিক্স পুরো স্ট্রিংয়ে একবার (None গ্রুপিং) বা প্রতি বাইটে (Space গ্রুপিং) যোগ করা যায়।
  4. বিপরীতে ডিকোড করুন. Hex → Text মোড ইনপুট থেকে প্রতিটি স্পেস, ড্যাশ ও 0x প্রিফিক্স ছাড়ে, অবশিষ্ট অক্ষর /^[0-9a-fA-F]+$/ এর বিপরীতে যাচাই করে, বিজোড়-দৈর্ঘ্য স্ট্রিং প্রত্যাখ্যান করে, এবং পরপর বাইট জোড়া থেকে Uint8Array পুনর্নির্মাণ করে।
  5. দ্রুত ইটারেশনের জন্য লাইভ মোড. লাইভ মোড ডিফল্টে চালু। প্রতিটি কীস্ট্রোক ১৫০ মিলিসেকেন্ড ডিবাউন্সড পুনরায়-রূপান্তর নির্ধারণ করে যাতে কনভার্ট বাটন ক্লিক না করেই পেস্ট, এডিট এবং অন্য প্যানেল আপডেট দেখা যায়।

হেক্স কনভার্টার কেন ব্যবহার করবেন

  • বাইনারি প্রোটোকল ডিবাগিং. Modbus, DNP3 ও CoAP এর মতো ওয়্যার ফরম্যাট নির্দিষ্ট বাইট অফসেটে হেডার প্যাক করে। একটি ক্যাপচার করা ফ্রেম হেক্স হিসেবে পড়লে প্রতিটি ফিল্ড এক নজরে দেখা যায়, এবং একই বাইট ASCII-তে ফ্লিপ করলে বাইনারি ফ্রেমিংয়ের পাশে লুকানো প্লেইনটেক্সট পেলোড সামনে আসে।
  • এমবেডেড ফার্মওয়্যার নিয়ে কাজ. JTAG ও SWD প্রোব মেমরি কন্টেন্ট হেক্স হিসেবে রিপোর্ট করে। মেমরির একটি অঞ্চল ASCII-তে রূপান্তর করলে এমবেডেড স্ট্রিং (ফাইল পাথ, ত্রুটি বার্তা, ভেন্ডর সিগনেচার) খুঁজে পাওয়া যায় যা প্রায়ই ফার্মওয়্যারে কোথায় দেখছেন তা নির্দেশ করে।
  • প্যাকেট ক্যাপচার পড়া. Wireshark ও tcpdump উভয়ই একটি বাইট প্যান শিপ করে যা প্রতিটি প্যাকেট বাম দিকে হেক্স ও ডান দিকে ASCII প্রিন্ট করে। এখানে একটি স্নিপেট রূপান্তর করলে বাগ রিপোর্ট বা চ্যাট লগ থেকে হেক্স ব্লব কপি করে ক্যাপচার টুলে পুনরায় আমদানি না করেই বাইট কী বলছে পড়া যায়।
  • বাইট-লেভেল ডিফ. দুটি বাইনারি ফাইল তুলনা করা প্রায়ই কোন বাইট পরিবর্তিত হয়েছে তা খুঁজে বের করার মধ্যে নেমে আসে। উভয় পাশ সামঞ্জস্যপূর্ণ গ্রুপিং সহ হেক্সে রূপান্তর করলে একটি টেক্সট এডিটরে ডিফ লাইন আপ হয় যেখানে বিল্ট-ইন ডিফ টুল পরিবর্তিত বাইট হাইলাইট করতে পারে।

সাধারণ ব্যবহার

Hex ↔ ASCII রূপান্তর রিভার্স ইঞ্জিনিয়ারিং, নিরাপত্তা ও এমবেডেড কাজ জুড়ে দেখা যায় যখনই একটি বাইট স্ট্রিম শুধু একটি টেক্সট পেলোডের চেয়ে বেশি।

  • রিভার্স ইঞ্জিনিয়ারিং: স্ট্রিংস-রেজিস্ট্যান্ট বাইনারি থেকে হেক্স ডাম্প নিন, প্রিন্টযোগ্য ASCII হিসেবে ডিকোড হওয়া রান বেছে নিন, এবং সেই স্ট্রিং ব্যবহার করে ডিসঅ্যাসেম্বলিতে কোথায় আছেন তা নোঙর করুন।
  • নেটওয়ার্ক ফরেনসিক্স: Wireshark থেকে একটি একক প্যাকেট পেলোড হেক্স হিসেবে কপি করুন, এখানে পেস্ট করুন, এবং পুরো ক্যাপচার এক্সপোর্ট না করেই অ্যাপ্লিকেশন-লেয়ার টেক্সট পড়ুন।
  • ক্রিপ্টো উপাদান পরিচালনা: একটি কী, IV বা HMAC ট্যাগ প্রায়ই হেক্স স্ট্রিং হিসেবে আসে। বাইটে ফিরে ডিকোড করলে দৈর্ঘ্য অ্যালগরিদমের সাথে মেলে কিনা নিশ্চিত হওয়া যায় (AES-128 এর জন্য ১৬ বাইট, AES-256 এর জন্য ৩২)।

একটি কাজের উদাহরণ

Text → Hex, UTF-8, ছোট হাতে, Space-every-byte গ্রুপিং, প্রিফিক্স বন্ধ বেছে নিন। Hi টাইপ করুন: আউটপুট পড়ায় 48 69। প্রিফিক্স চালু করে গ্রুপিং None করলে একই ইনপুট 0x4869 হিসেবে রেন্ডার হয়। ইমোজি 😀 ইনপুট হিসেবে পেস্ট করুন এবং UTF-8 মোড রেন্ডার করে f0 9f 98 80 — একটি কোড পয়েন্টের জন্য চার বাইট। Hex → Text-এ যান এবং 0x48-65-6C 6C 6F পেস্ট করুন: পার্সার প্রিফিক্স, ড্যাশ ও স্পেস ছাড়ে এবং Hello পুনর্নির্মাণ করে।

FAQ

হেক্স এনকোডিং কী?

হেক্স এনকোডিং (বা হেক্সাডেসিমাল এনকোডিং) একটি বাইট স্ট্রিম বেস ১৬-এ লেখে, প্রতি বাইটে দুটি ASCII অক্ষর। প্রতিটি হেক্স ডিজিট চার বিট কভার করে, তাই দুটি ডিজিট একটি আট-বিট বাইট কভার করে। বর্ণমালা ০-৯ তারপর A-F (বা a-f); কেস শুধু উপস্থাপনা পছন্দ এবং ডিকোডার উভয়ই গ্রহণ করে।

আমার ইমোজি হেক্সে ৪ বাইট কেন হয়?

UTF-8 একটি পরিবর্তনশীল-দৈর্ঘ্য এনকোডিং। ASCII অক্ষর (U+0000 থেকে U+007F) এক বাইট নেয়, Latin-1 সাপ্লিমেন্ট দুটি নেয়, বেশিরভাগ অন্যান্য BMP কোড পয়েন্ট তিনটি নেয়, এবং U+FFFF-এর উপরে অক্ষর — বেশিরভাগ ইমোজি সহ — চারটি নেয়। হাসিমুখ 😀 হলো U+1F600 এবং F0 9F 98 80-এ এনকোড হয়।

এটি কি Latin-1 / ISO-8859-1 সমর্থন করে?

হ্যাঁ। টেক্সট এনকোডিং অপশন Latin-1 (ISO-8859-1)-এ পরিবর্তন করুন। এনকোডিং প্রতিটি JavaScript কোড ইউনিটের নিচের আট বিট (charCodeAt(0) & 0xFF) নেয়, যা লিগেসি একক-বাইট ম্যাপিংয়ের সাথে মেলে। পুরানো Windows-1252 বা প্রি-Unicode সিস্টেমের আউটপুট নিয়ে কাজ করার সময় Latin-1 ব্যবহার করুন।

রূপান্তর কি আমার ব্রাউজারে হয়?

হ্যাঁ। কনভার্টার TextEncoder, TextDecoder, এবং একটি ছোট পার্সার একটি একক স্ট্যাটিক পেজ হিসেবে চালায়। কোনো আপলোড নেই, কোনো API কল নেই, এবং আপনি যা পেস্ট করেন তাতে কোনো অ্যানালিটিক্স নেই। এখানে আপনি যে একই হেক্স বাইট দেখছেন তাই একটি Node স্ক্রিপ্ট বা Lambda ফাংশন একই ইনপুটে উৎপন্ন করত।

Hex ↔ ASCII রূপান্তর একটি ছোট কাজ যা বাইনারি প্রোটোকল বা এমবেডেড ফার্মওয়্যার পড়ে এমন যেকেউ দিনে কয়েকবার করেন। একই নেটিভ এনকোডার ব্যবহার করে ব্রাউজার ট্যাবে এটি করলে কাজ দ্রুত হয় এবং বাইট স্ট্রিম আপনার মেশিনেই থাকে।