SDelete v2.04
Por Mark Russinovich
Publicado: 25 de novembro de 2020
Baixar SDelete(518 KB)
Introdução
Uma característica do Windows conformidade C2 (Win2K) do NT/2000 é que implementa a proteção de reutilização de objetos. Isto significa que quando uma aplicação atribui espaço de ficheiro ou memória virtual é incapaz de visualizar dados que foram previamente armazenados nos recursos Windows NT/2K atribui para o mesmo. Windows NT preenche a memória zero e zeros os sectores do disco onde um ficheiro é colocado antes de apresentar qualquer tipo de recurso a uma aplicação. No entanto, a reutilização de objetos não dita que o espaço que um ficheiro ocupa antes de ser eliminado seja zero. Isto porque Windows NT/2K foi concebido com o pressuposto de que o sistema operativo controla o acesso aos recursos do sistema. No entanto, quando o sistema operativo não está ativo, é possível utilizar editores de discos brutos e ferramentas de recuperação para visualizar e recuperar dados que o sistema operativo tem transações. Mesmo quando encripta ficheiros com o Sistema de Ficheiros Encriptados (EFS) do Win2K, os dados de ficheiros não encriptados originais de um ficheiro são deixados no disco após a criação de uma nova versão encriptada do ficheiro.
A única forma de garantir que os ficheiros eliminados, bem como os ficheiros que encripta com o EFS, estão a salvo da recuperação é utilizar uma aplicação de exclusão segura. As aplicações de eliminação segura substituem os dados do ficheiro eliminado no disco utilizando técnicas que são mostradas para tornar os dados do disco irrecuperáveis, mesmo usando tecnologia de recuperação que pode ler padrões em meios magnéticos que revelam ficheiros fracamente eliminados. SDelete (Secure Delete) é uma aplicação deste tipo. Pode utilizar o SDelete tanto para eliminar de forma segura os ficheiros existentes, como para apagar de forma segura quaisquer dados de ficheiros que existam nas partes não afetadas de um disco (incluindo ficheiros que já tenha eliminado ou encriptado). A SDelete implementa o Departamento de Defesa, limpando e higienizando o DOD 5220.22-M, para lhe dar confiança de que uma vez eliminado com a SDelete,os seus dados de ficheiro desapareceram para sempre. Note que o SDelete elimina de forma segura os dados dos ficheiros, mas não arquiva nomes localizados no espaço de disco gratuito.
Usando SDelete
SDelete é um utilitário de linha de comando que requer várias opções. Em qualquer utilização, permite-lhe apagar um ou mais ficheiros e/ou diretórios, ou limpar o espaço livre num disco lógico. SDelete aceita caracteres wild card como parte do diretório ou especificador de arquivo.
Utilização: sdelete [-p passes] [-r] [-s] [-q] ficheiro ou diretório > [...]
sdelete [-p passes] [-z|-c [por cento livre]] carta de unidade [...] >>
| Parâmetro | Descrição |
|---|---|
| -c | Limpar espaço livre. Especifique uma quantidade de espaço de opção para deixar livre para uso por um sistema de funcionamento. |
| -p | Especifica o número de passes de substituição (o padrão é 1). |
| -r | Remova Read-Only atributo. |
| -s | Repetir subdiretivas. |
| -z | Espaço livre zero (bom para otimização de disco virtual). |
| -nobanner | Não exiba o banner de arranque e a mensagem de direitos autorais. |
Como funciona a SDelete
Eliminar de forma segura um ficheiro que não tenha atributos especiais é relativamente simples: o programa de eliminação segura simplesmente substitui o ficheiro com o padrão de exclusão seguro. O que é mais complicado é eliminar de forma segura Windows ficheiros NT/2K comprimidos, encriptados e escassos e limpar de forma segura espaços livres de discos.
Comprimidos, encriptados e escassos são geridos pela NTFS em blocos de 16 clusters. Se um programa escrever a uma parte existente de tal ficheiro, o NTFS atribui um novo espaço no disco para armazenar os novos dados e, após a escrita dos novos dados, os clusters são previamente ocupados pelo ficheiro. A NTFS toma esta abordagem conservadora por razões relacionadas com a integridade dos dados, e no caso de ficheiros comprimidos e escassos, no caso de uma nova atribuição ser maior do que a existente (os novos dados comprimidos são maiores do que os dados comprimidos antigos). Assim, a sobreescrita de tal ficheiro não conseguirá eliminar o conteúdo do ficheiro do disco.
Para lidar com este tipo de ficheiros, a SDelete baseia-se na API desfragmentação. Utilizando a API desfragmentação, a SDelete pode determinar com precisão quais os clusters de um disco que são ocupados por dados pertencentes a ficheiros comprimidos, escassos e encriptados. Uma vez que a SDelete saiba quais os clusters que contêm os dados do ficheiro, pode abrir o disco para acesso bruto e substituir esses clusters.
A limpeza do espaço livre apresenta outro desafio. Uma vez que a FAT e a NTFS não fornecem meios para uma aplicação para abordar diretamente o espaço livre, a SDelete tem uma de duas opções. A primeira é que pode, como faz para ficheiros comprimidos, escassos e encriptados, abrir o disco para acesso cru e substituir o espaço livre. Esta abordagem sofre de um grande problema: mesmo que a SDelete fosse codificada para ser totalmente capaz de calcular as porções espaciais livres de unidades NTFS e FAT (algo que não é trivial), correria o risco de colisão com operações de ficheiros ativos que ocorrem no sistema. Por exemplo, digamos que a SDelete determina que um cluster é gratuito, e nesse momento o controlador do sistema de ficheiros (FAT, NTFS) decide alocar o cluster para um ficheiro que outro pedido está a modificar. O controlador do sistema de ficheiros escreve os novos dados para o cluster, e então sDelete aparece e substitui os dados recentemente escritos: os novos dados do ficheiro desapareceram. O problema é ainda pior se o cluster for atribuído para metadados do sistema de ficheiros, uma vez que o SDelete irá corromper as estruturas do sistema de ficheiros em disco.
A segunda abordagem, e a que sDelete toma, é substituir indiretamente o espaço livre. Primeiro, a SDelete atribui o maior ficheiro que puder. A SDelete faz isto utilizando o ficheiro I/O não em cache para que o conteúdo da cache do sistema de ficheiros NT não seja descartado e substituído por dados inúteis associados ao ficheiro de armazenamento espacial da SDelete. Como o ficheiro não em cache I/O deve estar alinhado (512 byte), pode haver algum espaço que não seja atribuído para o ficheiro SDelete mesmo quando a SDelete não possa aumentar ainda mais o ficheiro. Para agarrar qualquer espaço restante SDelete em seguida aloca o maior arquivo em cache que pode. Para ambos os ficheiros, a SDelete executa um overwrite seguro, garantindo que todo o espaço do disco que era anteriormente livre fica limpo de forma segura.
Na NTFS conduz o trabalho da SDeletenão é necessariamente através de depois de atribuir e substituir os dois ficheiros. A SDelete também deve preencher quaisquer porções livres existentes do NTFS MFT (Master File Table) com ficheiros que se encaixem dentro de um registo MFT. Um registo MFT é tipicamente de 1KB de tamanho, e cada ficheiro ou diretório de um disco requer pelo menos um registo MFT. Os ficheiros pequenos são armazenados inteiramente dentro do seu registo MFT, enquanto os ficheiros que não se encaixam num registo são agrupamentos atribuídos fora do MFT. Tudo o que a SDelete tem de fazer para cuidar do espaço MFT gratuito é alocar o maior ficheiro que puder - quando o ficheiro ocupa todo o espaço disponível num MFT Record NTFS impedirá que o ficheiro fique maior, uma vez que não há aglomerados gratuitos no disco (estão detidos pelos dois ficheiros que a SDelete já tinha atribuído). SDelete então repete o processo. Quando a SDelete já não consegue sequer criar um novo ficheiro, sabe que todos os registos anteriormente gratuitos no MFT foram completamente preenchidos com ficheiros bem substituídos.
Para substituir os nomes de ficheiros de um ficheiro que apaga, a SDelete rebatiza o ficheiro 26 vezes, substituindo cada personagem do nome do ficheiro por um carácter alfabético sucessivo. Por exemplo, o primeiro renome de "foo.txt" seria "AAA. AAA".
A razão pela qual a SDelete não apaga de forma segura os nomes dos ficheiros quando limpa o espaço livre do disco é que a sua eliminação exigiria manipulação direta das estruturas do diretório. As estruturas de diretório podem ter espaço livre contendo nomes de ficheiros apagados, mas o espaço de diretório gratuito não está disponível para alocação a outros ficheiros. Assim, a SDelete não tem como alocar este espaço livre para que possa substitui-lo de forma segura.
Baixar SDelete(518 KB)
Continua:
- Cliente: Windows Vista e superior
- Servidor: Windows Server 2008 e mais alto
- Nano Server: 2016 e mais alto