কম্পিউটার

পাইথন ব্যবহার করে ইমেজ ভিত্তিক স্টেগানোগ্রাফি?


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

সুতরাং এতে আমরা একটি সাধারণ পাইথন প্রোগ্রাম তৈরি করার চেষ্টা করব যা চিত্রের চেহারাতে লক্ষণীয় পরিবর্তন ছাড়াই ছবির পিছনে তথ্য লুকিয়ে রাখে। প্রোগ্রামটির দুটি প্রধান অংশ রয়েছে - প্রথমটি একটি ডিকোডিং ফাংশন যা একটি চিত্র ফাইল থেকে গোপন তথ্য বের করতে পারে এবং দ্বিতীয়টি একটি এনকোডিং ফাংশন যা গোপন বার্তাগুলিকে চিত্রগুলিতে এনকোড করবে৷

আমরা এই উদ্দেশ্যে পাইথন পিলো লাইব্রেরি ব্যবহার করি (আপনি খুলতে পারেন বা অন্যদেরও ☺)। আপনি পিপ ব্যবহার করে এটি ইনস্টল করতে পারেন, শুধু আপনার কমান্ড প্রম্পটে পিপ ইনস্টল পিলো চালান:

$pip install pillow

পিক্সেল এবং রঙের মডেলের মৌলিক ধারণা:

পিক্সেল হল একটি ছবির ক্ষুদ্রতম স্বতন্ত্র উপাদান। সুতরাং, প্রতিটি পিক্সেল মূল চিত্রের একটি অংশ উপস্থাপন করে। এর মানে, পিক্সেল-উচ্চতর বা প্রকৃত ছবির অনেক সঠিক উপস্থাপনা।

একটি কালো এবং সাদা ছবিতে (গ্রেস্কেল নয়), কালো পিক্সেলের মান 1 এবং একটি সাদা পিক্সেলের মান 0। যেখানে রঙিন ছবিতে, পিক্সেল সহ তাদের তিনটি প্রধান রঙের উপাদান রয়েছে (RGB- লাল, সবুজ, নীল), প্রতিটি পিক্সেলের জন্য 0-255 মান। সুতরাং (255, 255, 255) একটি পিক্সেল একটি সাদা এবং (0,0,0) এর অর্থ কালোকে প্রতিনিধিত্ব করবে। সর্বাধিক সংখ্যা হিসাবে একটি 8-বিট বাইনারি সংখ্যা 255 প্রতিনিধিত্ব করতে পারে, আমরা সর্বাধিক সংখ্যা হতে পারি।

বাইনারি-সংখ্যার ভিত্তি 2 হওয়ায় আমরা খুব সহজেই বাইনারি সংখ্যাকে দশমিকে রূপান্তর করতে পারি। ধরুন, আমাদের বাইনারি সংখ্যা হল 01010101, তাহলে এর সমতুল্য দশমিক সংখ্যা (বেস 10) হবে:

26 +24 + 22 + 20 = 64 + 16 + 4 + 1 = 85

আপনি উপরে পরীক্ষা করতে পারেন – আপনার পাইথন টার্মিনালেও বাইনারি থেকে দশমিক রূপান্তর।

>>> print(0b01010101)
85
>>> type(0b01010101)
<class 'int'>
>>> 0b01010101
85
>>> 0b01010110
86

আমরা কিভাবে এটি অর্জন করতে যাচ্ছি:

Step 1: Import the required library/package.
Step 2: Open the file or Image
Step 3: Encode some text into the source Image & then save it.
Step 4: Check both the images (with and without hidden data file) and see if there is any visible changes.
Step 5: Decode the image- to extract data from the image

উপরের ধাপের বাস্তবায়ন:

উদাহরণ কোড

>>> #Import the required library
>>> from PIL import Image
>>> import stepic
>>>

আমি এনকোডিং এবং ডিকোডিং উদ্দেশ্যে স্টেপিক লাইব্রেরি ব্যবহার করেছি। আপনি pip:

ব্যবহার করে স্টেপিক লাইব্রেরি ইনস্টল করতে পারেন

পাইথন ব্যবহার করে ইমেজ ভিত্তিক স্টেগানোগ্রাফি?

>>> #Open Image or file in which you want to hide your data
>>> im = Image.open('TajMahal.png')
>>>
>>> #Encode some text into your Image file and save it in another file
>>> im1 = stepic.encode(im, b'Hello Python')
>>> im1.save('TajMahal.png', 'PNG')
>>>
>>> #Now is the time to check both images and see if there is any visible changes
>>> im1 = Image.open('TajMahal.png')
>>> im1.show()

লুকানো পাঠ্য সহ চিত্র:

পাইথন ব্যবহার করে ইমেজ ভিত্তিক স্টেগানোগ্রাফি?

Actual image:
>>> im.show()
>>>'

পাইথন ব্যবহার করে ইমেজ ভিত্তিক স্টেগানোগ্রাফি?

>>>
>>> #Decode the image so as to extract the hidden data from the image
>>> im2 = Image.open('TajMahal.png')
>>> stegoImage = stepic.decode(im2)
>>> stegoImage
'Hello Python'

তাই আমরা দেখতে পাচ্ছি যে ছবির পিছনে টেক্সট লুকানো কতটা সহজ। আপনি অন্যান্য ইনপুট আইটেমগুলি যেমন ভিডিও বা অন্যান্য ফরম্যাট যেমন jpeg ব্যবহার করতে পারেন এবং একই ফলাফল দেওয়ার জন্য আপনি অন্যান্য লাইব্রেরি ব্যবহার করতে পারেন, পাইথনের সাথে শুভ স্টেগানোগ্রাফি ☺৷


  1. Python ব্যবহার করে Convolutions?

  2. পাইথন ব্যবহার করে বেস64 ডেটা এনকোডিং

  3. পাইথন ব্যবহার করে ছবি পড়ছেন?

  4. Python ব্যবহার করে ওয়েবসাইট ব্লকার