Steganography เป็นไลบรารีที่เขียนด้วย Pure go เพื่ออนุญาต LSB steganography อย่างง่ายบนรูปภาพ สามารถเข้ารหัสและถอดรหัสรูปภาพได้ สามารถจัดเก็บไฟล์ได้ทุกรูปแบบ ไลบรารีนี้ได้รับแรงบันดาลใจจาก Stego โดย EthanWelsh ซึ่งเป็นยูทิลิตีบรรทัดคำสั่งที่มีจุดประสงค์เดียวกัน
go get - u github . com / auyer / steganography
ต้นฉบับ | เข้ารหัสแล้ว |
---|---|
รูปภาพที่สองประกอบด้วยย่อหน้าแรกของคำอธิบายของสเตโกซอรัสในวิกิพีเดีย ซึ่งมีอยู่ใน example/message.txt เป็นตัวอย่างด้วย
package main
import (
"bufio"
"image/png"
"io/ioutil"
"github.com/auyer/steganography"
)
โหมดเขียนใช้เพื่อนำข้อความและฝังลงในไฟล์ภาพโดยใช้ LSB steganography เพื่อสร้างไฟล์ภาพลับที่จะมีข้อความของคุณ
โปรดทราบว่าขนาดรูปภาพขั้นต่ำคือ 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 steganography และแยกข้อความที่ซ่อนไว้ออกจากรูปภาพนั้น
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