В попытке узнать python и/или ruby, мне было интересно, как будет реализован файловый шредер? Я хотел бы, чтобы он взял файл в качестве аргумента, а затем применил алгоритм, чтобы сделать этот файл неустранимым. Возможно, позже будет добавлена поддержка нескольких файлов или даже целых каталогов.Написание файла shredder в python или ruby?
ответ
Как известно, измельчители, как правило, будут иметь различные уровни успеха в современных системах благодаря журналам, файловым системам с копированием на запись, выравниванию износа (вспышка) и другим методам, используемым в современной системе. Могу ли я захотеть check out wikipedia на некоторых подводных камнях.
Короче говоря, вам нужно будет писать непосредственно поверх существующих данных. Существует несколько разных шаблонов различного уровня безопасности, но часто, если вы перезаписываете файл примерно в 25 раз случайными данными (округляя до следующего размера блока), файл должен быть полностью невосстановимым (по крайней мере, эта копия данных). Существуют и другие методы, которые могут безопасно перезаписать его за меньшее количество проходов (3 прохода, случайные, одно, а затем нули также работают прилично).
С более новыми жесткими дисками даже одна перезапись со случайными данными достаточно, чтобы убить любую программную схему восстановления и сделать аппаратное восстановление довольно жестким. Конечно, современные системы, как правило, делают сумасшедшие вещи, которые не позволяют переписать их на самом деле. Например. В Windows есть теневые копии файлов, которые хранятся для тех, кто знает, как долго. Поскольку они, как правило, частично основаны на времени, перезапись файла не будет иметь никакого эффекта независимо от того, сколько раз вы это делаете. Аппаратная очистка обычно довольно надежна, хотя она избавляется от ВСЕХ данных; это не выборочно. – Brian
Итак, как бы перезаписать файл в его текущем местоположении? – pmilb21
@ pmilb21, вы пропустили точку. Вы не можете перезаписать файл в своем текущем месте с помощью современной файловой системы. Единственный способ уничтожить данные - размонтировать диск, открыть его как блок-устройство и уничтожить все его содержимое. – mikerobi
Поскольку это учебное упражнение, а не профессиональная попытка защитить данные. Как насчет этого: 1. Откройте длину файла. 2. Напишите 0 на одну и ту же длину файла. 3. Сохраните файл. 4. Удалите файл.
Затем создайте другую программу, которая пытается восстановить файл.
Но да, если вы хотите сделать что-то профессиональное, а не просто упражнение, загляните в ответ кицунэ.
- 1. Написание текстового файла Python
- 2. Написание Ruby Script в Perl
- 3. Написание Параллельно в два файла python
- 4. Написание простого отладчика Ruby
- 5. Написание метода тасования в Ruby
- 6. Python - Написание и постоянное обновление файла
- 7. написание текстового файла или обновление базы данных
- 8. Написание файла в Matlab
- 9. Написание Git-крючков в сценариях python/bash
- 10. Написание определенного содержимого из одного файла в другой в python
- 11. Написание сценариев Python или TCL VMD
- 12. Написание оболочки в Python?
- 13. Написание демона в python
- 14. Написание JSON в Python
- 15. Написание расширения Ruby в Go (golang)
- 16. Написание файла Ruby только с разрывами строк \ n
- 17. Ruby novice: Написание метода для чтения массивов mulitple из файла?
- 18. Написание сценариев python
- 19. Написание лучше Ruby: как отличить объекты от ложных или истинных?
- 20. Ruby или Python вместо PHP?
- 21. Написание файла txt в сборке
- 22. Написание API-файла в файл
- 23. Написание текстового файла в java
- 24. Corona Написание файла
- 25. Написание файла Определенный файл
- 26. Написание нового файла WAV
- 27. Написание текстового файла
- 28. Написание curl Почтовый вызов в Ruby
- 29. Написание простого веб-сервера в Ruby
- 30. Написание панели Minecraft в Ruby on Rails
Хм ... вы провели какое-либо исследование того, как файловые измельчители работают вообще? – FrustratedWithFormsDesigner
Да, у меня относительно базовое понимание. Обычно место памяти, где хранится файл, перезаписывается несколько раз; все 0, а затем все 1, а затем случайный ассортимент. Не так точно каждый раз, но что-то относительно похоже – pmilb21