Base64 থেকে JSON: কুকি ও সেশন ডেটা নিরাপদে ডিকোড করার উপায়
Digital Account Market
· সর্বশেষ হালনাগাদ:
আপনার হাতে অক্ষর আর সংখ্যার একটি লম্বা, দুর্বোধ্য স্ট্রিং আছে, যেটিতে কুকি বা সেশন ডেটা থাকার কথা, আর সেটি সত্যিই পড়ে দেখতে আপনার Base64 থেকে JSON রূপান্তর দরকার। হয়তো কোনো বিক্রেতা, ব্রাউজার এক্সটেনশন বা ইমপোর্ট প্যানেল স্ট্রিংটি দিয়েছে, আর অন্য কোনো টুলে দেওয়ার আগে আপনি এর ফিল্ডগুলো দেখে নিতে চান।
এই গাইডে দেখানো হয়েছে কীভাবে Base64 স্ট্রিং চিনবেন, ফ্রি টুল দিয়ে সেটিকে সাজানো JSON-এ ডিকোড করবেন, সচরাচর যে ত্রুটিগুলো আসে সেগুলো ঠিক করবেন, এবং কোনো প্যানেল Base64 ফরম্যাট চাইলে JSON আবার এনকোড করবেন। ডিকোড করা ডেটা গোপন রাখার উপায়ও আছে, কারণ কুকি ও টোকেনের মান স্পর্শকাতর।
Base64 কী এবং কুকি ও টোকেন কেন এতে মোড়ানো হয়
Base64 যেকোনো ডেটা লেখে মাত্র ৬৪টি নিরাপদ অক্ষর দিয়ে, উদ্ধৃতি চিহ্ন, কোঁকড়া বন্ধনী কিংবা বাংলা অক্ষর থাকলেও। অক্ষরগুলো হলো A থেকে Z, a থেকে z, 0 থেকে 9 এবং + ও / চিহ্ন। যে সিস্টেম কাঁচা যতিচিহ্ন বা লাইন ব্রেক সামলাতে পারে না, সেটিও এই ডেটা বহন করতে পারে, কারণ Base64 সবকিছুকে সাধারণ ও কপি করার উপযোগী টেক্সটে বদলে দেয়।
এ কারণেই বাস্তবে আপনি কুকি base64 স্ট্রিং দেখতে পান। সেশন ডেটা JSON হিসেবে এক্সপোর্ট করা কোনো টুল সেটিকে Base64-এ মুড়ে দিতে পারে, যাতে টেক্সট বক্স, URL প্যারামিটার বা চ্যাট মেসেজের মধ্য দিয়ে গেলেও ভেঙে না যায়, আর ইমপোর্ট প্যানেলও ভেতরে ঢোকানোর সময় একই মোড়ক আশা করতে পারে।
একটি গুরুত্বপূর্ণ কথা: Base64 হলো এনকোডিং, এনক্রিপশন নয়। এতে কোনো পাসওয়ার্ড বা কী নেই, আর স্ট্রিংটি যার হাতে আছে সে-ই এটিকে মূল টেক্সটে ফিরিয়ে আনতে পারে। তাই স্ট্রিংটিকে এমনভাবে সামলান যেন সেটাই আসল ডেটা।
Base64 স্ট্রিং চেনার উপায়
কিছু ডিকোড করার আগে দেখে নিন সেটি সত্যিই Base64 কি না। সাধারণত তিনটি দ্রুত পরীক্ষাতেই বোঝা যায়।
অক্ষরের সেট
সাধারণ Base64 স্ট্রিংয়ে শুধু অক্ষর, অঙ্ক, + ও / থাকে। কোলন, শব্দের মাঝে ফাঁকা জায়গা বা @ চিহ্ন দেখলে সম্ভবত এটি অন্য কিছু। username:password:email:email_password:auth_token-এর মতো ডেলিভারি লাইন কোলন দিয়ে আলাদা করা টেক্সট, Base64 নয়, আর কোনো ডিকোডারই এর থেকে অর্থ বের করতে পারবে না।
প্যাডিং
Base64 চার অক্ষরের গ্রুপে কাজ করে। ডেটা শেষ গ্রুপ পূর্ণ না করলে প্যাডিং হিসেবে একটি বা দুটি সমান চিহ্ন (=) যোগ হয়। = বা == দিয়ে শেষ হওয়া স্ট্রিং জোরালো ইঙ্গিত, তবে দৈর্ঘ্য মিলে গেলে সমান চিহ্ন ছাড়াও স্ট্রিং বৈধ হয়, আর কিছু টুল ইচ্ছে করেই প্যাডিং বাদ দেয়।
শুরু দেখে চেনার সংকেত
JSON অবজেক্ট শুরু হয় একটি কোঁকড়া বন্ধনী ও একটি উদ্ধৃতি চিহ্ন দিয়ে, আর এই জোড়া সব সময় একইভাবে এনকোড হয়। eyJ দিয়ে শুরু হওয়া স্ট্রিং প্রায় নিশ্চিতভাবে JSON অবজেক্ট, W3si সাধারণত অবজেক্টের তালিকা বোঝায়, আর WyJ বোঝায় টেক্সট মানের তালিকা। আপনার স্ট্রিং এভাবে শুরু হলে ডিকোড করলে JSON পাওয়ার কথা।
নিশ্চিত নন? একটি নমুনা ফরম্যাট শনাক্তকরণ টুল-এ পেস্ট করুন। এটি অক্ষরসমষ্টি, প্যাডিং ও দৈর্ঘ্য পরীক্ষা করে জানিয়ে দেয় টেক্সটটি Base64, JSON, নাকি অন্য কিছুর মতো দেখাচ্ছে।
Base64 থেকে JSON: ফ্রি টুল দিয়ে ডিকোড করুন
Base64 থেকে JSON টুল পুরো কাজটি আপনার ব্রাউজারেই করে, কিছুই আপলোড হয় না, তাই স্ট্রিংটি আপনার ডিভাইসেই থাকে।
- ইনপুট বক্সে Base64 স্ট্রিং পেস্ট করুন। সঠিক ফলাফল দেখতে কেমন হয় তা আগে জানতে চাইলে প্রথমে উদাহরণ বোতামটি ব্যবহার করুন।
- ফলাফল সঙ্গে সঙ্গে দেখা যায়। ডিকোড করা টেক্সট বৈধ JSON হলে দুই স্পেসের ইনডেন্টেশনে সাজিয়ে দেখানো হয়, ফলে ভেতরের ফিল্ডগুলো সহজে চোখে পড়ে।
- কাঠামো পড়ে নিন, তারপর কপি বোতামে JSON সঙ্গে নিয়ে যান।
টুলটি ডিকোড করার আগে স্পেস ও লাইন ব্রেক সরিয়ে দেয় এবং বাইটগুলো UTF-8 হিসেবে পড়ে, তাই বাংলা অক্ষর ও অ্যাকসেন্টযুক্ত বর্ণ এলোমেলো চিহ্ন না হয়ে ঠিকঠাক বের হয়। পরীক্ষা করতে eyJ1c2VyIjoiaGVzYXAxIiwidG9rZW4iOiJhYmMxMjMifQ== পেস্ট করুন; আপনি user ফিল্ড ও token ফিল্ডসহ একটি অবজেক্ট পাবেন।
ডিকোড করা টেক্সট পড়া গেলেও JSON না হলে টুলটি ফলাফল ফেলে না দিয়ে সাধারণ টেক্সট হিসেবে দেখায়। শুধু একটি টোকেন থাকলে এমন হওয়া স্বাভাবিক, আর এটিও সফল ডিকোড।
ডিকোড ত্রুটি ঠিক করুন: প্যাডিং, লাইন ব্রেক ও URL-safe ধরন
ডিকোড ব্যর্থ হলে কারণ প্রায় সব সময় এগুলোর কোনো একটি।
প্যাডিং নেই
স্ট্রিং কেটে গেছে অথবা সমান চিহ্নগুলো সরে গেছে। eyJpZCI6MX0= আর eyJpZCI6MTIzfQ== তুলনা করুন: প্রথমটিতে একটি সমান চিহ্ন লাগে, দ্বিতীয়টিতে দুটি। দৈর্ঘ্য চারের গুণিতক না হওয়া পর্যন্ত = যোগ করুন। ব্যতিক্রম হলো সেই স্ট্রিং, যার দৈর্ঘ্যকে চার দিয়ে ভাগ করলে ভাগশেষ থাকে এক: কোনো প্যাডিংই এটি ঠিক করতে পারবে না, কারণ কপি করার সময় অক্ষর হারিয়ে গেছে, আর আপনাকে মূল স্ট্রিংটি নতুন করে কপি করতে হবে।
লাইন ব্রেক ও বাড়তি স্পেস
ইমেইল ক্লায়েন্ট, চ্যাট অ্যাপ ও টেক্সট ফাইল প্রায়ই লম্বা স্ট্রিং কয়েক লাইনে ভেঙে দেয়। এই ভাঙনগুলো ডেটার অংশ নয়। টুলটি এগুলো আপনার জন্য সরিয়ে দেয়, কিন্তু অন্য ডিকোডার না-ও দিতে পারে।
URL-safe ধরন
ওয়েব ঠিকানার জন্য তৈরি স্ট্রিংয়ে লিংকের ভেতরে টিকে থাকতে + বদলে - এবং / বদলে _ বসানো হয়, আর সাধারণ ডিকোডার এই দুই চিহ্ন গ্রহণ করে না। প্রতিটি - চিহ্নকে + দিয়ে এবং প্রতিটি _ চিহ্নকে / দিয়ে বদলে দিন, প্যাডিং ফিরিয়ে আনুন, তারপর আবার ডিকোড করুন।
ভুলে পেস্ট করা অ্যাকাউন্ট লাইন
কোলন দিয়ে আলাদা করা ডেলিভারি ডেটার সারি পেস্ট করে ফেললে টুল জানাবে এটি অ্যাকাউন্ট তালিকার মতো দেখাচ্ছে। এই টেক্সটে দরকার ডিকোডার নয়, কলাম ভাগ করার টুল। প্রয়োজনীয় ফিল্ডগুলো বের করতে ডিলিমিটার দিয়ে ভাগ করার টুল ব্যবহার করুন।
JSON থেকে Base64: যেসব টুল চায় তাদের জন্য আবার এনকোড করুন
কিছু প্যানেল ও ইমপোর্ট টুল কাঁচা JSON-এর বদলে সেশন ডেটা Base64-এ চায়। এই দিকের কাজটি করে JSON থেকে Base64 টুল। আপনার JSON পেস্ট করুন, এক লাইনের কমপ্যাক্ট আউটপুট অথবা ইনডেন্ট করা পাঠযোগ্য আউটপুট বেছে নিন, তারপর ফলাফল কপি করুন। বেশির ভাগ ইমপোর্টের জন্য কমপ্যাক্ট মোডই ভালো ডিফল্ট, কারণ এতে সবচেয়ে ছোট স্ট্রিং পাওয়া যায়।
টুলটি আগে আপনার JSON যাচাই করে, তাই কমা বাদ পড়লে বা কোঁকড়া বন্ধনী বন্ধ না হলে ভাঙা ডেটা এনকোড করার আগেই ধরা পড়ে। এনকোডিং UTF-8 ব্যবহার করে, ফলে যাওয়া-আসা নির্ভরযোগ্য হয়: একটি স্ট্রিং ডিকোড করুন, একটি ফিল্ড বদলান, আবার এনকোড করুন, আর বাকি সব ফিল্ড ঠিক আগের মতোই ফিরে আসবে।
আপনার কুকি যদি Netscape ফরম্যাটের টেক্সট ফাইলে থাকে, তাহলে Netscape কুকি টুল দিয়ে রূপান্তর করুন এবং আমাদের Netscape কুকি JSON-এ রূপান্তরের গাইড অনুসরণ করুন। আর auth_token নিয়ে কাজ করলে দেখুন auth_token দিয়ে Twitter-এ লগইন।
ডিকোড করা ডেটা গোপন রাখুন
ডিকোড করা কুকি ও সেশন ডেটায় এমন টোকেন থাকতে পারে যা অ্যাকাউন্টের চাবির মতো কাজ করে, তাই কয়েকটি অভ্যাস রাখা ভালো।
- নিজের ডিভাইসে কাজ করুন। যে ব্রাউজার-ভিত্তিক টুল আপনার ইনপুট আপলোড করে না, সেটি এমন যেকোনো ওয়েবসাইটের চেয়ে ভালো যা আপনার টেক্সট এমন সার্ভারে পাঠায় যা আপনি দেখতে পারেন না।
- ডিকোড করা মান পাবলিক চ্যাট, টিকিট বা স্ক্রিনশটে পেস্ট করবেন না। সাহায্য চাইলে শুধু ফিল্ডের নাম শেয়ার করুন।
- মূল স্ট্রিং অপরিবর্তিত রাখুন, একটি কপি ডিকোড করুন, আর কাজ শেষে অস্থায়ী ফাইল মুছে দিন।
এ ধরনের সহজ ও পুনরাবৃত্তিযোগ্য রূপান্তরের জন্য সাধারণত লোকাল কনভার্টারই যথেষ্ট। কীভাবে সিদ্ধান্ত নেবেন তা বুঝতে পড়ুন কখন লোকাল ফরম্যাট কনভার্টারই যথেষ্ট। অ্যাকাউন্ট বেছে নিতে প্রস্তুত হলে এজড অ্যাকাউন্ট ক্যাটাগরি দেখুন, আর ডেলিভারি থেকে লগইন পর্যন্ত সবকিছুর জন্য ফ্রি টুলস পেজ ব্যবহার করুন।
সচরাচর জিজ্ঞাসিত প্রশ্ন
কোনো স্ট্রিং Base64 কি না, তা কীভাবে বুঝব?
তিনটি জিনিস দেখুন: এতে শুধু অক্ষর, অঙ্ক, + ও / আছে কি না; দৈর্ঘ্য চার অক্ষরের গ্রুপের সঙ্গে মেলে কি না (প্রয়োজনে = প্যাডিংসহ); এবং JSON অবজেক্ট থাকলে এটি প্রায়ই eyJ দিয়ে শুরু হয়। ফরম্যাট শনাক্তকরণ টুল এই পরীক্ষা স্বয়ংক্রিয়ভাবে করে দেয়।
আমার Base64 ডিকোড করলে পড়া যায় না এমন অক্ষর আসছে কেন?
হয় ডেটাটি আদৌ টেক্সট ছিল না, যেমন ছবি বা কমপ্রেস করা কনটেন্ট, নয়তো ভিন্ন ক্যারেক্টার সেট ব্যবহার হয়েছে। স্ট্রিংটি URL-safe ধরনের হলে এবং আগে রূপান্তর না করলেও অর্থহীন অক্ষর আসে।
শেষে সমান চিহ্নের অর্থ কী?
এটি প্যাডিং। Base64 চার অক্ষরের ব্লকে এনকোড করে, আর ডেটা কম পড়লে একটি বা দুটি সমান চিহ্ন শেষ ব্লক পূর্ণ করে। এগুলোর নিজস্ব কোনো তথ্য নেই।
Base64 কি এক ধরনের এনক্রিপশন?
না। Base64 শুধু ডেটা লেখার ধরন বদলায়, আর যে কেউ কী ছাড়াই তা উল্টে নিতে পারে। পাঠযোগ্য ডেটা যেভাবে সুরক্ষিত রাখতেন, Base64 স্ট্রিংও ঠিক সেভাবে সুরক্ষিত রাখুন।
JSON কীভাবে আবার Base64-এ রূপান্তর করব?
JSON-টি JSON থেকে Base64 টুলে পেস্ট করুন, কমপ্যাক্ট অথবা ইনডেন্ট করা আউটপুট বেছে নিন, তারপর ফলাফল কপি করুন। অবৈধ JSON হলে টুল এনকোড করার আগেই জানিয়ে দেয়।

