ステガノグラフィーは、画像上で単純な LSB ステガノグラフィーを可能にする Pure go で書かれたライブラリです。画像のエンコードとデコードの両方が可能です。あらゆる形式のファイルを保存できます。このライブラリは、同じ目的を持つコマンド ライン ユーティリティである EthanWelsh の Stego からインスピレーションを得ています。
go get - u github . com / auyer / steganography
オリジナル | エンコードされた |
---|---|
2 番目の画像には、Wikipedia のステゴサウルスの説明の最初の段落が含まれています。これも例として、examples/message.txt で入手できます。
package main
import (
"bufio"
"image/png"
"io/ioutil"
"github.com/auyer/steganography"
)
書き込みモードは、メッセージを取得し、LSB ステガノグラフィーを使用してそれを画像ファイルに埋め込み、メッセージを含む秘密の画像ファイルを作成するために使用されます。
最小画像サイズは 1 バイトあたり 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 ファイルを参照してください。これは、このリポジトリの元のフォークに基づくコマンド ライン アプリですが、Steganography ライブラリを使用するように変更されています。