
Esteganografía de bits menos significativos para imágenes de mapa de bits (.bmp y .png), archivos de sonido WAV y secuencias de bytes. Análisis simple de esteganografía LSB (extracción LSB) para imágenes de mapa de bits.

Si no estás familiarizado con las técnicas de esteganografía, también he escrito una visión general básica del campo en Esteganografía: Ocultando Datos Dentro de Datos.
Este proyecto está en PyPI y se puede instalar con
pip install stego-lsb
Alternativamente, puedes instalarlo directamente desde este repositorio:
git clone https://github.com/ragibson/Steganography
cd Steganography
python3 setup.py install
Después de la instalación, usa el comando stegolsb en la terminal o importa
funciones desde stego_lsb en tu código.
bit_manipulation proporciona la capacidad de intercalar (rápidamente) los bytes de una carga útil directamente en los bits menos significativos de una secuencia de bytes portadora.
Específicamente, contiene cuatro funciones principales:
# Interleave the bytes of payload into the num_lsb LSBs of carrier.
lsb_interleave_bytes(carrier, payload, num_lsb, truncate=False)
# Deinterleave num_bits bits from the num_lsb LSBs of carrier.
lsb_deinterleave_bytes(carrier, num_bits, num_lsb)
# Runs lsb_interleave_bytes with a List[uint8] carrier.
lsb_interleave_list(carrier, payload, num_lsb)
# Runs lsb_deinterleave_bytes with a List[uint8] carrier.
lsb_deinterleave_list(carrier, num_bits, num_lsb)
Ejecutar bit_manipulation.py, llamar directamente a su función test() o
ejecutar stegolsb test debería producir una salida similar a
Testing 1.0 MB payload -> 10.0 MB carrier...
Progress: [################################]
----------------------------------------
| # LSBs | Tasa de Codificación | Tasa de Decodificación |
| 1 | 60.6 MB/s | 95.9 MB/s |
| 2 | 56.6 MB/s | 52.7 MB/s |
| 3 | 82.5 MB/s | 77.4 MB/s |
| 4 | 112.4 MB/s | 105.9 MB/s |
| 5 | 135.9 MB/s | 129.8 MB/s |
| 6 | 159.9 MB/s | 152.4 MB/s |
| 7 | 181.7 MB/s | 174.6 MB/s |
| 8 | 372.8 MB/s | 1121.8 MB/s |
----------------------------------------
WavSteg usa esteganografía de bits menos significativos para ocultar un archivo en las muestras de un archivo .wav.
Para cada muestra en el archivo de audio, sobrescribimos los bits menos significativos con los datos de nuestro archivo.
WavSteg requiere Python 3
Ejecuta WavSteg con los siguientes argumentos de línea de comandos:
Command Line Arguments:
-h, --hide To hide data in a sound file
-r, --recover To recover data from a sound file
-i, --input TEXT Path to a .wav file
-s, --secret TEXT Path to a file to hide in the sound file
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-b, --bytes INTEGER How many bytes to recover from the sound file
--help Show this message and exit.
Ejemplo:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 1
# O
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 1 -b 1000
Ocultar datos usa los argumentos -h, -i, -s, -o y -n.
El siguiente comando ocultaría el contenido de file.txt en sound.wav y guardaría el resultado como sound_steg.wav. El comando también muestra cuántos bytes se han utilizado de un máximo teórico.
Ejemplo:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 2
Using 2 LSBs, we can hide 6551441 bytes
Files read in 0.01s
5589889 bytes hidden in 0.24s
Output wav written in 0.03s
Si intentas ocultar demasiados datos, WavSteg imprimirá el número mínimo de LSBs necesarios para ocultar tus datos.
Recuperar datos usa los argumentos -r, -i, -o, -n y -b
El siguiente comando recuperaría los datos ocultos de sound_steg.wav y los guardaría como output.txt. Esto requiere que el tamaño en bytes de los datos ocultos sea preciso, de lo contrario, el resultado podría ser demasiado corto o contener datos extraños.
Ejemplo:
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 2 -b 5589889
Files read in 0.02s
Recovered 5589889 bytes in 0.18s
Written output file in 0.00s
LSBSteg usa esteganografía de bits menos significativos para ocultar un archivo en la información de color de una imagen RGB (.bmp o .png).
Para cada canal de color (por ejemplo, R, G y B) en cada píxel de la imagen, sobrescribimos los bits menos significativos del valor de color con los datos de nuestro archivo. Para facilitar la recuperación de estos datos, también ocultamos el tamaño del archivo de entrada en los primeros canales de color de la imagen.
Necesitas Python 3 y Pillow, un fork de la Python Imaging Library (PIL).
Ejecuta LSBSteg con los siguientes argumentos de línea de comandos:
Command Line Arguments:
-h, --hide To hide data in an image file
-r, --recover To recover data from an image file
-a, --analyze Print how much data can be hidden within an image [default: False]
-i, --input TEXT Path to an bitmap (.bmp or .png) image
-s, --secret TEXT Path to a file to hide in the image
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-c, --compression INTEGER RANGE
1 (best speed) to 9 (smallest file size) [default: 1]
--help Show this message and exit.
Ejemplo:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
# O
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
# O
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Antes de ocultar datos en una imagen, puede ser útil ver cuántos datos se pueden ocultar. El siguiente comando logrará esto, produciendo una salida similar a
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
Image resolution: (2000, 1100, 3)
Using 2 LSBs, we can hide: 1650000 B
Size of input file: 1566763 B
File size tag: 3 B
El siguiente comando ocultará datos en la imagen de entrada y escribirá el resultado en la imagen esteganografiada, produciendo una salida similar a
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
Files read in 0.26s
1566763 bytes hidden in 0.31s
Image overwritten in 0.27s
El siguiente comando recuperará datos de la imagen esteganografiada y escribirá el resultado en el archivo de salida, produciendo una salida similar a
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Files read in 0.30s
1566763 bytes recovered in 0.28s
Output file written in 0.00s
StegDetect proporciona un método para detectar esteganografía simple en imágenes.
Necesitas Python 3 y Pillow, un fork de la Python Imaging Library (PIL).