
AperiSolve v3.7.1
Piattaforma automatizzata di steganalysis che rileva dati nascosti nelle immagini utilizzando 16 analizzatori paralleli, visualizzazione a livelli di bit e un wiki integrato per indagini CTF e forensi.
Aperi'Solve
Provalo ora: https://www.aperisolve.com
Supporta Aperi'Solve:
Aperi'Solve è una piattaforma web di steganalisi open-source che esegue analisi automatizzate sulle immagini per rilevare ed estrarre dati nascosti utilizzando strumenti e tecniche comuni di steganografia.
Caratteristiche principali
- Visualizza ogni layer di bit (LSB e altri layer) per canale dell'immagine (R/G/B/Alpha).
- Rimappatura dei colori (rimappature casuali della palette con 8 varianti generate)
- Esegue 16 analizzatori in parallelo e mostra il loro output, con badge per strumento di successo/nessun risultato e download con un clic dei file estratti:
- binwalk (archivi incorporati)
- exiftool (metadati e geolocalizzazione)
- file (rilevamento del tipo MIME e formato)
- GraphicsMagick identify (informazioni e proprietà dell'immagine)
- foremost (file recuperati)
- jsteg (estrazione LSB JPEG)
- jpseek / jphide (estrazione steganografia JPEG, con password)
- openstego (estrazione con password)
- outguess (estrazione con password, analisi approfondita)
- pcrt (controllo e riparazione PNG)
- pngcheck
- steghide (estrazione con password)
- strings
- zsteg (estrazione testo/dati LSB)
- Wiki integrata (
/wiki): un manuale di steganografia in stile HackTricks — una metodologia di triage, un cheat-sheet ad albero decisionale, pagine tecniche per supporto (immagine, audio, testo, file), e una guida per analizzatore, tutte scritte in Markdown. - Internazionalizzazione: interfaccia disponibile in inglese, francese, spagnolo, tedesco, russo, cinese e portoghese sotto URL con prefisso lingua (
/fr/,/es/, …). - Architettura a coda di worker per scaricare gli analizzatori pesanti/lenti (Redis + worker in background).
- Cache dei risultati con indirizzamento al contenuto, caching HTTP e limitazione della velocità per endpoint.
- Risultati memorizzati temporaneamente per consultazione e download successivi, poi puliti automaticamente da un job schedulato.
Aggiungere un analizzatore
Aggiungere un analizzatore è un singolo file: sottoclasse SubprocessAnalyzer, imposta alcuni attributi di classe (name, has_archive, needs_password, deep_only, display_order), e installa lo strumento nel Dockerfile. La lista di esecuzione del worker, la whitelist dei download e l'ordine nel frontend sono tutti derivati automaticamente. Vedi docs/adding-analyzer.md.
Avvio rapido (Docker)
Nel caso tu voglia ospitare la tua versione di https://www.aperisolve.com/.
Richiesto: Docker + Docker Compose.
git clone https://github.com/Zeecka/AperiSolve.git
cd AperiSolve
cp .env.example .env
docker compose up -d
Poi visita l'URL: http://localhost:5000/
Pubblicità e analytics sono disabilitati per impostazione predefinita; ogni integrazione (CUSTOM_EXTERNAL_SCRIPT, GOOGLE_ADS_TXT, SITE_BASE_URL, Sentry) è opt-in tramite variabili d'ambiente documentate in .env.example. L'app non inietta mai markup pubblicitario da sola: CUSTOM_EXTERNAL_SCRIPT carica lo script AdSense e il posizionamento è lasciato agli annunci automatici.
Architettura
Lo stack viene eseguito come servizi Docker Compose:
- web — app Flask servita da gunicorn (template Jinja + frontend vanilla JS).
- worker — un worker RQ che esegue gli analizzatori per ogni invio, distribuendo su un thread per strumento.
- cron — un job schedulato RQ che esegue la pulizia della retention fuori dal percorso delle richieste.
- initdb — un servizio one-shot che crea le tabelle e precompila il database di recupero IHDR CRC.
- postgres — memorizza metadati delle immagini e stato degli invii.
- redis — broker RQ (DB 0) e storage per limitatore di velocità (DB 1).
- rqdashboard — monitoraggio delle code, vincolato a localhost:9181.
Questa separazione mantiene gli strumenti pesanti (binwalk, foremost, zsteg, ecc.) isolati ed evita di bloccare il worker web. Invii identici sono deduplicati tramite un hash del contenuto, e le immagini derivate vengono memorizzate nella cache con intestazioni HTTP immutabili a lunga durata, quindi il traffico ripetuto è economico.
Documentazione
- docs/adding-analyzer.md — aggiungere un nuovo analizzatore.
- docs/deploy.md — il flusso di deploy in produzione basato su tag.
- CONTRIBUTING.md — setup di sviluppo, test, pagine wiki e traduzioni.
Test
uv sync --extra dev
uv run pytest -q # unit tests (no services needed)
# test end-to-end degli analizzatori attraverso l'app in esecuzione:
docker compose -f compose.dev.yml up -d
uv run pytest tests/test_webapp_analyzers.py -v
Roadmap
Vedi Issues.
Contribuire
Vedi CONTRIBUTING.md.
Sicurezza
[!WARNING] Se scopri un problema di sicurezza, segnalalo privatamente al proprietario del repository invece di aprire una issue pubblica.
Crediti
Grazie ai donatori:
Grazie ai contributori:
- Zeecka - (autore)
- aradhyacp
- Philip Zimmermann
- abneeeees
Grazie alla comunità open-source: binwalk, exiftool, GraphicsMagick identify, foremost, jsteg, jphide/jpseek, openstego, outguess, pcrt, pngcheck, steghide, strings, zsteg, ...