
Programa Python para fazer esteganografia de arquivos em imagens usando o Bit Menos Significativo.
Programa Python baseado em métodos esteganográficos para ocultar arquivos em imagens usando a técnica do Bit Menos Significativo.
Usei o método mais básico, que é o bit menos significativo. Um pixel de cor é composto por vermelho, verde e azul, codificado em um byte. A ideia é armazenar informações no primeiro bit de cada componente RGB do pixel. No pior caso, o valor decimal difere em um, o que não é visível ao olho humano. Na prática, se você não tiver espaço para armazenar todos os seus dados no primeiro bit de cada pixel, deve começar a usar o segundo bit, e assim por diante. É preciso ter em mente que quanto mais dados você armazenar em uma imagem, mais facilmente ela pode ser detectada.
O módulo LSBSteg é baseado no OpenCV para ocultar dados em imagens. Ele usa o primeiro bit de cada pixel e de cada cor de uma imagem. O código é bastante simples de entender; Se todos os primeiros bits forem usados, o módulo começa a usar o segundo bit, então quanto maior os dados, mais a imagem é alterada. O programa pode ocultar todos os dados se houver espaço suficiente na imagem. As principais funções são:
Apenas imagens sem compressão são suportadas, ou seja, não JPEG, pois os bits LSB podem ser alterados durante a fase de compressão.
Esta ferramenta requer apenas OpenCV e suas dependências.
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ção de texto:
#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())
Esteganografia de imagem:
#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)
Esteganografia binária:
#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)
Este software é licenciado sob a MIT.