- Ocultamiento y Encripción de Datos en Imágenes BMP mediante Esteganografía
- Compilación
- Ejemplos de Uso
- Stegoanalysis
Este proyecto crea un ejecutable llamado stegobmp que es una herramienta de esteganografía que permite ocultar y extraer información en imágenes BMP mediante técnicas de esteganografía (LSB1, LSB4, LSBI) y cifrado simétrico (AES y 3DES) con modos de operación CBC, ECB, CFB y OFB como fué especificado en el trabajo. Para más detalles de implementación o técnicas ver el análisis comparativo.
Para compilar el proyecto, es necesario GCC y make. En el directorio raíz del proyecto, ejecutar:
make all
Esto genera un ejecutable stegobmp, ver los ejemplos de uso.
| Parámetro | Descripción |
|---|---|
--embed |
Modo de ocultación |
--extract |
Modo de extracción |
--in |
Archivo de información a ocultar |
-p o --p |
Imagen portadora (archivo BMP donde se esconde o extrae la información) |
--out |
Archivo de imagen o archivo de salida |
--steg |
Algoritmo de esteganografía (<steganography_method>: LSB1, LSB4, LSBI) |
-a o --a |
Algoritmo de cifrado (<encryption_method>: AES128, AES192, AES256, 3DES) |
-m o --m |
Modo de operación de cifrado (<mode>: ECB, CBC, CFB, OFB) |
--pass |
Contraseña de cifrado (<password>) |
Se debe indicar como primer argumento --embed para indicar que se va a ocultar información en una imagen BMP.
./stegobmp --embed --in <path/to/message.txt> -p <path/to/cover_image.bmp> --out <path/to/stego_image.bmp> --steg <steganography_method>
En el siguiente ejemplo se va a ocultar la imagen secreta secret_img.png en la imagen portadora porter_img.bmp con esteganografiado LSB1 y la imagen de salida que servirá como fachada para nuestros planes de destrucción será facade_img.bmp. Este es el ejemplo que se puede ver en la imagen de arriba.
./stegobmp --embed --in ./tests/secret_img.png -p ./tests/porter_img.bmp --out ./tests/facade_img.bmp --steg LSB1
./stegobmp --embed --in <path/to/secret_data.txt> -p <path/to/cover_image.bmp> --out <path/to/stego_image_encrypted.bmp> --steg <steganography_method> -a <encryption_method> -m <mode> --pass "<password>"
Por ejemplo con esteganografiado LSB1 y cifrado 3DES con modo CBC
./stegobmp --embed --in ./tests/secret_img.png -p ./tests/porter_img.bmp --out ./tests/facade_img.bmp --steg LSB1 -a 3des -m cbc --pass "secretpassword"
Se debe indicar como primer argumento --extract para indicar que se va a extraer información de una imagen BMP.
./stegobmp --extract -p <path/to/stego_image.bmp> --out <path/to/recovered_message> --steg <steganography_method>
Siguiendo el eje de los ejemplos de embedding, ahora la extracción se obtiene así:
./stegobmp --extract --p ./tests/facade_img.bmp --out ./tests/secret_img --steg LSB1
./stegobmp --extract -p <path/to/stego_image_encrypted.bmp> --out <path/to/recovered_secret_data> --steg <steganography_method> -a <encryption_method> -m <mode> --pass "<password>"
Para el caso de LSB1 y cifrado 3DES con modo CBC:
./stegobmp --extract -p ./tests/facade_img.bmp --out ./tests/secret_img --steg LSB1 -a 3des -m cbc --pass "secretpassword"
Para ver cómo se ejecuta el paso a paso para encontrar el secreto tras las imágenes de este directorio, ver el README de ./stegoanalysis.

