स्टेग्नोग्राफ़ी परदे के पीछे की जानकारी छिपाने की एक तकनीक है। यह क्रिप्टोग्राफी की तरह नहीं है जो डेटा को एन्क्रिप्ट करने पर केंद्रित है (विभिन्न एल्गोरिदम जैसे SHA1, MD5 आदि के माध्यम से), स्टेग्नोग्राफ़ी डेटा को छिपाने पर अधिक ध्यान केंद्रित करती है (डेटा एक फ़ाइल, छवि, संदेश या वीडियो हो सकता है) किसी अन्य फ़ाइल, छवि, संदेश या वीडियो के भीतर किसी भी आकर्षण से बचने के लिए।
तो इसमें हम एक साधारण पायथन प्रोग्राम बनाने की कोशिश करेंगे जो छवि के रूप में ध्यान देने योग्य परिवर्तनों के बिना छवि के पीछे की जानकारी छुपाता है। कार्यक्रम के दो मुख्य भाग हैं - पहला एक डिकोडिंग फ़ंक्शन है जो एक छवि फ़ाइल से गुप्त जानकारी निकाल सकता है और दूसरा एक एन्कोडिंग फ़ंक्शन है जो गुप्त संदेशों को छवियों में एन्कोड करेगा।
हम इस उद्देश्य के लिए पायथन पिलो लाइब्रेरी का उपयोग करते हैं (आप ओपनसीवी या अन्य भी कर सकते हैं)। आप इसे pip का उपयोग करके स्थापित कर सकते हैं, बस अपने कमांड प्रॉम्प्ट में pip install पिलो चलाएँ:
$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 >>>
मैंने एन्कोडिंग और डिकोडिंग उद्देश्य के लिए स्टेपिक लाइब्रेरी का उपयोग किया है। आप पाइप का उपयोग करके स्टेपिक लाइब्रेरी स्थापित कर सकते हैं:
>>> #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'
तो हम देखते हैं कि इमेज के पीछे टेक्स्ट को छिपाना कितना आसान है। आप अन्य इनपुट आइटम जैसे वीडियो या जेपीईजी जैसे अन्य प्रारूपों का उपयोग कर सकते हैं और आप समान परिणाम देने के लिए अन्य पुस्तकालयों का उपयोग कर सकते हैं, पायथन के साथ हैप्पी स्टेग्नोग्राफ़ी ।