
Esteganografia de Bit Menos Significativo para imagens bitmap (.bmp e .png), arquivos de som WAV e sequências de bytes. Esteganálise LSB simples (extração LSB) para imagens bitmap.

Se você não está familiarizado com técnicas de esteganografia, também escrevi uma visão geral básica da área em Esteganografia: Escondendo Dados Dentro de Dados.
Este projeto está no PyPI e pode ser instalado com
pip install stego-lsb
Alternativamente, você pode instalá-lo diretamente deste repositório:
git clone https://github.com/ragibson/Steganography
cd Steganography
python3 setup.py install
Após a instalação, use o comando stegolsb no terminal ou importe funções do stego_lsb no seu código.
O bit_manipulation fornece a capacidade de intercalar (rapidamente) os bytes de uma carga útil diretamente nos bits menos significativos de uma sequência de bytes portadora.
Especificamente, ele contém quatro funções principais:
# Intercala os bytes da carga útil nos num_lsb LSBs da portadora.
lsb_interleave_bytes(carrier, payload, num_lsb, truncate=False)
# Desintercala num_bits bits dos num_lsb LSBs da portadora.
lsb_deinterleave_bytes(carrier, num_bits, num_lsb)
# Executa lsb_interleave_bytes com uma portadora List[uint8].
lsb_interleave_list(carrier, payload, num_lsb)
# Executa lsb_deinterleave_bytes com uma portadora List[uint8].
lsb_deinterleave_list(carrier, num_bits, num_lsb)
Executar bit_manipulation.py, chamar sua função test() diretamente, ou executar stegolsb test deve produzir uma saída semelhante a
Testando carga útil de 1.0 MB -> portadora de 10.0 MB...
Progress: [################################]
----------------------------------------
| # LSBs | Taxa de Codificação | Taxa de Decodificação |
| 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 esteganografia de bits menos significativos para ocultar um arquivo nas amostras de um arquivo .wav.
Para cada amostra no arquivo de áudio, sobrescrevemos os bits menos significativos com os dados do nosso arquivo.
WavSteg requer Python 3
Execute o WavSteg com os seguintes argumentos de linha de comando:
Command Line Arguments:
-h, --hide Para ocultar dados em um arquivo de som
-r, --recover Para recuperar dados de um arquivo de som
-i, --input TEXT Caminho para um arquivo .wav
-s, --secret TEXT Caminho para um arquivo a ser ocultado no arquivo de som
-o, --output TEXT Caminho para um arquivo de saída
-n, --lsb-count INTEGER Quantos LSBs usar [padrão: 2]
-b, --bytes INTEGER Quantos bytes recuperar do arquivo de som
--help Mostra esta mensagem e sai.
Exemplo:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 1
# OR
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 1 -b 1000
Para ocultar dados, use os argumentos -h, -i, -s, -o e -n.
O seguinte comando ocultaria o conteúdo de file.txt em sound.wav e salvaria o resultado como sound_steg.wav. O comando também informa quantos bytes foram usados de um máximo teórico.
Exemplo:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 2
Usando 2 LSBs, podemos ocultar 6551441 bytes
Arquivos lidos em 0.01s
5589889 bytes ocultados em 0.24s
Arquivo wav de saída escrito em 0.03s
Se você tentar ocultar muitos dados, o WavSteg exibirá o número mínimo de LSBs necessários para ocultar seus dados.
Para recuperar dados, use os argumentos -r, -i, -o, -n e -b
O seguinte comando recuperaria os dados ocultos de sound_steg.wav e os salvaria como output.txt. Isso requer que o tamanho em bytes dos dados ocultos seja preciso, caso contrário, o resultado pode ser muito curto ou conter dados estranhos.
Exemplo:
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 2 -b 5589889
Arquivos lidos em 0.02s
Recuperados 5589889 bytes em 0.18s
Arquivo de saída escrito em 0.00s
LSBSteg usa esteganografia de bits menos significativos para ocultar um arquivo nas informações de cor de uma imagem RGB (.bmp ou .png).
Para cada canal de cor (ex.: R, G e B) em cada pixel da imagem, sobrescrevemos os bits menos significativos do valor de cor com os dados do nosso arquivo. Para facilitar a recuperação desses dados, também ocultamos o tamanho do arquivo de entrada nos primeiros canais de cor da imagem.
Você precisa do Python 3 e do Pillow, um fork da Python Imaging Library (PIL).
Execute o LSBSteg com os seguintes argumentos de linha de comando:
Command Line Arguments:
-h, --hide Para ocultar dados em um arquivo de imagem
-r, --recover Para recuperar dados de um arquivo de imagem
-a, --analyze Exibe quantos dados podem ser ocultados em uma imagem [padrão: False]
-i, --input TEXT Caminho para uma imagem bitmap (.bmp ou .png)
-s, --secret TEXT Caminho para um arquivo a ser ocultado na imagem
-o, --output TEXT Caminho para um arquivo de saída
-n, --lsb-count INTEGER Quantos LSBs usar [padrão: 2]
-c, --compression INTEGER RANGE
1 (melhor velocidade) a 9 (menor tamanho de arquivo) [padrão: 1]
--help Mostra esta mensagem e sai.
Exemplo:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
# OR
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
# OR
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Antes de ocultar dados em uma imagem, pode ser útil visualizar quantos dados podem ser ocultados. O seguinte comando fará isso, produzindo uma saída semelhante a
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
Resolução da imagem: (2000, 1100, 3)
Usando 2 LSBs, podemos ocultar: 1650000 B
Tamanho do arquivo de entrada: 1566763 B
Tag de tamanho do arquivo: 3 B
O seguinte comando ocultará dados na imagem de entrada e gravará o resultado na imagem esteganografada, produzindo uma saída semelhante a
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
Arquivos lidos em 0.26s
1566763 bytes ocultados em 0.31s
Imagem sobrescrita em 0.27s
O seguinte comando recuperará dados da imagem esteganografada e gravará o resultado no arquivo de saída, produzindo uma saída semelhante a
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Arquivos lidos em 0.30s
1566763 bytes recuperados em 0.28s
Arquivo de saída escrito em 0.00s
StegDetect fornece um método para detectar esteganografia simples em imagens.
Você precisa do Python 3 e do Pillow, um fork da Python Imaging Library (PIL).
Execute o StegDetect com os seguintes argumentos de linha de comando:
Command Line Arguments:
-i, --input TEXT Caminho para uma imagem
-n, --lsb-count INTEGER Quantos LSBs exibir [padrão: 2]
--help Mostra esta mensagem e sai.
Somamos os n bits menos significativos dos canais de cor RGB para cada pixel e normalizamos o resultado para o intervalo 0-255. Esse valor é então aplicado a cada canal de cor do pixel. Onde n é o número de bits menos significativos a serem exibidos, o seguinte comando salvará a imagem resultante, anexando "_nLSBs" ao nome do arquivo, e produzirá uma saída semelhante à seguinte:
$ stegolsb stegdetect -i input_image.png -n 2
Runtime: 0.63s