Steganografi adalah perpustakaan yang ditulis dalam Pure go untuk memungkinkan steganografi LSB sederhana pada gambar. Ia mampu menyandikan dan mendekode gambar. Itu dapat menyimpan file dalam format apa pun. Perpustakaan ini terinspirasi oleh Stego oleh EthanWelsh, sebuah utilitas baris perintah dengan tujuan yang sama.
go get - u github . com / auyer / steganography
Asli | Dikodekan |
---|---|
Gambar kedua berisi paragraf pertama deskripsi stegosaurus di Wikipedia, juga tersedia di example/message.txt sebagai contoh.
package main
import (
"bufio"
"image/png"
"io/ioutil"
"github.com/auyer/steganography"
)
Mode tulis digunakan untuk mengambil pesan dan menyematkannya ke dalam file gambar menggunakan steganografi LSB untuk menghasilkan file gambar rahasia yang akan memuat pesan Anda.
Perhatikan bahwa ukuran gambar minimum adalah 24 piksel untuk satu byte. Untuk setiap byte tambahan, diperlukan 3 piksel lagi.
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 ()
catatan: semua pemeriksaan kesalahan telah dihapus agar singkatnya, namun harus disertakan.
Mode panjang dapat digunakan untuk melakukan pemeriksaan awal pada gambar pembawa untuk menyimpulkan seberapa besar file yang dapat disimpan.
sizeOfMessage := steganography . GetMessageSizeFromImage ( img ) // retrieves the size of the encoded message
Mode baca digunakan untuk membaca gambar yang telah dikodekan menggunakan steganografi LSB, dan mengekstrak pesan tersembunyi dari gambar tersebut.
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 ))
catatan: semua pemeriksaan kesalahan telah dihapus agar singkatnya, namun harus disertakan.
Untuk contoh selengkapnya, lihat file example/stego.go. Ini adalah aplikasi baris perintah berdasarkan fork asli repositori ini, tetapi dimodifikasi untuk menggunakan perpustakaan Steganografi.