#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
'''Foremost''' è uno strumento da riga di comando per il recupero dei file. La tecnica utilizzata è il ''[[https://en.wikipedia.org/wiki/File_carving|data carving]]'', che utilizza le tracce degli header, dei footers e della struttura interna dei dati stessi, senza considerare i metadati del filesystem.<
>
Foremost può operare sia su file immagine, sia su supporti fisici quali unità flash, hard disk, schede di memoria ecc. Supporta diversi tipi di filesystem (Fat16/32, Ext3/4, NTFS ecc.) e moltissimi formati di file (`.jpg`, `.png`, `.zip`, `.avi`, `.pdf`, `.doc`, `.exe`, ecc.).
Sviluppato originariamente da enti governativi statunitensi quali l'Ufficio Investigazioni speciali della ''United States Air Force'' e il ''CISR'' (''Center for Information Systems Security Studies and Research''), è stato successivamente reso di pubblico dominio.
{{{#!wiki important
Per evitare sovrascritture accidentali di dati, si raccomanda di eseguire il programma su un file immagine di backup a basso livello (a tal fine è possibile usare lo strumento [[AmministrazioneSistema/BackupDelSistema#Backup_con_dd|dd]]), anziché operare direttamente sul supporto di memoria dal quale si vogliono recuperare i file.
}}}
= Installazione =
[[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://foremost|foremost]].
= Utilizzo =
Durante l'estrazione dei dati, il programma esegue di default le seguenti azioni:
* crea una cartella chiamata `output` nella stessa posizione dal quale viene lanciato il comando (ad esempio la '''Home''' dell'utente, se il terminale è su `~`).
* crea all'interno di questa directory delle sottocartelle corrispondenti al formato dei file che vengono recuperati (ad esempio `jpg`, `txt`, `zip` ecc.). Per consultare tutti i formati di file riconosciuti consultare la [[#ulteriori_risorse|pagina man]] del programma.
* al termine della procedura elimina eventuali sottocartelle vuote, per le quali non sono stati trovati file corrispondenti.
* crea all'interno della cartella di salvataggio il file `audit.txt`, contenente un report delle azioni svolte dal programma.
* attribuisce ai file eventualmente trovati un nome ricavato dall'indirizzo del settore sul quale sono allocati (non considera perciò il nome originario, in quanto il programma non tiene conto dei metadati del filesystem).
== Utilizzo di base ==
Supponendo di voler cercare dei file eliminati in una partizione `/dev/sdb1`, digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo foremost -i /dev/sdb1
}}}
== Ricerca da file immagine ==
Per il recupero da file di immagine è sufficiente sostituire nel comando il nome del disco o partizione (ad esempio `/dev/sda`) con il nome stesso del file (ad esempio `backup.dd`).
== Ricerca di file specifici ==
Per cercare soltanto determinati tipi di file è inoltre possibile usare l'opzione `-t`, con i formati di file separati da una virgola. Ad esempio per cercare in una partizione `/dev/sdb1` soltanto file `.doc` e `.pdf`, digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo foremost -t doc,pdf -i /dev/sdb1
}}}
È possibile inoltre usare l'opzione `-t all` per il recupero di tutti i tipi di file conosciuti.
== Scelta della cartella di salvataggio ==
{{{#!wiki important
Per evitare sovrascritture accidentali, con consequente impossibilità di recupero dei file, si raccomanda di __non__ impostare la destinazione di salvataggio nello stesso disco e/o partizione in cui sono presenti i file da recuperare.
}}}
Per specificare una determinata cartella di salvataggio (diversa da `output`, ad esempio denominata `dati`) è possibile usare l'opzione `-o`, come nel seguente esempio:{{{
sudo foremost -i /dev/sdb1 -o /home/utente/dati
}}}
Qualora la cartella di destinazione non esistesse il programma provvederà a crearla.<
>
Nel caso in cui, invece, fosse già presente apparirà un messaggio simile al seguente:{{{
ERROR: /home/utente/dati is not empty
Please specify another directory or run with -T.
}}}
Come suggerito dall'output, sarà possibile a propria scelta:
* usare una destinazione differente
* usare l'opzione `-T`. Quest'ultima provvede a creare una nuova cartella con lo stesso nome, ma inoltre contrassegnata con ora e data (prendendo ancora in esame l'esempio precedente, verrà nominata `/home/utente/dati_Sat_Sep_25_16_32_38_2021`).
{{{#!wiki tip
In questo modo sarà possibile ripetere più volte la ricerca di file, salvando i dati estratti in diverse cartelle, senza modifiche ai risultati di eventuali precedenti operazioni di recovery.
}}}
= File di configurazione =
Il file di configurazione di '''Foremost''' è `/etc/foremost.conf`.
All'interno del file stesso è possibile consultare le istruzioni (in inglese) utili per aggiungere alla ricerca altri formati di file.<
>
A tale scopo sono infatti presenti diversi esempi commentati che mostrano la sintassi da utilizzare.
Basterà quindi aprire il file, con [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]], per decommentare le righe relative ai formati di proprio interesse, aggiungendoli alla ricerca.
Di seguito viene riportato un esempio relativo ai file `.tif`:{{{
# TIF
# tif y 200000000 \x49\x49\x2a\x00
}}}
La sintassi della seconda riga nell'esempio contiene i seguenti campi (separati da '''TAB'''), da sinistra verso destra:
* estensione
* [[https://it.wikipedia.org/wiki/Sensibile_alle_maiuscole|case sensitive]] ('''y''' in caso positivo e '''n''' in caso negativo)
* dimensione massima del file (espressa in byte)
* [[https://it.wikipedia.org/wiki/Header_file|header]]
* footer (opzionale, può essere omesso)
{{{#!wiki note
Diversi formati di file presenti in `/etc/foremost.conf` sono già supportati nativamente. È infatti presente in corrispondenza la dicitura: «`(NOTE THESE FORMATS HAVE BUILTIN EXTRACTION FUNCTION)`».
}}}
== Aggiungere supporto a nuovi formati di file ==
Basandosi sull'esempio precedente, è quindi possibile aggiungere alla ricerca ulteriori formati, non presenti nel file di configurazione.
Di seguito viene riportato l'esempio di aggiunta dei file in formato ''[[https://it.wikipedia.org/wiki/Free_Lossless_Audio_Codec|flac]]'':{{{
flac y 30000000 \x66\x4c\x61\x43\x00\x00\x00\x22
}}}
{{{#!wiki tip
Per conoscere o controllare l'header di un tipo di file, può talvolta tornare utile il comando: `hd -c nome_file.estensione.file|head` (sostituire `nome_file` e `estensione.file` con le relative voci).
}}}
= Esempio concreto di utilizzo =
Di seguito sono illustrati tutti i passaggi necessari per estrarre dei file inavvertitamente cancellati su un ipotetico disco `/dev/sda`.<
>
Si ipotizza, inoltre, che i file da recuperare vengano salvati su un secondo disco `/dev/sdb`. Si dovrà quindi montare su quest'ultimo una cartella appositamente creata per salvare i file recuperati (ad esempio `/recovery/foremost`), modificando infine i permessi di quest'ultimi.
0. Se necessario, [[Hardware/DispositiviPartizioni/IndividuarePartizioni|individuare]] le partizioni presenti.
0. [[AmministrazioneSistema/ComandiBase#mkdir|Creare]] sul disco `/dev/sda` la cartella `/recovery/foremost`:{{{
sudo mkdir -p /recovery/foremost
}}}
0. [[AmministrazioneSistema/ComandiBase#mount|Montare]] il disco `/dev/sdb` nella cartella `/recovery`:{{{
sudo mount /dev/sdb /recovery
}}}
0. Avviare '''foremost''' digitando il comando:{{{
sudo foremost -i /dev/sda -o /recovery/foremost
}}}
0. I file recuperati saranno di proprietà dell'utente '''root'''. Per cambiare i [[AmministrazioneSistema/PermessiFile|permessi]] digitare il seguente comando:{{{
sudo chown -R nomeutente:nomegruppo /recovery/foremost
}}}
sostituendo «`nomeutente:nomegruppo`» (rappresentano rispettivamente il nome dell'utente e il nome del gruppo di appartenenza; generalmente utente e gruppo hanno lo stesso identificativo).
0. Terminato il recupero, sarà possibile [[AmministrazioneSistema/ComandiBase#umount|smontare]] il disco esterno con il comando:{{{
sudo umount /dev/sdb
}}}
<>
= Ulteriori risorse =
* [[http://foremost.sourceforge.net/|Pagina ufficiale del progetto]]
* [[https://en.wikipedia.org/wiki/Foremost_(software)|Voce enciclopedica]] (in inglese)
* [[http://manpages.ubuntu.com/manpages/focal/en/man8/foremost.8.html|Pagina man]]
* [[https://linuxconfig.org/how-to-recover-deleted-files-with-foremost-on-linux | Guida originae]] (in inglese)
* [[AmministrazioneSistema/RecuperoDati|Portale recupero dati]]
----
CategoryAmministrazione