StegoPy - Ferramenta de esteganografia LSB em Python

Prefácio


Recentemente, notei que as pessoas do meu fórum se interessaram pelo tema da esteganografia de vários textos em imagens, arquivos mp3 e vídeos. E então tive a ideia de escrever meu próprio roteiro para esteganografia de texto em imagens. Devo dizer que nunca encontrei ferramentas semelhantes para esteganografia.

Antes de me familiarizar com a esteganografia da LSB, considerei outras maneiras, ou melhor, criei as minhas. Mas eu não tinha forças para criar algo próprio e decidi pesquisar no Google: o

LSB é um método de esteganografia no qual os bits mais baixos de uma das cores RGB de um pixel são alterados para bits de texto codificado.

Então me familiarizei com a biblioteca Pillow por trabalhar com imagens e criptografia. O segundo no meu caso foi necessário para criar a criptografia DES, que posteriormente será codificada em bits na imagem.

Codificação


Eu publiquei minha ideia no GitHub, então, para mais trabalhos com o StegoPy, precisamos apenas clonar o projeto com o GitHub:

> git clone https://github.com/eBind/StegoPy
> cd StegoPy
> pip3 install -r requirements.txt
> python3 stegopy.py

Instalação

No entanto, tudo é como de costume em termos de instalação. Agora vamos ver a sintaxe dos comandos de inicialização.

> python3 stegopy.py -e in.jpg data.txt

Com este comando, codificaremos o texto do arquivo data.txt na imagem in.jpg,
mas antes da codificação, seremos solicitados um saldo, que pode ser de 1 a 4. Essa é apenas uma das coisas mais interessantes do programa.

Arquivo in.jpg
Imagem de entrada

Arquivo data.txt
esta é uma mensagem privada

Equilíbrio é o número de bits de baixa ordem envolvidos na esteganografia. Varia de 1 a 4.

Consequentemente, quanto maior o saldo, o:

  1. Menos pixels estarão envolvidos na codificação
  2. Alterações visíveis nos canais de cores

A partir disso, podemos concluir que, quanto menor o equilíbrio, maior a confiabilidade da esteganografia e ela será invisível ao olho humano.

Outro fator importante é que apenas o canal azul muda, cujos tons são os menos visíveis aos nossos olhos.

Depois de decidirmos a balança, nosso script criará dois arquivos adicionais:

  • out.png - imagem com texto codificado
  • key.dat - arquivo com a chave necessária para descriptografia

Arquivo out.png
Imagem com texto

Arquivo Key.dat
1$960$gxvZH4Q8Gq2qLGeA1aSCXIPRljJlJbihsvSBdzx-wSM=

Codificação

Decodificação


A sintaxe para o comando no nosso caso é:

> python3 ./stegopy.py -d out.png

Ser-nos-á solicitado a chave que recebemos ao codificar. Após a decodificação, o texto descriptografado será salvo no arquivo out.txt.Como

Decodificação

você deve ter notado, a imagem de entrada possui o formato JPEG e a saída é PNG. Esta é uma falha no programa, que será corrigida em breve e você terá a oportunidade de escolher o formato de saída.

Somente JPEG e PNG foram testados na imagem de entrada; teoricamente, ele deve funcionar em imagens menos usadas, como bmp e assim por diante.

A propósito, a pylint classificou o StegoPy em 10/10. Comentários sobre o código e a funcionalidade são bem-vindos, pois pretendo desenvolver o aplicativo.

O projeto está disponível no GitHub

All Articles