Dopo l'uso di PhotoRec

From CGSecurity
Jump to: navigation, search

En.png English De.png Deutsch Fr.png Français It.png Italiano Ro.png Română



Dopo aver usato PhotoRec ci si potrebbe trovare in difficoltà nel districarsi con la grande quantità di file prodotti da PhotoRec. Ecco alcune idee valide per aiutare in questo frangente.

Ordinamento dei file per estensione

  • builtBackwards ha creato un unico file script eseguibile open source per Windows con AutoIt v3 chiamato PhotoRec Sorter.

PhotoRec Sorter va eseguito nella stessa directory dove sono presenti le cartelle di "recupero" e sposta ogni file in una nuova cartella corrispondente al nome dell'estensione del file (maiuscola, come per es. PDF, DOC, PPT).

Come risultato si ottiene tutti i file ordinati per estensione nelle cartelle corrispondenti.

Scaricamento sorgenti e binari eseguibili: PhotoRec Sorter Project Page --BuiltBackwards 02:10, 25 October 2008 (UTC)

  • Sempre per ordinare i file per estensione, in alternativa, si può usare questo script Python.
  • Salvare il codice seguente come file (recovery.py) ed eseguirlo con i parametri 'sorgente' e 'destinazione'

Esempio: $ python recovery.py /home/mia/file_recuperati /home/mia/file_ordinati

#!/usr/bin/env python
import os
import os.path
import shutil
import sys

source = sys.argv[1]
destination = sys.argv[2]

while not os.path.exists(source):
    source = raw_input('Enter a valid source directory\n')
while not os.path.exists(destination):
    destination = raw_input('Enter a valid destination directory\n')

for root, dirs, files in os.walk(source, topdown=False):
    for file in files:
        extension = os.path.splitext(file)[1][1:].upper()
	destinationPath = os.path.join(destination,extension)
  	
	if not os.path.exists(destinationPath):
            os.mkdir(destinationPath)
	if os.path.exists(os.path.join(destinationPath,file)):
            print 'WARNING: this file was not copied :' + os.path.join(root,file)
	else:
	    shutil.copy2(os.path.join(root,file), destinationPath)

Se si è interessati solo a file con determinate estensioni (per es. solo .jpg) si può usare il seguente comando *nix che trova tutti i file specificati nelle cartelle dei file recuperati e li copia in una nuova posizione:

$ find /percorso/file/recuperati -name \*.jpg -exec cp {} /percorso/alle/nuove/cartelle/ \;

JPEG

  • Ordinamento di file JPEG usando i metadati Exif estratti dalle foto stesse.
  • Le fotocamere Canon PowerShot memorizzano i numeri di sequenza delle immagini nei dati Exif, perciò usando un programma che può leggere queste informazioni e tramutarle in stringhe di testo come jhead, insieme al seguente script Perl, si può sostanzialmente ripristinare i file immagine JPG al loro nome originale. --Vees 01:59, 8 January 2007 (CET)
$working_dir = '.';
$jhead_bin = '/usr/local/bin/jhead';

@recovered_files = `ls $working_dir`;
foreach $file (@recovered_files) {
        chomp $file;
        @exif = `$jhead_bin -v $working_dir/$file`;
        foreach $line (@exif) { 
                if ($line =~ /Canon maker tag 0008 Value = 100(\d{1,8})$/) {
                        system("mv $working_dir/$file $working_dir/IMG_$1.JPG");
                        print "IMG_$1.JPG from $file\n";
                        last;
                }
        }
}

O usare questo script per elencare tutte le cartelle, cercare file di una certa dimensione, e piazzarli in cartelle ordinati per data:

$working_dir = '/home/myhome/';
$result_dir = '/home/myhome/photos/'
$jhead_bin = '/usr/bin/jhead';

@rec_dirs = `ls ${working_dir} | grep recup_dir`;
foreach $recup_dir (@rec_dirs) {
	print "Scanning ${recup_dir}...";
	chomp $recup_dir;
	@photos_in_recup = `find ${working_dir}${recup_dir}/*jpg -type f -size +800k`;
	foreach $photo_file (@photos_in_recup) {
		chomp $photo_file;
#print "IMG $photo_file in $recup_dir\n";
		@exif = `$jhead_bin -v $photo_file`;
#print "$jhead_bin -v $photo_file\n";
		foreach $line (@exif) {
			if ($line =~ /Time\s*:\s*([0-9]{4}):([0-9]{2}):([0-9]{2})\s[0-9:]{8}$/) {
				print "IMG $photo_file $1-$2-$3\n";
				system("mkdir ${result_dir}$1-$2-$3");
#				system("mv $photo_file $result_dir/$1-$2-$3/");
				last;
			}
		}

	}
}
  • Il seguente è un file batch per Windows che ricrea la struttura originale della directory e i nomi dei file presenti nella card (per fotocamere Canon, controllato con numerose foto provenienti da una EOS 20D), usando le informazioni EXIF del numero del file (usando ExifTool, in maniera analoga al precedente script shell). --Joey 08:36, 17 July 2008 (CEST)
@echo off
for %%f in (*.jpg) do call :process %%f
goto :eof
:process
for /f "usebackq delims=- tokens=1,2" %%a in (`exiftool -p ^"^$FileNumber^" %1`) do set gnum=%%a&set fnum=%%b
if "%gnum%"=="" goto :eof
if "%fnum%"=="" goto :eof
if not exist %gnum%CANON (
	echo Creating directory %gnum%CANON
	mkdir %gnum%CANON
)
echo Moving %1 to %gnum%CANON\_mg_%fnum%.jpg
ren %1 _mg_%fnum%.jpg>NUL
move _mg_%fnum%.jpg %gnum%CANON>NUL
goto :eof
  • Eseguire il seguente comando usando Exiv2 per rinominare tutti i file JPEG alla data corrispondente (il programma chiede nel caso si verifichi un confitto):
$ exiv2 -t rename *.jpg

Trovare i duplicati

  • Linux.png FSlint Rilevatore di duplicati per Linux
  • Linux.png Macosx.png Su Linux o Mac OS X (o dove c'è perl e 'sum'), si possono trovare i duplicati usando find_dup.
  • Linux.png Macosx.png Su Linux o Mac OSX, md5sum può essere usato per trovare i duplicati dei file (anche facendo l'md5 solamente dei primi x byte).

In questo esempio, si controlla solamente i primi 80k di recup_dir*/*.sib

for file in recup_dir.*/*.sib; do MD5=`dd count=20 bs=4k if="$file" 2> /dev/null|md5sum`; echo "$MD5 $file"; done|sort
1a07198de3486ff2ecab7859612fe7ba  - Box Clever.sib
33105f4a7997b2e2681e404b3ac895f2  - Random, Matching - 2 bars.sib
376e0c53e78e56ba6f2858d9680f8c6b  - 01aIdentifyCommonInst.sib
b0b40a516a1e26660748a0a09cdf3207  - 01ArticulationFlashcards.sib

Ogni somma di controllo è unica, perciò non ci sono duplicati.

  • Win.png Su Windows si può usare l'utility fc per trovare duplicati - il seguente file batch (non funziona su Win9x/ME) può tornare utile: --Joey 08:36, 17 July 2008 (CEST)
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET FILELIST=
FOR %%i IN (*) DO (
	FOR %%j IN (!FILELIST!) DO (
		IF %%~zi EQU %%~zj (
			fc /b "%%~i" "%%~j">NUL && echo "%%~i" = "%%~j"
		)
	)
	SET FILELIST=!FILELIST! "%%~i"
)
ENDLOCAL
  • Su Windows si può aggiungere l'opzione "/r" (senza virgolette) dopo entrambi i "for" nello file batch precedente.
  • Su macchine di tipo Unix, si può usare fdupes insieme al seguente script per generare uno script shell con il comando rm per rimuovere tutti i file duplicati:
#!/bin/sh
OUTF='rm-dups.sh'

if [ -e $OUTF ]; then
  echo "File $OUTF already exists."
  exit 1;
fi

echo "#!/bin/sh" > $OUTF
fdupes -r -f . |sed -r 's/(.+)/rm \1/' >> $OUTF
chmod +x $OUTF

MP3, Ogg vorbis...

Molti file mp3 e ogg contengono delle informazioni al proprio interno sul Title, Album e Autore. Se è il vostro caso si può usare con profitto EasyTag per rinominare automaticamente i file mp3 e ogg recuperati usando queste informazioni.

MS Office

  • Per leggere un documento creato con MS Office (doc/xls/ppt/...) che MS Office si rifiuta di aprire, si può provare con OpenOffice. OpenOffice.org è un progetto di suite di programmi per ufficio multipiattaforma e multilingua open-source. OO è compatibile con tutte le principali suite per ufficio, ed è scaricabile, utilizzabile e ridistribuibile gratuitamente.
  • Alcuni documenti di MS Office (xls/ppt/...) possono essere recuperati modificandone l'estensione in quella per Word, .doc - perciò sarà necessario rinominare questi file.

MS Outlook

  • To recover a broken Outlook PST file, try Microsoft Scanpst