
Programa simples de esteganografia baseado no método LSB.
Um programa para codificar informações em arquivos de imagem, áudio e vídeo por meio de esteganografia. Qualquer tipo de dado pode ser codificado, desde strings brutas até arquivos, como mostrado abaixo:
À esquerda, uma casa com uma imagem oculta esteganograficamente. À direita, a imagem oculta extraída de um gato. Ela é revelada removendo todos os bits, exceto o menos significativo, de cada componente de cor na imagem hospedeira.
Hospedeiros JPEG usam incorporação por coeficientes DCT. Na CLI, outros formatos de imagem legíveis pelo Pillow são convertidos para PNG ao serem salvos. A API web aceita apenas os formatos listados acima. WAV é o único formato de áudio suportado.
Hospedeiros de vídeo são decodificados com FFmpeg, incorporados quadro a quadro com um sinal DCT robusto e gravados de volta como MP4/H.264. O decodificador de vídeo é destinado a arquivos criados pelo codificador de vídeo do stegpy; vídeos arbitrários sem um payload do stegpy não decodificarão dados úteis. O processamento de vídeo é intencionalmente desabilitado na demonstração web pública hospedada porque pode ser intensivo em CPU; use a CLI ou execute o aplicativo web localmente para hospedeiros de vídeo.
O suporte a vídeo também requer as ferramentas de linha de comando ffmpeg e ffprobe.
Instale a versão atual do PyPI como uma ferramenta de linha de comando com uv:
uv tool install stegpy
stegpy -h
Atualize uma instalação existente com:
uv tool upgrade stegpy
Para desenvolvimento, clone o repositório e crie o ambiente com uv:
git clone https://github.com/izcoser/stegpy.git
cd stegpy
uv sync --dev
uv run stegpy -h
stegpy "Hello World!" image.png
stegpy _image.png
stegpy "Hello video!" clip.mp4
stegpy _clip.mp4
Entradas de vídeo podem ser qualquer contêiner suportado e legível pelo FFmpeg listado acima. O stegpy sempre grava a saída de vídeo codificada como MP4/H.264.
Os dados são codificados sem qualquer proteção por padrão, mas podem ser criptografados com a flag -p:
stegpy "Hello World!" image.png -p
Enter password (will not be echoed):
Verify password (will not be echoed):
stegpy _image.png -p
Enter password (will not be echoed):
Hello World!
stegpy -h
Uma demonstração ao vivo baseada no pacote Python está disponível em https://stegpy.coseri.xyz.
Execute o aplicativo FastAPI e a demonstração no navegador localmente a partir do repositório:
uv run uvicorn stegpy.web:app --reload
Em seguida, abra http://127.0.0.1:8000. Os arquivos estáticos em web-demo/ requerem o backend FastAPI /api/* e não funcionam ao abrir index.html diretamente.
A demonstração hospedada suporta hospedeiros PNG, BMP, GIF, WebP, WAV e JPEG, payloads de texto ou arquivo e criptografia de senha opcional. Os uploads de hospedeiros de imagem/áudio e de payloads de arquivo são limitados a 20 MB, e as mensagens de texto são limitadas a 1 MB. Sua exibição de capacidade mostra os bytes de payload utilizáveis após o cabeçalho do stegpy, o nome de arquivo incorporado e a sobrecarga de criptografia.
Hospedeiros de vídeo estão disponíveis na interface web apenas quando executados em localhost, porque o processamento de vídeo pode manter um servidor pequeno com a CPU ocupada por minutos. A interface web local aceita hospedeiros de vídeo de até 5 MB.
A API também expõe GET /api/health, POST /api/capacity,
POST /api/encode e POST /api/decode. A documentação interativa da API está
disponível em http://127.0.0.1:8000/docs quando executada localmente.
Doações são bem-vindas se você achar este projeto útil.
Ethereum / EVM: 0xfE1039ba2d4973eb6F6dd1cF3BDAF24aa6cbff96