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

छवि आधारित स्टेग्नोग्राफ़ी अजगर का उपयोग कर?

स्टेग्नोग्राफ़ी परदे के पीछे की जानकारी छिपाने की एक तकनीक है। यह क्रिप्टोग्राफी की तरह नहीं है जो डेटा को एन्क्रिप्ट करने पर केंद्रित है (विभिन्न एल्गोरिदम जैसे 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'

तो हम देखते हैं कि इमेज के पीछे टेक्स्ट को छिपाना कितना आसान है। आप अन्य इनपुट आइटम जैसे वीडियो या जेपीईजी जैसे अन्य प्रारूपों का उपयोग कर सकते हैं और आप समान परिणाम देने के लिए अन्य पुस्तकालयों का उपयोग कर सकते हैं, पायथन के साथ हैप्पी स्टेग्नोग्राफ़ी ।


  1. बेस 64 डेटा एन्कोडिंग पायथन का उपयोग कर रहा है

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

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

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

  1. वेबसाइट अवरोधक पायथन का उपयोग कर

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