PDA

View Full Version : [WIN32] Come cancellare stabilmente i file


tomminno
11-11-2007, 22:04
Sotto Windows quali API è possibile usare per cancellare file in modo che non possano essere recuperati per lo meno con i classici programmi di recupero dati?

71104
11-11-2007, 23:46
Sotto Windows quali API è possibile usare per cancellare file in modo che non possano essere recuperati per lo meno con i classici programmi di recupero dati? azzerali fisicamente e poi cancellali :p

edit - nel tuo programma magari metti anche un'opzione che permette di regolare quante volte gli zeri vengono scritti sul file. questo perché ho letto da qualche parte (forse proprio su questo forum) che per renedere i dati di un hard disk veramente irrecuperabili (anche con attrezzature da laboratorio) bisognerebbe sovrascriverli almeno 7 volte.

das
12-11-2007, 09:18
azzerali fisicamente e poi cancellali :p

edit - nel tuo programma magari metti anche un'opzione che permette di regolare quante volte gli zeri vengono scritti sul file. questo perché ho letto da qualche parte (forse proprio su questo forum) che per renedere i dati di un hard disk veramente irrecuperabili (anche con attrezzature da laboratorio) bisognerebbe sovrascriverli almeno 7 volte.

Solo se lo smonti però. Comunque il manuale del pgp dice 7 volte per i normali laboratori, all'nsa molto oltre ma non si sa esattamente.
Però non li devi sovrascrivere solo con zeri ma con dati casuali altrimenti il recupero è molto più facile.

tomminno
12-11-2007, 10:38
azzerali fisicamente e poi cancellali :p

edit - nel tuo programma magari metti anche un'opzione che permette di regolare quante volte gli zeri vengono scritti sul file. questo perché ho letto da qualche parte (forse proprio su questo forum) che per renedere i dati di un hard disk veramente irrecuperabili (anche con attrezzature da laboratorio) bisognerebbe sovrascriverli almeno 7 volte.

Ma posso essere sicuro che quello che cerco di sovrascrivere finisce sugli stessi settori dell'HD del vecchio file o per qualche motivo dovuto all'OS potrebbe essere spostato da qualche altra parte?
Apro il file in scrittura e comincio a scriverci dentro rumore bianco per la dimensione del file esistente, tutto qua?
La storia dei 7 tentativi la conosco anch'io. Chissà che bel casino magnetico c'è nei settori!

fabianoda
12-11-2007, 11:19
Ma posso essere sicuro che quello che cerco di sovrascrivere finisce sugli stessi settori dell'HD del vecchio file o per qualche motivo dovuto all'OS potrebbe essere spostato da qualche altra parte?
Apro il file in scrittura e comincio a scriverci dentro rumore bianco per la dimensione del file esistente, tutto qua?
La storia dei 7 tentativi la conosco anch'io. Chissà che bel casino magnetico c'è nei settori!

Beh, se tu vai in overwrite non hai problemi - cioè, se non cambi la dimensione del file non ci dovrebbe essere alcun motivo per cui l'OS dovrebbe spostare il file, no?

71104
12-11-2007, 13:45
Beh, se tu vai in overwrite non hai problemi - cioè, se non cambi la dimensione del file non ci dovrebbe essere alcun motivo per cui l'OS dovrebbe spostare il file, no? esatto, solamente che non si sa mai; voglio dire, questa questione dipende strettamente dagli algoritmi implementati dallo specifico file system. però a rigor di logica non vedo motivo di spostare i settori di un file già esistente la cui dimensione non sta neanche cambiando.

71104
12-11-2007, 13:51
qualche altra accortezza: secondo me nell'aprire il file da azzerare sarebbe meglio passare alla CreateFile i flags FILE_FLAG_NO_BUFFERING e FILE_FLAG_WRITE_THROUGH. e casomai per fare tutto in una botta passagli pure FILE_FLAG_DELETE_ON_CLOSE.

71104
12-11-2007, 14:00
ho cercato delle informazioni su Google circa il cosiddetto wiping dei files, il problema discusso in questo thread. ho trovato questo:
http://www.koders.com/delphi/fid8DDD90FB726F1A3E3CE34223004C98A125AB7F46.aspx?s=md5

e gli ho dato un'occhiata molto molto rapida... a prima vista mi sembra che utilizzi proprio il metodo suggerito da me (apre il file coi flag che ho scritto prima e ci scrive un buffer precedentemente azzerato).

tomminno
13-11-2007, 13:22
Per usare il flag FILE_FLAG_NO_BUFFERING c'è bisogno che la scrittura avvenga per dimensioni multiple del settore, questo comporta automaticamente un ridimensionamento del file (a trovarlo un file multiplo di 4096...).
Anche se in generale questo non dovrebbe causare lo spostamento del file, la certezza non c'è.

andbin
13-11-2007, 13:33
Per usare il flag FILE_FLAG_NO_BUFFERING c'è bisogno che la scrittura avvenga per dimensioni multiple del settoreCi sono 3 restrizioni con questo flag:
- La posizione nel file deve essere multiplo della dimensione di un settore.
- Il numero di byte deve essere multiplo della dimensione di un settore.
- Il buffer in memoria deve essere allineato al multiplo della dimensione di un settore.

questo comporta automaticamente un ridimensionamento del file (a trovarlo un file multiplo di 4096...).
Anche se in generale questo non dovrebbe causare lo spostamento del file, la certezza non c'è.Se si va in riscrittura, non c'è alcun spostamento dei file. E se non si supera l'ultimo cluster del file, nessun cluster in più viene usato.
Es.: cluster da 4096 byte, se il file è lungo 5000 byte, posso riscrivere fino a 8192 byte ed userò solo i 2 cluster già usati dal file.

cionci
13-11-2007, 13:34
Multiplo del cluster direi...in ogni caso l'ultimo cluster se non è pieno è comunque riservato solo al file che lo usa parzialmente.