स्टेग्नोग्राफी दृश्य के पीछे जानकारी छिपाने की एक तकनीक है। यह क्रिप्टोग्राफी की तरह नहीं है जो डेटा एन्क्रिप्ट करने पर केंद्रित है (SHA1, MD5 आदि जैसे विभिन्न एल्गोरिदम के माध्यम से), स्टेग्नोग्राफी डेटा को छिपाने पर अधिक ध्यान केंद्रित करती है (डेटा एक फ़ाइल, छवि, संदेश या वीडियो हो सकता है) किसी अन्य फ़ाइल, छवि, संदेश या वीडियो के भीतर किसी भी आकर्षण से बचने के लिए।
तो इसमें हम एक साधारण पायथन प्रोग्राम बनाने की कोशिश करेंगे जो छवि के पीछे जानकारी छुपाता है बिना छवि के लुक में ध्यान देने योग्य बदलाव के। प्रोग्राम के दो मुख्य भाग हैं - पहला एक डिकोडिंग फंक्शन है जो छवि फ़ाइल से गुप्त जानकारी निकाल सकता है और दूसरा एक एन्कोडिंग फंक्शन है जो छवियों में गुप्त संदेशों को एन्कोड करेगा।
हम इस उद्देश्य के लिए पायथन Pillow लाइब्रेरी का उपयोग करते हैं (आप openCv या अन्य का भी उपयोग कर सकते हैं ☺)। आप इसे pip का उपयोग करके इंस्टॉल कर सकते हैं, बस अपने कमांड प्रॉम्प्ट में pip install pillow चलाएं:
$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)>>> 0b01010101 85 >>> 0b01010110 86
हम इसे कैसे प्राप्त करेंगे:
चरण 1: आवश्यक लाइब्रेरी/पैकेज आयात करें। चरण 2: फ़ाइल या छवि खोलें चरण 3: स्रोत छवि में कुछ टेक्स्ट एन्कोड करें और फिर इसे सहेजें। चरण 4: दोनों छवियों (छिपे डेटा फ़ाइल के साथ और बिना) की जांच करें और देखें कि क्या कोई दृश्य परिवर्तन है। चरण 5: छवि डिकोड करें - छवि से डेटा निकालने के लिए
उपरोक्त चरणों का कार्यान्वयन:
उदाहरण कोड
>>> # आवश्यक लाइब्रेरी आयात करें >>> from PIL import Image >>> import stepic >>>
मैंने एन्कोडिंग और डिकोडिंग उद्देश्य के लिए stepic लाइब्रेरी का उपयोग किया है। आप stepic लाइब्रेरी को pip का उपयोग करके इंस्टॉल कर सकते हैं:

>>> # उस छवि या फ़ाइल को खोलें जिसमें आप अपना डेटा छिपाना चाहते हैं
>>> im = Image.open('TajMahal.png')
>>>
>>> # अपनी छवि फ़ाइल में कुछ टेक्स्ट एन्कोड करें और इसे दूसरी फ़ाइल में सहेजें
>>> im1 = stepic.encode(im, b'Hello Python')
>>> im1.save('TajMahal.png', 'PNG')
>>>
>>> # अब दोनों छवियों की जांच करने का समय है और देखें कि क्या कोई दृश्य परिवर्तन है
>>> im1 = Image.open('TajMahal.png')
>>> im1.show()
छिपे टेक्स्ट वाली छवि:

वास्तविक छवि: >>> im.show() >>>'

>>>
>>> # छवि डिकोड करें ताकि छवि से छिपा डेटा निकाला जा सके
>>> im2 = Image.open('TajMahal.png')
>>> stegoImage = stepic.decode(im2)
>>> stegoImage
'Hello Python'
तो हम देखते हैं कि छवि के पीछे टेक्स्ट छुपाना कितना आसान है। आप अन्य इनपुट आइटम जैसे वीडियो या jpeg जैसे अन्य फॉर्मेट का उपयोग कर सकते हैं और आपको वही परिणाम देने के लिए अन्य लाइब्रेरी का उपयोग कर सकते हैं, पायथन के साथ हैप्पी स्टेग्नोग्राफी ☺।