Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन का उपयोग करके इमेज आधारित स्टेग्नोग्राफी


स्टेग्नोग्राफी दृश्य के पीछे जानकारी छिपाने की एक तकनीक है। यह क्रिप्टोग्राफी की तरह नहीं है जो डेटा एन्क्रिप्ट करने पर केंद्रित है (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 जैसे अन्य फॉर्मेट का उपयोग कर सकते हैं और आपको वही परिणाम देने के लिए अन्य लाइब्रेरी का उपयोग कर सकते हैं, पायथन के साथ हैप्पी स्टेग्नोग्राफी ☺।


  1. पायथन का उपयोग करके Base64 डेटा एन्कोडिंग पायथन का उपयोग करके Base64 डेटा एन्कोडिंग

    base64 मॉड्यूल में फंक्शन बाइनरी डेटा को ASCII के एक सबसेट में अनुवादित करते हैं जो प्लेनटेक्स्ट प्रोटोकॉल का उपयोग करके ट्रांसमिशन के लिए उपयुक्त है। एन्कोडिंग और डिकोडिंग फंक्शन RFC 3548 में विनिर्देशों को लागू करते हैं, जो Base16, Base32, और Base64 एल्गोरिदम को परिभाषित करता है, और डी-फैक्टो मान

  1. पायथन का उपयोग करके छवियों को पढ़ना पायथन का उपयोग करके छवियों को पढ़ना

    ओपनसीवी (OpenCV) का उपयोग करके छवि प्रसंस्करण ओपनसीवी (ओपन सोर्स कंप्यूटर विजन) एक ओपन सोर्स प्रोग्रामिंग लाइब्रेरी है जिसे मूल रूप से मशीन लर्निंग और कंप्यूटर विजन के लिए विकसित किया गया है। यह कंप्यूटर विजन अनुप्रयोगों पर काम करने के लिए सामान्य बुनियादी ढांचा प्रदान करता है और वाणिज्यिक उत्पादों

  1. पायथन का उपयोग करके वेबसाइट ब्लॉकर पायथन का उपयोग करके वेबसाइट ब्लॉकर

    यदि आप एक बड़ी IT कंपनी में काम कर रहे हैं तो आप देख सकते हैं कि उनकी कुछ वेबसाइटें अवरुद्ध हैं, विशेष रूप से सोशल नेटवर्किंग साइट्स जैसे फेसबुक, यूट्यूब, इंस्टाग्राम आदि। कुछ वेबसाइटों को ब्लॉक करने के लिए थर्ड-पार्टी एप्लिकेशन का उपयोग करने के बजाय, हम अपना खुद का कस्टम एप्लिकेशन विकसित कर सकते ह