-
Подскажите, пожалуйста. Как удалить файл со всем, чтобы восстановить было нельзя. Заранее спасибо.
-
Затереть нулями кластеры, занимаемые файлом.
-
> Затереть нулями кластеры, занимаемые файлом.
Можно без кластеров. Если размер файла не меняеться, то перезапись его содержимого не вызовет перераспределение кластеров на которых файл находиться.
-
В общем случае сложный вопрос, есть случаи, когда [1] и [2] не сработают. Особенно сложно, если нужно стереть ещё имя файла.знать о том что файл должен быть потом стёрт совсем уже при создании файла.
-
> В общем случае сложный вопрос, есть случаи, когда [1] и > [2] не сработают.
А что это за случаи?
-
> [4] ЦУП © (22.03.08 14:10)
На NTFS нет строгого соотвествия между данными в файле и данными в его кластерах. Например сжатый файл займёт кластеров меньше чем его размер, тут [2] может не сработать. Если файл который полностью поместился в MFT, то при перезаписи методом [1] будет повреждена файловая система, при этом файл моет остатьсыя восстановимым. А при перезаписи методом [2] будет востановим. Тут Rouse_ давал ссылку на книгу "Криминалистический анализ файловых систем", там эти тонкости NTFS.
Ну и что уже применимо к любой ФС, следы файла могут быть во всяких темпах, кэшах и свопах. И, при дефрагментации, в старом расположении файла. И ещё есть флешки которые менят маппигн секторов на их физическу память, чтобы распределить "износ" флешки равномерно, тогда затираемый кластер может не совпасть с кластером файла.
-
Есть подозрение, что на NTFS поможет FSCTL_SET_ZERO_ON_DEALLOCATION, если указывать сразу при создании, не проверял. Но требует Vista.
-
А почему нельзя получить размер файла, если он > 0, открыть его в режиме Чтение/запись и перезаписать нулями? Размер не изменится, а в файле одни нули будут. А потом просто deleteFile ему сделать. Вот и удаление без восстановления.
-
> [7] TStas © (22.03.08 16:56) > А почему нельзя получить размер файла, если он > 0, открыть его в режиме > Чтение/запись и перезаписать нулями? Размер не изменится, а в файле одни нули будут. > А потом просто deleteFile ему сделать. Вот и удаление без восстановления.
А кто тебе сказал, что "перезаписываемые нули" будут перезаписываться именно в теже кластеры, где располагался файл ? (Sorry за тавтологию :) Более того, если файл, например, исходно был фрагментирован, то шансов для этого становится очень мало.
-
> [7] TStas © (22.03.08 16:56)
Уже предложено в [2]. Не будет это работать для всех файлов. Более того писать именно нулями - идея более плохая чем писать случайными даными, если файл сжат, то "запись" почти ничего не сделает.
-
Riply © (22.03.08 17:21) [8]
> Более того, если файл, например, исходно был фрагментирован, > то шансов для этого > становится очень мало.
Ты хочешь сказать, что при записи в файл он дефрагментируется ?
guav © (22.03.08 19:34) [9]
> Более того писать именно нулями - идея более плохая чем > писать случайными даными, если файл сжат, то "запись" почти > ничего не сделает.
Запись как бы скорректирует кластеры, занимаемые файлом, нет ? Или тв хочешь сказать, что зная кластер на диске, ты гарантировано скажешь, какому файлу он принадлежал в прошлом ?
-
> [10] Игорь Шевченко © (22.03.08 22:13) > Ты хочешь сказать, что при записи в файл он дефрагментируется ?
Нет, конечно. Точнее: не такое строгое утверждение. Но я неоднакратно наблюдала ( и воспроизводила) дефрагментацию файла при записи.
-
> [11] Riply © (22.03.08 22:42) > Но я неоднакратно наблюдала ( и воспроизводила) дефрагментацию файла при записи.
Имеется ввиду на NTFS
-
Riply © (22.03.08 22:42) [11]
Ничего не понимаю - есть файл, у него есть N кластеров. Содержимое файла аккуратно заполняется произвольными данными (хотя бы и нулями).
Он имеет возможность стать дефрагментированым ?
-
> [13] Игорь Шевченко © (22.03.08 22:58) > Ничего не понимаю - есть файл, у него есть N кластеров. > Содержимое файла аккуратно заполняется произвольными данными (хотя бы и нулями). > Он имеет возможность стать дефрагментированым ?
Да. Я воспроизводила, примерно, такое: Создавала файл, например, занимающий восемь кластеров с "номерами": 0..3, 128...131. И после "обычной" записи в него его картинка становилась: 0..7. Я не утверждаю, что это происходит всегда, но в моих тестах это повторилось несколько раз.
-
С заполнением нулями сжатого или разряженного файла, вообще интересно. Такое впечатление (может и неправильное), что система может вызвать FSCTL_SET_ZERO_DATA, если ей заблагорассудится :) А FSCTL_SET_ZERO_DATA может не вести "реальной" записи на диск, а только "подправить" MFT :)
-
Riply © (22.03.08 23:07) [14]
Пример в студию. Атрибуты файла, как открывала, как писала, расположение кластеров до, расположение кластеров после. Или ссылки, подтверждающие подобные случаи и/или поведение.
До того момента не верю.
-
> [10] Игорь Шевченко © (22.03.08 22:13) > Запись как бы скорректирует кластеры, занимаемые файлом, > нет ? > Или тв хочешь сказать, что зная кластер на диске, ты гарантировано > скажешь, какому файлу он принадлежал в прошлом ?
Даже если считать что достаточно разрыва связи между файлом и его данными, в NTFS обновления Data Runs всегда журналируются, поэтому, возможно, связь не будет безнадёжно утеряна в этом случае. Обычно от надёжного удаления файла хотят преде всего невостановимость самих данных, а не уничтожения информации о файле.
-
guav © (23.03.08 00:42) [17]
> в NTFS обновления Data Runs всегда журналируются
И живут там вечно ? Мне просто интересно
-
> [18] Игорь Шевченко © (23.03.08 00:49)
Нет. Но часто живут там достаточно долго. Логфайл состоит из циклического буфера страниц, т.е. всегда перезаписыватся самые старые. В NT запись начинается сначала при каждом монтировании, в более новых (2000 и новее) цикл не обрывается и при монтировании/демонтировании.
|