
छवियों में LSB स्टेग्नोग्राफी के लिए शून्य-निर्भरता वाली Go लाइब्रेरी: मनमानी फ़ाइलों को PNG कैरियर में एन्कोड करें और संदेश-आकार की पूर्व-जाँच के साथ छिपे हुए संदेशों को डिकोड करें।
स्टेग्नोग्राफी एक Pure go में लिखी गई लाइब्रेरी है जो छवियों पर सरल LSB स्टेग्नोग्राफी की सुविधा देती है। यह छवियों को एन्कोड और डिकोड दोनों करने में सक्षम है। यह किसी भी प्रारूप की फ़ाइलों को संग्रहीत कर सकती है। यह लाइब्रेरी Stego by EthanWelsh से प्रेरित है, जो इसी उद्देश्य के लिए एक कमांड लाइन उपयोगिता है।
go get -u github.com/auyer/steganography
| मूल | एन्कोडेड |
|---|---|
![]() | ![]() |
दूसरी छवि में Wikipedia पर स्टेगोसॉरस के विवरण का पहला पैराग्राफ़ है, जो उदाहरण के रूप में examples/message.txt में भी उपलब्ध है।
package main
import (
"bufio"
"image/png"
"io/ioutil"
"github.com/auyer/steganography"
)
राइट मोड का उपयोग किसी संदेश को लेकर उसे LSB स्टेग्नोग्राफी का उपयोग करके एक छवि फ़ाइल में एम्बेड करने के लिए किया जाता है, ताकि एक गुप्त छवि फ़ाइल तैयार हो सके जिसमें आपका संदेश होगा।
ध्यान दें कि एक बाइट के लिए न्यूनतम छवि आकार 24 पिक्सेल है। प्रत्येक अतिरिक्त बाइट के लिए 3 और पिक्सेल आवश्यक हैं।
inFile, _ := os.Open("input_file.png") // opening file
reader := bufio.NewReader(inFile) // buffer reader
img, _ := png.Decode(reader) // decoding to golang's image.Image
w := new(bytes.Buffer) // buffer that will recieve the results
err := steganography.Encode(w, img, []byte("message")) // Encode the message into the image
if err != nil {
log.Printf("Error Encoding file %v", err)
return
}
outFile, _ := os.Create("out_file.png") // create file
w.WriteTo(outFile) // write buffer to it
outFile.Close()
नोट: संक्षिप्तता के लिए सभी त्रुटि जाँचें हटा दी गई हैं, लेकिन उन्हें शामिल किया जाना चाहिए।
लेंथ मोड का उपयोग कैरियर छवि पर एक प्रारंभिक जाँच करने के लिए किया जा सकता है, ताकि यह अनुमान लगाया जा सके कि यह कितनी बड़ी फ़ाइल संग्रहीत कर सकती है।
sizeOfMessage := steganography.GetMessageSizeFromImage(img) // retrieves the size of the encoded message
रीड मोड का उपयोग उस छवि को पढ़ने के लिए किया जाता है जिसे LSB स्टेग्नोग्राफी का उपयोग करके एन्कोड किया गया है, और उस छवि से छिपे हुए संदेश को निकालने के लिए किया जाता है।
inFile, _ := os.Open(encodedInputFile) // opening file
defer inFile.Close()
reader := bufio.NewReader(inFile) // buffer reader
img, _ := png.Decode(reader) // decoding to golang's image.Image
sizeOfMessage := steganography.GetMessageSizeFromImage(img) // retrieving message size to decode in the next line
msg := steganography.Decode(sizeOfMessage, img) // decoding the message from the file
fmt.Println(string(msg))
नोट: संक्षिप्तता के लिए सभी त्रुटि जाँचें हटा दी गई हैं, लेकिन उन्हें शामिल किया जाना चाहिए।
पूर्ण उदाहरण के लिए, examples/stego.go फ़ाइल देखें। यह इस रिपॉज़िटरी के मूल फ़ोर्क पर आधारित एक कमांड लाइन ऐप है, लेकिन इसे स्टेग्नोग्राफी लाइब्रेरी का उपयोग करने के लिए संशोधित किया गया है।