Come posso rimuovere in modo sicuro un file utilizzando python, la funzione os.remove(path)
rimuove solo la voce di directory, ma voglio rimuovere il file in modo sicuro, simile alla funzione Apple chiamata "Secure Empty Trash" che sovrascrive casualmente il file file. Quale funzione rimuove in modo sicuro un file utilizzando questo metodo?Python rimuove il file in modo sicuro
risposta
È possibile utilizzare srm per rimuovere i file in modo sicuro. È possibile utilizzare la funzione os.system() di Python per chiamare srm.
Grazie, accetterò la tua risposta. –
Io userei "subprocess.check_call" piuttosto che "os.system", per tutti i soliti motivi. Non è necessario per il colpo di performance, il potenziale di dirottamento, ecc. Nella generazione di una shell, ed è meglio controllare automaticamente che la chiamata sia riuscita piuttosto che dimenticarsi di farlo manualmente e assumere di aver cancellato i file quando non si è veramente sicuri . – abarnert
Questo mi è servito bene. Grazie. – chilliefiber
È possibile scrivere facilmente una funzione in Python per sovrascrivere un file con dati casuali, anche ripetutamente, quindi eliminarlo. Qualcosa di simile a questo:
import os
def secure_delete(path, passes=1):
with open(path, "ba+") as delfile:
length = delfile.tell()
for i in range(passes):
delfile.seek(0)
delfile.write(os.urandom(length))
os.remove(path)
Sborsare a srm
è probabile che sia più veloce, però.
Questa è una buona idea, ma c'è un vantaggio nell'usare 'random.seed()' invece di 'os.urandom (n)' –
'os.urandom' sarà probabilmente (molto) più veloce dato che puoi ottenere di più di un byte alla volta. Ti consigliamo di generare i dati casuali in blocchi (forse da 256K a 1MB alla volta) per evitare di dover tenere tutti i dati casuali in memoria. Probabilmente sarà veloce come 'srm'. – kindall
Questo non sarà quasi sicuro come usare 'srm', e potrebbe anche non essere altrettanto veloce. L'algoritmo di Gutman è stato standardizzato per decenni per una buona ragione. E 'srm' su alcune piattaforme sfrutterà il" Secure Erase "integrato su alcuni dischi rigidi. – abarnert
È possibile utilizzare srm
, certo, è sempre possibile implementarlo facilmente in Python. Fare riferimento a wikipedia per i dati con cui sovrascrivere il contenuto del file. Osservare che, a seconda della tecnologia di archiviazione effettiva, i modelli di dati possono essere molto diversi. Inoltre, se il file si trova su una log-structured file system o anche su un file system con l'ottimizzazione copy-on-write, come Btrfs, il vostro obiettivo può essere unachievable dallo spazio utente.
Dopo aver eseguito il frullamento dell'area del disco utilizzata per archiviare il file, rimuovere l'handle del file con os.remove()
.
Se si desidera cancellare qualsiasi traccia del nome del file, è possibile provare ad allocare e riallocare un gruppo di file a caso nella stessa directory, a seconda della struttura di directory inode (lineare, binario, hash, ecc. .) Potrebbe essere molto difficile garantire che si sia sovrascritto il vecchio nome del file.
+1.Si noti che ci sono alcune piattaforme/filesystem in cui si può fare una cancellazione sicura dallo spazio utente, ma solo usando alcune API speciali fornite dal kernel/libc/fs. Il che significa che l'uso di 'srm' funzionerà, ma niente di quello che scriverai in Python (a meno che tu non sia l'API speciale di ctypes). – abarnert
Nel frattempo, probabilmente vale la pena guardare 'srm' per la tua piattaforma (o, su una piattaforma che non ce l'ha, almeno in alcuni' srm'). Ad esempio, la fonte di [OS X 10.8] (http://www.opensource.apple.com/source/srm/srm-7/srm/src/) è piuttosto semplice se si conosce C e si capisce ' fts' (che è come 'os.walk' di Python); non c'è quasi nient'altro che ingannevole. – abarnert
- 1. Elaborazione multiprocesso in Python in modo sicuro in un file
- 2. dereferenziazione sicuro in Python
- 3. Come fermare un loop infinito in modo sicuro in Python?
- 4. Un modo sicuro di leggere la directory in Python
- 5. Memorizzare in modo sicuro token Oauth nel file
- 6. Leggere dinamicamente in un file python ed eseguirlo in modo sicuro
- 7. Python rimuove l'insieme dal set
- 8. Sovrascrivere in modo sicuro le variabili Python nella RAM?
- 9. È sicuro aprire un file più volte contemporaneamente in Python?
- 10. Invia email in modo sicuro
- 11. Come posso cancellare in modo sicuro un file?
- 12. Rimuovere in modo sicuro tutto il codice html da una stringa in python
- 13. Python, la stampa esadecimale rimuove il primo 0?
- 14. Memorizza una password in modo sicuro
- 15. modo sicuro per disinstallare la vecchia versione di Python
- 16. È sicuro eliminare manualmente il file tempdb.mdf?
- 17. Come chiudere il looper di HandlerThread in modo sicuro
- 18. Come inserire in modo sicuro il codice nel database mySQL
- 19. Come posso chiudere il mio software in modo sicuro?
- 20. Come archiviare in modo sicuro la password del database in Python?
- 21. Python Pandora DataFrame rimuove le celle vuote
- 22. Il file go bytes.buffer è sicuro?
- 23. Codice python più sicuro in esecuzione
- 24. Trasmetti automaticamente da doppio a decimale in modo sicuro: il seguente è sicuro?
- 25. Come pubblicare StringBuffer in modo sicuro?
- 26. In che modo geom_point rimuove le righe contenenti valori mancanti?
- 27. Come eliminare in modo sicuro più puntatori
- 28. È possibile rimuovere in modo sicuro i riferimenti ai file nei file project.pbxproj di XCode?
- 29. in modo sicuro l'iterazione di WeakKeyDictionary e WeakValueDictionary
- 30. Thunderbird 31.6 rimuove il doctype
questa non è una funzionalità di un linguaggio di programmazione. questa è una funzionalità del file system/sistema operativo/dispositivo di archiviazione. – Elazar
IIRC, cosa Secure Erase Trash in realtà non è quello di scollegare tutti i file, poi fare un single-passare la cancellazione casuale immediatamente, poi dare il via una cancellazione 35-pass standard nel fondo. – abarnert