
बिटमैप छवियों (.bmp और .png), WAV ध्वनि फ़ाइलों और बाइट अनुक्रमों के लिए न्यूनतम महत्वपूर्ण बिट स्टेग्नोग्राफ़ी। बिटमैप छवियों के लिए सरल LSB स्टेग्नालिसिस (LSB निष्कर्षण)।

यदि आप स्टेग्नोग्राफी तकनीकों से अपरिचित हैं, तो मैंने इस क्षेत्र का एक बुनियादी अवलोकन स्टेग्नोग्राफी: डेटा के अंदर डेटा छिपाना में भी लिखा है।
यह प्रोजेक्ट PyPI पर है और इसे निम्नलिखित से स्थापित किया जा सकता है
pip install stego-lsb
वैकल्पिक रूप से, आप इसे इस रिपॉजिटरी से सीधे स्थापित कर सकते हैं:
git clone https://github.com/ragibson/Steganography
cd Steganography
python3 setup.py install
स्थापना के बाद, टर्मिनल में stegolsb कमांड का उपयोग करें या अपने कोड में stego_lsb से फ़ंक्शन आयात करें।
bit_manipulation एक पेलोड के बाइट्स को सीधे कैरियर बाइट अनुक्रम के सबसे कम महत्वपूर्ण बिट्स में (जल्दी से) इंटरलीव करने की क्षमता प्रदान करता है।
विशेष रूप से, इसमें चार प्राथमिक फ़ंक्शन शामिल हैं:
# Interleave the bytes of payload into the num_lsb LSBs of carrier.
lsb_interleave_bytes(carrier, payload, num_lsb, truncate=False)
# Deinterleave num_bits bits from the num_lsb LSBs of carrier.
lsb_deinterleave_bytes(carrier, num_bits, num_lsb)
# Runs lsb_interleave_bytes with a List[uint8] carrier.
lsb_interleave_list(carrier, payload, num_lsb)
# Runs lsb_deinterleave_bytes with a List[uint8] carrier.
lsb_deinterleave_list(carrier, num_bits, num_lsb)
bit_manipulation.py चलाने, इसके test() फ़ंक्शन को सीधे कॉल करने, या stegolsb test चलाने पर निम्नलिखित के समान आउटपुट आना चाहिए
Testing 1.0 MB payload -> 10.0 MB carrier...
Progress: [################################]
----------------------------------------
| # LSBs | Encode Rate | Decode rate |
| 1 | 60.6 MB/s | 95.9 MB/s |
| 2 | 56.6 MB/s | 52.7 MB/s |
| 3 | 82.5 MB/s | 77.4 MB/s |
| 4 | 112.4 MB/s | 105.9 MB/s |
| 5 | 135.9 MB/s | 129.8 MB/s |
| 6 | 159.9 MB/s | 152.4 MB/s |
| 7 | 181.7 MB/s | 174.6 MB/s |
| 8 | 372.8 MB/s | 1121.8 MB/s |
----------------------------------------
WavSteg एक .wav फ़ाइल के नमूनों में एक फ़ाइल को छिपाने के लिए सबसे कम महत्वपूर्ण बिट स्टेग्नोग्राफी का उपयोग करता है।
ऑडियो फ़ाइल के प्रत्येक नमूने के लिए, हम अपनी फ़ाइल के डेटा के साथ सबसे कम महत्वपूर्ण बिट्स को अधिलेखित करते हैं।
WavSteg को Python 3 की आवश्यकता है
WavSteg को निम्नलिखित कमांड लाइन आर्गुमेंट के साथ चलाएँ:
Command Line Arguments:
-h, --hide To hide data in a sound file
-r, --recover To recover data from a sound file
-i, --input TEXT Path to a .wav file
-s, --secret TEXT Path to a file to hide in the sound file
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-b, --bytes INTEGER How many bytes to recover from the sound file
--help Show this message and exit.
उदाहरण:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 1
# OR
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 1 -b 1000
डेटा छिपाने के लिए -h, -i, -s, -o, और -n आर्गुमेंट का उपयोग किया जाता है।
निम्नलिखित कमांड file.txt की सामग्री को sound.wav में छिपाएगा और परिणाम को sound_steg.wav के रूप में सहेजेगा। यह कमांड यह भी आउटपुट करता है कि सैद्धांतिक अधिकतम में से कितने बाइट्स का उपयोग किया गया है।
उदाहरण:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 2
Using 2 LSBs, we can hide 6551441 bytes
Files read in 0.01s
5589889 bytes hidden in 0.24s
Output wav written in 0.03s
यदि आप बहुत अधिक डेटा छिपाने का प्रयास करते हैं, तो WavSteg आपके डेटा को छिपाने के लिए आवश्यक LSBs की न्यूनतम संख्या प्रिंट करेगा।
डेटा पुनर्प्राप्त करने के लिए -r, -i, -o, -n, और -b आर्गुमेंट का उपयोग किया जाता है
निम्नलिखित कमांड sound_steg.wav से छिपे हुए डेटा को पुनर्प्राप्त करेगा और इसे output.txt के रूप में सहेजेगा। इसके लिए छिपे हुए डेटा के बाइट्स में आकार सटीक होना आवश्यक है अन्यथा परिणाम बहुत छोटा हो सकता है या अतिरिक्त डेटा शामिल हो सकता है।
उदाहरण:
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 2 -b 5589889
Files read in 0.02s
Recovered 5589889 bytes in 0.18s
Written output file in 0.00s
LSBSteg एक RGB छवि (.bmp या .png) के रंग जानकारी में एक फ़ाइल को छिपाने के लिए सबसे कम महत्वपूर्ण बिट स्टेग्नोग्राफी का उपयोग करता है।
छवि के प्रत्येक पिक्सेल में प्रत्येक रंग चैनल (जैसे, R, G, और B) के लिए, हम रंग मान के सबसे कम महत्वपूर्ण बिट्स को अपनी फ़ाइल के डेटा से अधिलेखित करते हैं। इस डेटा को पुनर्प्राप्त करना आसान बनाने के लिए, हम अपनी इनपुट फ़ाइल के फ़ाइल आकार को छवि के पहले कुछ रंग चैनलों में भी छिपाते हैं।
आपको Python 3 और Pillow की आवश्यकता है, जो Python Imaging Library (PIL) का एक फोर्क है।
LSBSteg को निम्नलिखित कमांड लाइन आर्गुमेंट के साथ चलाएँ:
Command Line Arguments:
-h, --hide To hide data in an image file
-r, --recover To recover data from an image file
-a, --analyze Print how much data can be hidden within an image [default: False]
-i, --input TEXT Path to an bitmap (.bmp or .png) image
-s, --secret TEXT Path to a file to hide in the image
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-c, --compression INTEGER RANGE
1 (best speed) to 9 (smallest file size) [default: 1]
--help Show this message and exit.
उदाहरण:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
# OR
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
# OR
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
किसी छवि में डेटा छिपाने से पहले, यह देखना उपयोगी हो सकता है कि कितना डेटा छिपाया जा सकता है। निम्नलिखित कमांड यह प्राप्त करेगा, जो निम्नलिखित के समान आउटपुट उत्पन्न करेगा
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
Image resolution: (2000, 1100, 3)
Using 2 LSBs, we can hide: 1650000 B
Size of input file: 1566763 B
File size tag: 3 B
निम्नलिखित कमांड इनपुट छवि में डेटा छिपाएगा और परिणाम को स्टेग्नोग्राफ़ की गई छवि में लिखेगा, जो निम्नलिखित के समान आउटपुट उत्पन्न करेगा
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
Files read in 0.26s
1566763 bytes hidden in 0.31s
Image overwritten in 0.27s
निम्नलिखित कमांड स्टेग्नोग्राफ़ की गई छवि से डेटा पुनर्प्राप्त करेगा और परिणाम को आउटपुट फ़ाइल में लिखेगा, जो निम्नलिखित के समान आउटपुट उत्पन्न करेगा
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Files read in 0.30s
1566763 bytes recovered in 0.28s
Output file written in 0.00s
StegDetect छवियों में सरल स्टेग्नोग्राफी का पता लगाने के लिए एक विधि प्रदान करता है।
आपको Python 3 और Pillow की आवश्यकता है, जो Python Imaging Library (PIL) का एक फोर्क है।
StegDetect को निम्नलिखित कमांड लाइन आर्गुमेंट के साथ चलाएँ:
Command Line Arguments:
-i, --input TEXT Path to an image
-n, --lsb-count INTEGER How many LSBs to display [default: 2]
--help Show this message and exit.
हम प्रत्येक पिक्सेल के लिए RGB रंग चैनलों के सबसे कम महत्वपूर्ण n बिट्स को जोड़ते हैं और परिणाम को 0-255 की सीमा में सामान्यीकृत करते हैं। फिर यह मान पिक्सेल के प्रत्येक रंग चैनल पर लागू किया जाता है। जहाँ n दिखाने के लिए सबसे कम महत्वपूर्ण बिट्स की संख्या है, निम्नलिखित कमांड परिणामी छवि को सहेजेगा, फ़ाइल नाम में "_nLSBs" जोड़कर, और निम्नलिखित के समान आउटपुट उत्पन्न करेगा:
$ stegolsb stegdetect -i input_image.png -n 2
Runtime: 0.63s