কম্পিউটার টিউটোরিয়াল

পাইথনে ইমেজ-ভিত্তিক Стеগানোগ্রাফি (Steganography)

স্টেগানোগ্রাফি হলো তথ্য লুকিয়ে রাখার একটি কৌশল। এটি ক্রিপ্টোগ্রাফির মতো নয় যা ডেটা এনক্রিপ্ট করে (SHA1, MD5 ইত্যাদি অ্যালগরিদম দিয়ে), বরং স্টেগানোগ্রাফি ডেটা (ফাইল, ইমেজ, মেসেজ বা ভিডিও) অন্য ফাইল, ইমেজ, মেসেজ বা ভিডিওর ভিতরে লুকিয়ে রাখে যাতে কাউকে সন্দেহ না হয়।

এখানে আমরা একটি সিম্পল পাইথন প্রোগ্রাম তৈরি করব যা ইমেজের ভিতরে তথ্য লুকিয়ে রাখবে, যেখানে ইমেজের লুক দিয়ে কোনো পরিবর্তন বোঝা যাবে না। প্রোগ্রামের দুটি প্রধান অংশ: ডিকোডিং ফাংশন (ইমেজ থেকে গোপন তথ্য বের করা) এবং এনকোডিং ফাংশন (গোপন মেসেজ ইমেজে ঢুকানো)।

এই কাজে Python Pillow লাইব্রেরি ব্যবহার করা হয়েছে (OpenCV বা অন্যদিও ব্যবহার করা যায়)। ইন্সটল করতে:

$pip install pillow

পিক্সেল ও রঙ মডেলের বেসিক ধারণা

পিক্সেল হলো ইমেজের সবচেয়ে ছোট উপাদান। প্রতিটি পিক্সেল মূল ছবির একটি অংশ প্রতিনিধিত্ব করে। যত বেশি পিক্সেল, তত নির্ভুল ছবি।

ব্ল্যাক অ্যান্ড হোয়াইট ইমেজে (গ্রে-স্কেল নয়), ব্ল্যাক পিক্সেলের মান ১ এবং হোয়াইট পিক্সেলের মান ০। রঙিন ইমেজে তিনটি প্রধান রঙ কম্পোনেন্ট থাকে (RGB—লাল, সবুজ, নীল), প্রতিটি পিক্সেলের মান ০-২৫৫। তাই (২৫৫, ২৫৫, ২৫৫) মানে হোয়াইট এবং (০,০,০) মানে ব্ল্যাক। ৮-বিট বাইনারি নম্বরের সর্বোচ্চ মান ২৫৫ হয়।

বাইনারি নম্বর ডেসিমেলে রূপান্তর সহজ। যেমন, বাইনারি ০১০১০১০১ হলে ডেসিমেল হবে:


2^6 + 2^4 + 2^2 + 2^0 = 64 + 16 + 4 + 1 = 85

পাইথন টার্মিনালে টেস্ট করুন:


>>> print(0b01010101)
85
>>> type(0b01010101)

>>> 0b01010101
85
>>> 0b01010110
86

পদ্ধতি


Step 1: প্রয়োজনীয় লাইব্রেরি ইম্পোর্ট
Step 2: ফাইল বা ইমেজ খুলুন
Step 3: সোর্স ইমেজে টেক্সট এনকোড করুন এবং সংরক্ষণ করুন
Step 4: দুটি ইমেজ (গোপন ডেটা সহ ও ছাড়া) চেক করুন কোনো দৃশ্যমান পরিবর্তন আছে কিনা
Step 5: ইমেজ ডিকোড করুন—গোপন ডেটা বের করুন

বাস্তবায়ন


>>> # প্রয়োজনীয় লাইব্রেরি
>>> from PIL import Image
>>> import stepic
>>>
>>> # যে ইমেজে ডেটা লুকাবেন তা খুলুন
>>> im = Image.open('TajMahal.png')
>>>
>>> # ইমেজে টেক্সট এনকোড করুন এবং অন্য ফাইলে সংরক্ষণ
>>> im1 = stepic.encode(im, b'Hello Python')
>>> im1.save('TajMahal.png', 'PNG')
>>>
>>> # দুটি ইমেজ চেক করুন দৃশ্যমান পরিবর্তন আছে কিনা
>>> im1 = Image.open('TajMahal.png')
>>> im1.show()

গোপন টেক্সটযুক্ত ইমেজ:

পাইথনে ইমেজ-ভিত্তিক Стеগানোগ্রাফি (Steganography)


আসلی ইমেজ:
>>> im.show()

পাইথনে ইমেজ-ভিত্তিক Стеগানোগ্রাফি (Steganography)


>>> # ইমেজ ডিকোড করুন গোপন ডেটা বের করতে
>>> im2 = Image.open('TajMahal.png')
>>> stegoImage = stepic.decode(im2)
>>> stegoImage
'Hello Python'

দেখা গেলো ইমেজের পিছনে টেক্সট লুকিয়ে রাখা কত সহজ। আপনি ভিডিও বা JPEG ফরম্যাটও ব্যবহার করতে পারেন এবং অন্যান্য লাইব্রেরি দিয়ে একই ফলাফল পেতে পারেন। Happy Steganography with Python ☺।

  1. পাইথনে কনভোলিউশন (Convolutions) ব্যবহার

  2. পাইথনে Base64 ডেটা এনকোডিং (base64 মডিউল)

  3. পাইথনে ছবি পড়া (OpenCV এবং PIL ব্যবহার করে)

  4. পাইথন দিয়ে ওয়েবসাইট ব্লকার তৈরি করা