SDelete версии 2.05

Марк Руссинович

Опубликовано: 29 сентября 2023 г.

DownloadСкачать SDelete(304 КБ)

Введение

Одна из функций соответствия требованиям C2 (Win2K) Windows NT/2000 заключается в том, что он реализует защиту повторного использования объектов. Это означает, что при выделении файлового пространства или виртуальной памяти приложение не может просматривать данные, ранее хранящиеся в ресурсах Windows NT/2K, выделенных для него. Windows NT нулю заполняет память и ноль секторов на диске, где файл помещается, прежде чем он представляет любой тип ресурса приложению. Однако повторное использование объекта не определяет, что пространство, которое занимает файл, прежде чем удалить его, будет отсчитываться от нуля. Это связано с тем, что Windows NT/2K разработан с учетом того, что операционная система управляет доступом к системным ресурсам. Однако если операционная система не активна, можно использовать редакторы необработанных дисков и средства восстановления для просмотра и восстановления данных, которые операционная система получила. Даже при шифровании файлов с помощью файловой системы Win2K (EFS) исходные незашифрованные данные файла остаются на диске после создания новой зашифрованной версии файла.

Единственный способ убедиться, что удаленные файлы, а также файлы, зашифрованные с помощью EFS, защищены от восстановления, — использовать безопасное приложение для удаления. Безопасное удаление приложений перезаписывает удаленные данные на диске с помощью методов, которые отображаются, чтобы сделать данные диска неустранимыми, даже используя технологию восстановления, которая может считывать шаблоны в магнитных носителях, которые показывают слабо удаленные файлы. SDelete (Secure Delete) — это такое приложение. SDelete можно использовать как для безопасного удаления существующих файлов, так и для безопасного удаления всех данных файлов, которые существуют в нераспределенных участках диска (включая файлы, которые уже удалены или зашифрованы). SDelete реализует очистку и очистку министерства обороны стандарта DOD 5220.22-M, чтобы дать вам уверенность в том, что после удаления с помощью SDelete ваши данные файлов ушли навсегда. Обратите внимание, что SDelete безопасно удаляет данные файлов, но не имена файлов, расположенные в свободном пространстве на диске.

Использование SDelete

SDelete — это программа командной строки, которая принимает ряд параметров. В любом использовании он позволяет удалить один или несколько файлов и (или) каталогов или очистить свободное пространство на логическом диске. SDelete принимает дикие карта символы в составе описателя каталога или файла.

Использование.

sdelete [-p passes] [-r] [-s] [-q] [-f] <file or directory [...]>
sdelete [-p passes] [-q] [-z|-c] <drive letter [...]>
sdelete [-p passes] [-q] [-z|-c] <physical disk number [...]>
Параметр Описание
-c Очистить свободное место.
-f Принудительное применение аргументов, содержащих только буквы, которые следует рассматривать как файл или каталог, а не диск.
Не требуется, если аргумент содержит другие символы (разделители путей или расширения файлов, например).
-p Указывает число проходов перезаписи (по умолчанию — 1).
-q Тихий режим.
-r Удалите атрибут только для чтения.
-s Рекурсивные подкаталоги.
-Z Нулевое свободное место (хорошо подходит для оптимизации виртуального диска).
-nobanner Не отображайте баннер запуска и сообщение об авторских правах.
  • Диски не должны содержать томов для очистки.
  • Для букв диска включите :, например D:.

Как работает SDelete

Безопасное удаление файла, не имеющего специальных атрибутов, относительно прямо вперед: программа безопасного удаления просто перезаписывает файл с помощью шаблона безопасного удаления. Более сложно удалить сжатые, зашифрованные и разреженные файлы Windows NT/2K, а также безопасно очищать свободное место на диске.

Сжатые, зашифрованные и разреженные управляются NTFS в 16 блоках кластера. Если программа записывает в существующую часть такого файла NTFS, выделяет новое место на диске для хранения новых данных и после записи новых данных освобождает кластеры, ранее занятые файлом. NTFS принимает этот консервативный подход по причинам, связанным с целостностью данных, и в случае сжатых и разреженных файлов, если новое выделение больше того, что существует (новые сжатые данные больше старых сжатых данных). Таким образом, перезапись такого файла не будет выполнена при удалении содержимого файла с диска.

Для обработки этих типов файлов SDelete использует API дефрагментации. Используя API дефрагментации, SDelete может точно определить, какие кластеры на диске занимают данные, принадлежащие сжатым, разреженным и зашифрованным файлам. Когда SDelete знает, какие кластеры содержат данные файла, он может открыть диск для необработанного доступа и перезаписать эти кластеры.

Очистка свободного места представляет собой еще одну проблему. Так как FAT и NTFS не предоставляют никаких средств для приложения напрямую обращаться к свободному пространству, SDelete имеет один из двух вариантов. Первое заключается в том, что он может, как и для сжатых, разреженных и зашифрованных файлов, открыть диск для необработанного доступа и перезаписать свободное пространство. Этот подход страдает от большой проблемы: даже если SDelete были закодированы, чтобы быть полностью способными вычислять части свободного пространства дисков NTFS и FAT (что-то, что не тривиально), это приведет к риску столкновения с активными операциями файлов, происходящими в системе. Например, предположим , что SDelete определяет, что кластер свободен, и только в тот момент драйвер файловой системы (FAT, NTFS) решает выделить кластер для файла, который изменяет другое приложение. Драйвер файловой системы записывает новые данные в кластер, а затем SDelete поставляется и перезаписывает недавно записанные данные: новые данные файла исчезли. Проблема еще хуже, если кластер выделяется для метаданных файловой системы, так как SDelete повреждает структуры файловой системы на диске.

Второй подход, и один SDelete принимает, заключается в косвенном перезаписи свободного пространства. Во-первых, SDelete выделяет самый большой файл, который он может. SDelete делает это с помощью не кэшированных операций ввода-вывода файла, чтобы содержимое кэша файловой системы NT не было выброшено и заменено бесполезными данными, связанными с пробелами SDelete. Так как не кэшированные операции ввода-вывода должны быть выровнены в секторе (512-байтов), может быть некоторое левое пространство, которое не выделяется для SDelete-файла , даже если SDelete не может дополнительно увеличить файл. Чтобы получить любое оставшееся пространство SDelete , далее выделяет самый большой кэшированный файл, который он может. Для обоих этих файлов SDelete выполняет безопасную перезапись, обеспечивая безопасное очистку всего места на диске, которое ранее было свободно.

На дисках NTFS задание SDelete не обязательно выполняется после выделения и перезаписи двух файлов. SDelete также должен заполнить все существующие свободные части ФАЙЛОВой таблицы NTFS (Master File Table) с файлами, которые соответствуют записи MFT. Обычно запись MFT составляет 1 КБ размер, а для каждого файла или каталога на диске требуется по крайней мере одна запись MFT. Небольшие файлы хранятся полностью в пределах их записи MFT, а файлы, которые не соответствуют записи, выделяются кластерами за пределами MFT. Все SDelete необходимо сделать, чтобы обеспечить свободное пространство MFT, выделяет самый большой файл, который он может - когда файл занимает все доступное пространство в NTFS записи MFT, не позволит файлу получить больше, так как на диске отсутствуют бесплатные кластеры (они хранятся двумя файлами SDelete ранее). Затем SDelete повторяет процесс. Когда SDelete больше не может создать новый файл, он знает, что все ранее свободные записи в MFT были полностью заполнены безопасно перезаписанными файлами.

Чтобы перезаписать имена файлов, которые вы удаляете, SDelete переименовывает файл 26 раз, при каждом замене каждого символа имени файла на последовательный алфавитный символ. Например, первое переименование foo.txt будет в "AAA". AAA".

Причина, по которой SDelete не безопасно удаляет имена файлов при очистке свободного места на диске, заключается в том, что их удаление потребует прямого управления структурами каталогов. Структуры каталогов могут иметь свободное место, содержащее удаленные имена файлов, но свободное пространство каталога недоступно для выделения другим файлам. Таким образом, SDelete не имеет способа выделения этого свободного пространства, чтобы он смог безопасно перезаписать его.

DownloadСкачать SDelete(304 КБ)

Выполняется:

  • Клиент: Windows 10 и выше.
  • Сервер: Windows Server 2012 и выше.
  • Nano Server: 2016 и выше.