
Programma Python per steganografare file in immagini utilizzando il bit meno significativo.
Programma Python basato su metodi steganografici per nascondere file nelle immagini utilizzando la tecnica del bit meno significativo.
Ho usato il metodo più basilare, ovvero il bit meno significativo. Un pixel a colori è composto da rosso, verde e blu, codificati su un byte. L'idea è di memorizzare le informazioni nel primo bit di ogni componente RGB del pixel. Nel caso peggiore, il valore decimale differisce di uno, che non è visibile all'occhio umano. In pratica, se non hai spazio per memorizzare tutti i tuoi dati nel primo bit di ogni pixel, dovresti iniziare a usare il secondo bit, e così via. Tieni presente che più dati memorizzi in un'immagine, più questa può essere rilevata.
Il modulo LSBSteg si basa su OpenCV per nascondere dati nelle immagini. Utilizza il primo bit di ogni pixel e di ogni colore di un'immagine. Il codice è abbastanza semplice da capire; se ogni primo bit è stato usato, il modulo inizia a usare il secondo bit, quindi più dati sono grandi, più l'immagine viene alterata. Il programma può nascondere tutti i dati se c'è abbastanza spazio nell'immagine. Le funzioni principali sono:
Sono supportate solo immagini senza compressione, vale a dire non JPEG poiché i bit LSB potrebbero essere alterati durante la fase di compressione.
Questo strumento richiede solo OpenCV e le sue dipendenze.
pip install -r requirements.txt
LSBSteg.py
Usage:
LSBSteg.py encode -i <input> -o <output> -f <file>
LSBSteg.py decode -i <input> -o <output>
Options:
-h, --help Show this help
--version Show the version
-f,--file=<file> File to hide
-i,--in=<input> Input image (carrier)
-o,--out=<output> Output image (or extracted file)
Codifica del testo:
#encoding
steg = LSBSteg(cv2.imread("my_image.png"))
img_encoded = steg.encode_text("my message")
cv2.imwrite("my_new_image.png", img_encoded)
#decoding
im = cv2.imread("my_new_image.png")
steg = LSBSteg(im)
print("Text value:",steg.decode_text())
Steganografia delle immagini:
#encoding
steg = LSBSteg(cv2.imread("carrier.png")
new_im = steg.encode_image(cv2.imread("secret_image.jpg"))
cv2.imwrite("new_image.png", new_im)
#decoding
steg = LSBSteg("new_image.png")
orig_im = steg.decode_image()
cv.SaveImage("recovered.png", orig_im)
Steganografia binaria:
#encoding
steg = LSBSteg(cv2.imread("carrier.png"))
data = open("my_data.bin", "rb").read()
new_img = steg.encode_binary(data)
cv2.imwrite("new_image.png", new_img)
#decoding
steg = LSBSteg(cv2.imread("new_image.png"))
binary = steg.decode_binary()
with open("recovered.bin", "rb") as f:
f.write(data)
Questo software è concesso in licenza MIT.