
Un toolkit forense per immagini digitali open-source
Un set di strumenti forensi per immagini digitali open source
"L'Analisi Forense delle Immagini è l'applicazione della scienza dell'immagine e della competenza di dominio per interpretare il contenuto di un'immagine e/o l'immagine stessa in ambito legale. Le principali sottodiscipline dell'Analisi Forense delle Immagini con applicazioni per le forze dell'ordine includono: Fotogrammetria, Confronto Fotografico, Analisi del Contenuto e Autenticazione delle Immagini." (Scientific Working Group on Imaging Technologies)
Sherloq è un progetto di ricerca personale volto a implementare un ambiente completamente integrato per la forense digitale delle immagini. Non è inteso come uno strumento automatico che decida se un'immagine è falsificata o meno (quello probabilmente non esisterà mai...), ma come un compagno per sperimentare vari algoritmi trovati negli ultimi articoli di ricerca e nei workshop.
Mentre molte soluzioni commerciali hanno prezzi al dettaglio elevati e spesso sono riservate solo a forze dell'ordine e agenzie governative, questo strumentario mira a essere sia un framework estensibile che un punto di partenza per chiunque sia interessato a fare esperimenti in questa particolare applicazione dell'elaborazione digitale dei segnali.
Credo fermamente che la sicurezza per oscurità sia il modo sbagliato per offrire qualsiasi tipo di servizio forense (ad esempio: "Usando questo software proprietario ti garantisco che questa foto è originale... e tu devi fidarti di me!"). Seguendo la filosofia open source, tutti dovrebbero essere in grado di provare varie tecniche per conto proprio, acquisire conoscenze e condividerle con la comunità... ancora meglio se contribuiscono con miglioramenti al codice! :)
La prima versione è stata scritta nel 2015 usando C++11 per creare un'utilità a riga di comando con molte opzioni, ma presto si è rivelata troppo complessa e poco interattiva. Quella versione poteva essere compilata con CMake dopo aver installato le librerie OpenCV, Boost e AlgLib. Questo primo proof-of-concept offriva circa l'80% delle funzionalità pianificate (vedi sotto per l'elenco completo).
Pur includendo anche nuovi algoritmi, la versione del 2017 ha aggiunto principalmente una GUI multi-finestra basata su Qt per offrire una migliore esperienza utente. Era possibile visualizzare più analisi sullo schermo ed era stato implementato un visualizzatore veloce con zoom e scorrimento per una navigazione più agevole delle immagini. Quel progetto poteva essere compilato con Qt Creator con Qt 5 e OpenCV 3 e copriva circa il 70% delle funzionalità pianificate.
Si arriva al 2020, quando ho deciso di trasferire tutto in Python (PySide2 + Matplotlib + OpenCV) per semplificare sviluppo e distribuzione. Sebbene questa iterazione sia appena iniziata e debba ancora portare tutto il codice precedente sulla nuova piattaforma, penso che questa sarà la forma finale del progetto (a meno che qualcuno non si offra volontario per sviluppare una bella applicazione web!).
Sono felice di condividere il mio codice e di entrare in contatto con chiunque sia interessato a migliorarlo o testarlo, ma tenete presente che questo repository non ha lo scopo di distribuire un prodotto finale; il mio obiettivo è solo quello di tenere traccia pubblicamente dello sviluppo di uno strumento educativo senza pretese, quindi aspettatevi bug, codice non rifinito e funzionalità mancanti! ;)
Questo elenco contiene le funzioni che il toolkit (si spera) fornirà una volta raggiunta la fase beta (NOTA: le funzioni visualizzate in corsivo all'interno del programma non sono ancora implementate!).