إخفاء المعلومات هي مكتبة مكتوبة بلغة Pure go للسماح بإخفاء المعلومات البسيط باستخدام LSB على الصور. إنه قادر على تشفير وفك تشفير الصور. يمكنه تخزين الملفات بأي تنسيق. هذه المكتبة مستوحاة من Stego بواسطة EthanWelsh، وهي أداة مساعدة لسطر الأوامر لها نفس الغرض.
go get - u github . com / auyer / steganography
إبداعي | مشفرة |
---|---|
تحتوي الصورة الثانية على الفقرة الأولى من وصف ستيجوسورس على ويكيبيديا، وهو متاح أيضًا في الأمثلة/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 ))
ملاحظة: تمت إزالة كافة عمليات التحقق من الأخطاء للإيجاز، ولكن يجب تضمينها.
للحصول على مثال كامل، راجع ملف example/stego.go. إنه تطبيق سطر أوامر يعتمد على النسخة الأصلية لهذا المستودع، ولكن تم تعديله لاستخدام مكتبة إخفاء المعلومات.