
🔍 Go टूल LSB स्टेग्नोग्राफी के लिए, जो किसी भी फ़ाइल को एक छवि में छिपाने में सक्षम है।
stegify एक सरल कमांड लाइन टूल है जो किसी भी फ़ाइल को एक छवि या छवियों के सेट के भीतर पूरी तरह से पारदर्शी रूप से छिपाने में सक्षम है।
यह तकनीक LSB (Least Significant Bit) स्टेगानोग्राफी के रूप में जानी जाती है।
| कैरियर | डेटा | परिणाम |
|---|---|---|
![]() | ![]() | ![]() |
Result फ़ाइल में Data फ़ाइल छिपी हुई है। और जैसा कि आप देख सकते हैं, यह पूरी तरह से पारदर्शी है।
यदि एकाधिक Carrier फ़ाइलें प्रदान की जाती हैं, तो Data फ़ाइल टुकड़ों में विभाजित हो जाएगी और प्रत्येक टुकड़ा संबंधित कैरियर में एन्कोड किया जाएगा।
| कैरियर1 | कैरियर2 | डेटा | परिणाम1 | परिणाम2 |
|---|---|---|---|---|
![]() |
Result1 फ़ाइल में Data फ़ाइल का आधा भाग छिपा होता है और Result2 में दूसरा भाग। हमेशा की तरह पूरी तरह से पारदर्शी।
go install github.com/DimitarPetrov/stegify@latest
brew tap DimitarPetrov/stegify
brew install stegify
या आप अपने सिस्टम के लिए बाइनरी यहाँ से डाउनलोड कर सकते हैं।
stegify encode --carrier <file-name> --data <file-name> --result <file-name>
stegify decode --carrier <file-name> --result <file-name>
एन्कोडिंग करते समय, --data फ़्लैग को दिए गए नाम वाली फ़ाइल --carrier फ़्लैग को दिए गए नाम वाली फ़ाइल के अंदर छिपा दी जाती है और परिणामी फ़ाइल को वर्तमान कार्यशील निर्देशिका में --result फ़्लैग को दिए गए नाम के तहत एक नई फ़ाइल में सहेजा जाता है।
नोट: परिणाम फ़ाइल में कोई फ़ाइल एक्सटेंशन नहीं होगा और इसलिए इसे
--resultफ़्लैग में स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए।
डिकोडिंग करते समय, पहले से एन्कोडेड डेटा वाली कैरियर फ़ाइल का फ़ाइल नाम दिए जाने पर, डेटा निकाला जाता है और वर्तमान कार्यशील निर्देशिका में --result फ़्लैग को दिए गए नाम के तहत एक नई फ़ाइल में सहेजा जाता है।
नोट: परिणाम फ़ाइल में कोई फ़ाइल एक्सटेंशन नहीं होगा और इसलिए इसे
--resultफ़्लैग में स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए।
दोनों ही मामलों में --result फ़्लैग को छोड़ा जा सकता है और डिफ़ॉल्ट मानों का उपयोग किया जाएगा।
stegify encode --carriers "<file-names...>" --data <file-name> --results "<file-names...>"
OR
stegify encode --carrier <file-name> --carrier <file-name> ... --data <file-name> --result <file-name> --result <file-name> ...
stegify decode --carriers "<file-names...>" --result <file-name>
OR
stegify decode --carrier <file-name> --carrier <file-name> ... --result <file-name>
एक से अधिक कैरियर में डेटा फ़ाइल को एन्कोड करते समय, डेटा फ़ाइल को N भागों में विभाजित किया जाता है, जहाँ N प्रदान किए गए कैरियर की संख्या है। प्रत्येक भाग को फिर संबंधित कैरियर में एन्कोड किया जाता है।
नोट: डिकोडिंग करते समय, परिणाम को ठीक से निकालने के लिए कैरियर को बिल्कुल उसी क्रम में प्रदान किया जाना चाहिए।
इस प्रकार की एन्कोडिंग सुरक्षा की एक और परत और आकार सीमाओं के संबंध में अधिक लचीलापन प्रदान करती है।
दोनों ही मामलों में --result/--results फ़्लैग को छोड़ा जा सकता है और डिफ़ॉल्ट मानों का उपयोग किया जाएगा।
नोट: एन्कोडिंग करते समय परिणाम फ़ाइलों की संख्या (यदि प्रदान की गई है) कैरियर फ़ाइलों की संख्या के बराबर होनी चाहिए। डिकोडिंग करते समय, बिल्कुल एक परिणाम अपेक्षित है।
जब एकाधिक कैरियर मिश्रित प्रकार के फ़्लैग के साथ प्रदान किए जाते हैं, तो carrier फ़्लैग के माध्यम से प्रदान किए गए नाम पहले लिए जाते हैं और carriers/c फ़्लैग के साथ बाद में। यही बात result/results फ़्लैग पर भी लागू होती है।
stegify का उपयोग प्रोग्रामेटिक रूप से भी किया जा सकता है और यह फ़ाइल नामों या कच्चे Readers और Writers के साथ काम करने वाले आसान-से-उपयोग वाले फ़ंक्शन प्रदान करता है। आप विवरण के लिए steg पैकेज के अंतर्गत godoc पर जा सकते हैं।
यदि कैरियर फ़ाइल jpeg या jpg प्रारूप में है, तो एन्कोडिंग के बाद परिणाम फ़ाइल छवि png एन्कोडेड होगी (इसलिए यह आकार में बड़ी हो सकती है) भले ही परिणाम फ़्लैग में निर्दिष्ट फ़ाइल एक्सटेंशन कुछ भी हो।
stegify का उपयोग Codefest’19 में Capture The Flag चुनौतियों में से एक के लिए किया गया था।
प्रतिभागियों को "मासूम" बिल्लियों के एक समूह की तस्वीर दी गई थी। कुछ भी संदिग्ध नहीं, है ना? फिर से सोचें!
![]() |
![]() |
![]() |
![]() |