
AperiSolve v3.7.1
Plataforma automatizada de esteganálise que detecta dados ocultos em imagens usando 16 analisadores paralelos, visualização de camadas de bits e uma wiki integrada para investigações de CTF e forense.
Aperi'Solve
Experimente agora: https://www.aperisolve.com
Apoie o Aperi'Solve:
Aperi'Solve é uma plataforma web de esteganálise de código aberto que realiza análise automatizada de imagens para detectar e extrair dados ocultos usando ferramentas e técnicas comuns de esteganografia.
Principais recursos
- Visualize cada camada de bits (LSB e outras camadas) por canal de imagem (R/G/B/Alpha).
- Remapeamento de cores (remapeamentos aleatórios de paleta com 8 variantes geradas)
- Executa 16 analisadores em paralelo e exibe suas saídas, com badges de
sucesso/sem resultado por ferramenta e download dos arquivos extraídos com um clique:
- binwalk (arquivos embutidos)
- exiftool (metadados e geolocalização)
- file (detecção de tipo MIME e formato)
- GraphicsMagick identify (informações e propriedades da imagem)
- foremost (arquivos recuperados por carving)
- jsteg (extração de LSB de JPEG)
- jpseek / jphide (extração de esteganografia JPEG, com senha)
- openstego (extração com senha)
- outguess (extração com senha, análise profunda)
- pcrt (verificação e reparo de PNG)
- pngcheck
- steghide (extração com senha)
- strings
- zsteg (extração de texto/dados LSB)
- Wiki integrada (
/wiki): um manual de esteganografia no estilo HackTricks — uma metodologia de triagem, uma folha de consulta com árvore de decisão, páginas de técnicas por meio (imagem, áudio, texto, arquivos) e um guia por analisador, tudo escrito em Markdown. - Internacionalização: interface disponível em inglês, francês, espanhol, alemão,
russo, chinês e português em URLs com prefixo de idioma (
/fr/,/es/, …). - Arquitetura de fila de trabalho para descarregar analisadores pesados/lentos (Redis + workers em segundo plano).
- Cache de resultados endereçado por conteúdo, cache HTTP e limitação de taxa por endpoint.
- Os resultados são armazenados temporariamente para consulta e download posteriores e, em seguida, removidos automaticamente por uma tarefa agendada.
Adicionando um analisador
Adicionar um analisador é um único arquivo: crie uma subclasse de SubprocessAnalyzer, defina alguns
atributos de classe (name, has_archive, needs_password, deep_only,
display_order) e instale a ferramenta no Dockerfile. A lista de execução
do worker, a lista de permissões de download e a ordem no frontend são todas
derivadas automaticamente. Veja docs/adding-analyzer.md.
Início rápido (Docker)
Caso queira hospedar sua própria versão de https://www.aperisolve.com/.
Necessário: Docker + Docker Compose.
git clone https://github.com/Zeecka/AperiSolve.git
cd AperiSolve
cp .env.example .env
docker compose up -d
Em seguida, acesse a URL: http://localhost:5000/
Anúncios e analytics estão desativados por padrão; todas as integrações
(CUSTOM_EXTERNAL_SCRIPT, GOOGLE_ADS_TXT, SITE_BASE_URL, Sentry) são
opt-in por meio de variáveis de ambiente documentadas em .env.example.
O aplicativo nunca injeta marcação de anúncios por conta própria: CUSTOM_EXTERNAL_SCRIPT carrega o
script do AdSense e o posicionamento fica a cargo dos Auto ads.
Arquitetura
A stack é executada como serviços do Docker Compose:
- web — aplicativo Flask servido por gunicorn (templates Jinja + frontend em JavaScript puro).
- worker — um worker RQ que executa os analisadores para cada envio, distribuindo para uma thread por ferramenta.
- cron — um agendador cron RQ que executa a limpeza de retenção fora do caminho de requisição.
- initdb — um serviço de execução única que cria as tabelas e pré-popula o banco de dados de recuperação de CRC do IHDR.
- postgres — armazena metadados das imagens e o status dos envios.
- redis — broker RQ (DB 0) e armazenamento do limitador de taxa (DB 1).
- rqdashboard — monitoramento de filas, vinculado a localhost:9181.
Essa separação mantém as ferramentas pesadas (binwalk, foremost, zsteg, etc.) isoladas e evita bloquear o worker web. Envios idênticos são deduplicados por um hash de conteúdo, e as imagens derivadas são armazenadas em cache com cabeçalhos HTTP imutáveis de longa duração, então o tráfego repetido é barato.
Documentação
- docs/adding-analyzer.md — adicionar um novo analisador.
- docs/deploy.md — o fluxo de deploy em produção orientado por tags.
- CONTRIBUTING.md — configuração de desenvolvimento, testes, páginas da wiki e traduções.
Testes
uv sync --extra dev
uv run pytest -q # unit tests (no services needed)
# end-to-end analyzer tests through the running app:
docker compose -f compose.dev.yml up -d
uv run pytest tests/test_webapp_analyzers.py -v
Roadmap
Veja Issues.
Contribuindo
Veja CONTRIBUTING.md.
Segurança
[!WARNING] Se você descobrir um problema de segurança, reporte-o em particular ao proprietário do repositório em vez de abrir uma issue pública.
Créditos
Agradecimentos aos doadores:
Agradecimentos aos contribuidores:
- Zeecka - (autor)
- aradhyacp
- Philip Zimmermann
- abneeeees
Agradecimentos à comunidade de código aberto: binwalk, exiftool, GraphicsMagick identify, foremost, jsteg, jphide/jpseek, openstego, outguess, pcrt, pngcheck, steghide, strings, zsteg, ...