
Least Significant Bit का उपयोग करके फ़ाइलों को छवियों में स्टेग्नोग्राफी करने का पायथन प्रोग्राम।
एक Python प्रोग्राम जो स्टेगोनोग्राफिकल विधियों पर आधारित है, ताकि न्यूनतम सार्थक बिट तकनीक का उपयोग करके चित्रों में फ़ाइलों को छिपाया जा सके।
मैंने सबसे बुनियादी विधि का उपयोग किया है जो कि न्यूनतम सार्थक बिट है। एक रंग पिक्सेल लाल, हरे और नीले रंग से बना होता है, जो एक बाइट पर एन्कोडेड होता है। विचार यह है कि प्रत्येक पिक्सेल के RGB घटक के पहले बिट में जानकारी संग्रहीत की जाए। सबसे खराब स्थिति में, दशमलव मान एक से भिन्न होता है, जो मानव आंख को दिखाई नहीं देता। व्यवहार में, यदि आपके पास सभी डेटा को प्रत्येक पिक्सेल के पहले बिट में संग्रहीत करने के लिए स्थान नहीं है, तो आपको दूसरे बिट का उपयोग शुरू करना चाहिए, और इसी प्रकार आगे। ध्यान रखें कि आप जितना अधिक डेटा एक चित्र में संग्रहीत करते हैं, उतना ही इसका पता लगाया जा सकता है।
LSBSteg मॉड्यूल छवियों में डेटा छिपाने के लिए OpenCV पर आधारित है। यह प्रत्येक पिक्सेल के पहले बिट और एक छवि के हर रंग का उपयोग करता है। कोड समझने में काफी सरल है; यदि सभी पहले बिट का उपयोग हो चुका है, तो मॉड्यूल दूसरे बिट का उपयोग करना शुरू कर देता है, इसलिए डेटा जितना बड़ा होगा, छवि उतनी ही अधिक बदली जाती है। प्रोग्राम सभी डेटा को छिपा सकता है यदि छवि में पर्याप्त स्थान हो। मुख्य कार्य हैं:
केवल बिना संपीड़न वाली छवियाँ समर्थित हैं, अर्थात JPEG नहीं क्योंकि LSB बिट्स संपीड़न चरण के दौरान छेड़छाड़ हो सकते हैं।
इस उपकरण के लिए केवल OpenCV और इसकी निर्भरताएँ आवश्यक हैं।
pip install -r requirements.txt
LSBSteg.py
Usage:
LSBSteg.py encode -i <input> -o <output> -f <file>
LSBSteg.py decode -i <input> -o <output>
Options:
-h, --help Show this help
--version Show the version
-f,--file=<file> File to hide
-i,--in=<input> Input image (carrier)
-o,--out=<output> Output image (or extracted file)
टेक्स्ट एन्कोडिंग:
#encoding
steg = LSBSteg(cv2.imread("my_image.png"))
img_encoded = steg.encode_text("my message")
cv2.imwrite("my_new_image.png", img_encoded)
#decoding
im = cv2.imread("my_new_image.png")
steg = LSBSteg(im)
print("Text value:",steg.decode_text())
इमेज स्टेगानोग्राफी:
#encoding
steg = LSBSteg(cv2.imread("carrier.png")
new_im = steg.encode_image(cv2.imread("secret_image.jpg"))
cv2.imwrite("new_image.png", new_im)
#decoding
steg = LSBSteg("new_image.png")
orig_im = steg.decode_image()
cv.SaveImage("recovered.png", orig_im)
बाइनरी स्टेगानोग्राफी:
#encoding
steg = LSBSteg(cv2.imread("carrier.png"))
data = open("my_data.bin", "rb").read()
new_img = steg.encode_binary(data)
cv2.imwrite("new_image.png", new_img)
#decoding
steg = LSBSteg(cv2.imread("new_image.png"))
binary = steg.decode_binary()
with open("recovered.bin", "rb") as f:
f.write(data)
यह सॉफ़्टवेयर MIT-लाइसेंस प्राप्त है।