Skip to content

App per la gestione dei casi con funzionalità utili alla digital forensics, come applicazione di filtri di enhancing su immagini ( tramite shader) , gestione dei tag, dei luoghi e dei soggetti di interesse. Realizzato in react-expo, con supabase

License

Notifications You must be signed in to change notification settings

AnonymDelphiLifter/ct-confidential

Repository files navigation

C.T. Confidential - Applicazione per Investigatori in movimento

Lo sviluppo di quest'applicazione si pone nel contesto della realizzazione di un progetto per Digital Forensics. Lo scopo di quest'applicazione è quello di dare ad un investigatore gli strumenti basilari per tenere traccia dei casi affrontati e gestiti.

L'app si pone quindi l'obiettivo di registrare i casi , con note aggiuntive e tutti gli allegati ad esso riferiti ( come ad esempio foto , poi in futuro si potrà pensare di caricare altri tipi di file multimediali ). Ogni caso può essere etichettato per categoria ( "Furto con Scasso" oppure "Reato IT" o "Aggressione") e ha uno status ( "In corso", "Risolto", "Archiviato").

All'interno di ogni caso sono raccolte quindi evidenze ( file multimediali, per adesso solo foto, modificabili e manipolabili prima di essere caricate sullo storage sul cloud ) , persone coinvolte ( ognuna con un suo ruolo come "Vittima" o "Complice" o "Indiziato"), luoghi di interesse ( espressi in coordinate geografiche ).

Ogni persona può essere registrata anche con un'immagine profilo per dare un volto e avere un report più mnemonico.

Funzionamento

Un utente non loggato può usare le funzionalità base dell'applicazione come la possibilità di annotare foto (tracciando dei disegni o evidenziando alcune cose) o modificarle applicando dei filtri (come Sobel, Prewitt, Color Extraction e altri, tutti implementati tramite linguaggio shader SkSL Skai Shading Language). Per gestire effettivamente i casi l'utente deve registrarsi con una mail ( in futuro si potrà predisporre l'accesso con google o altri OAuth provider). Ogni investigatore può avere un'immagine profilo, un badge number e un dipartimento di riferimento.

Tutto il front-end è stato sviluppato con expo-react , un framework basato su javascript per creare applicazioni con performance native su ogni piattaforma. Questo framework offre nativamente centinaia di plugin utili allo scopo , come quello per manipolare le immagini e applicare filtri.

Per il back-end (che consiste di un database PostgreSQL e di uno Storage bucket ad oggetti) si è scelto di usare Supabase, il quale offre un client in javascript per integrato e funzionante, rendendo quindi lo sviluppo agevole.

Configurazione e On-boarding front-end

Per eseguire l'applicazione

  • Installare expo e tutte le dipendenze navigando all'interno del progetto e lanciando npx expo install o più semplicemente npm i
  • Installare l'applicazione Expo Go da Google Play Store o Apple AppStore
  • Lanciare da terminale dalla cartella del progetto npx expo start
  • Scannerizzare il qrcode dall'app e tutto dovrebbe funzionare

Common debug

  • Se l'app non reindirizza al progetto , dalla shell con npx expo start in esecuzione premere s per switchare tipo di build e riprovare a scansionare il qrcode
  • Se l'app rimane in fase di "Caricamento", provare a fare il refresh premendo r nella shell

Configurazione e On-boarding back-end

  • Creare un account Supabase (gratuito, si può fare login con google o github)
  • Creare un progetto vuoto
  • Dalla dashboard di supabase andare su SQL editor e eseguire lo script in ./supabase/schema.sql
  • Dalla dashboard di supabase andare su Storage e creare due buckets, uno chiamato avatars e uno chiamato files. Il primo conterrà le foto profilo degli "investigatori" , l'altro i file dei casi come foto delle persone coinvolte o media vari
  • Creare un file .env nella root del progetto e configurare le chiavi
    • EXPO_PUBLIC_SUPABASE_URL (Supabase -> Project Settings -> Data API -> Project URL -> URL)
    • EXPO_PUBLIC_SUPABASE_ANON_KEY (Supabase -> Project Settings -> API Keys -> anon public)

Come ottenere fingerprint dell'applicazione per Google Cloud Platform

npx eas credentials -p android

Step per il build in apk

Ottieni i tool Android

sudo dnf android-tools install java-21-openjdk java-21-openjdk-devel
  • Aggiungi le seguenti linee al .bashrc
# ANDROID Configuration
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/build-tools/36.0.0
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk

Configura EAS

  • Aggiungi l'id del progetto EAS con
npx eas init --id f0df8e15-d711-4791-b273-8204ba9cb049
  • Configura con
npx eas init --id f0df8e15-d711-4791-b273-8204ba9cb049
  • Pulisci il progetto e avvia la build
rm -rf node_modules 
rm package-lock.json yarn.lock
npx expo install expo-dev-client 
npx eas build --platform android --local --profile production

Compilare in apk anzichè in aab anche per la production release

  • Modifica il file eas.json aggiungendo questo l'opzione buildType per Android come segue
 "production": {
      "autoIncrement": true,
      "android": {
        "buildType": "apk"
      }
    }

Compilazione nativa e react-native-maps

Per far funzionare i componenti delle mappe sulla compilazione nativa è necessario abilitare le API Maps da Google Cloud Platform per il progetto selezionato, come riportato nella (https://docs.expo.dev/versions/latest/sdk/map-view/#deploy-app-with-google-maps)[guida]. Il problema è che per impostare le api, anche se non ti viene inizialmente addebitato nulla ( e sicuramente per il volume di chiamate API che posso fare non arriverei mai a nessun addebito) la postepay Evolution non viene accettata perchè considerata prepagata. Quindi ??? Per ora in sospeso

Ottenere script per creazione database supabase

  • Assicurarsi di avere docker installato e attivo
  • Assicurarsi di avere la password del database corretta
sudo npx supabase db dump -f supabase/schema.sql

About

App per la gestione dei casi con funzionalità utili alla digital forensics, come applicazione di filtri di enhancing su immagini ( tramite shader) , gestione dei tag, dei luoghi e dei soggetti di interesse. Realizzato in react-expo, con supabase

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published