steganography
v1.0.2
스테가노그래피는 이미지에 간단한 LSB 스테가노그래피를 허용하기 위해 Pure go로 작성된 라이브러리입니다. 이미지 인코딩과 디코딩이 모두 가능합니다. 모든 형식의 파일을 저장할 수 있습니다. 이 라이브러리는 동일한 목적을 가진 명령줄 유틸리티인 EthanWelsh의 Stego에서 영감을 받았습니다.
go get - u github . com / auyer / steganography
원래의 | 인코딩됨 |
---|---|
두 번째 이미지에는 Wikipedia에 있는 스테고사우루스 설명의 첫 번째 단락이 포함되어 있으며, example/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 ))
참고: 간결성을 위해 모든 오류 검사가 제거되었지만 포함되어야 합니다.
전체 예를 보려면 example/stego.go 파일을 참조하세요. 이 저장소의 원래 포크를 기반으로 한 명령줄 앱이지만 Steganography 라이브러리를 사용하도록 수정되었습니다.