SDelete v2.04

Av Mark Russinovich

Publicerad: 25 november 2020

Laddaned Ladda ned SDelete(518 KB)

Introduktion

En funktion i Windows NT/2000-s (Win2K) C2-kompatibilitet är att den implementerar skydd för återanvändning av objekt. Det innebär att när ett program allokerar filutrymme eller virtuellt minne kan det inte visa data som tidigare lagrades i de resurser som Windows NT/2K allokerar för den. Windows NT nollfyller minnet och nollar sektorerna på disken där en fil placeras innan någon av resurstyper presenteras för ett program. Återanvändning av objekt kräver dock inte att utrymmet som en fil tar upp innan den tas bort nollställs. Det beror på Windows NT/2K har utformats med antagandet att operativsystemet styr åtkomsten till systemresurser. Men om operativsystemet inte är aktivt är det möjligt att använda redigerare för rådatadiskar och återställningsverktyg för att visa och återställa data som operativsystemet har frisatt. Även om du krypterar filer med Win2K:s krypterande filsystem (EFS) lämnas filens ursprungliga okrypterade fildata kvar på disken när en ny krypterad version av filen har skapats.

Det enda sättet att se till att borttagna filer, samt filer som du krypterar med EFS, är säkra från återställning är att använda ett säkert borttagningsprogram. Program för säker borttagning skriver över en borttagna fils data på disken med hjälp av tekniker som visas för att göra diskdata oåterkalleliga, även med hjälp av återställningsteknik som kan läsa mönster i magnetiska medier som visar svaga borttagna filer. SDelete (säker borttagning) är ett sådant program. Du kan använda SDelete både för att på ett säkert sätt ta bort befintliga filer, samt för att på ett säkert sätt radera alla fildata som finns i de oallokerade delarna av en disk (inklusive filer som du redan har tagit bort eller krypterat). SDelete implementerar usa:s försvarsdepartement som rensar och rensar STANDARD DOD 5220.22-M för att ge dig förtroende för att dina fildata är borta för alltid när de väl har tagits bort med SDelete. Observera att SDelete tar bort fildata på ett säkert sätt, men inte filnamn som finns i ledigt diskutrymme.

Använda SDelete

SDelete är ett kommandoradsverktyg som tar ett antal alternativ. Vid en given användning kan du ta bort en eller flera filer och/eller kataloger, eller rensa det lediga utrymmet på en logisk disk. SDelete accepterar jokertecken som en del av katalogen eller filspecificeraren.

Användning: sdelete [-p pass] [-r] [-s] [-q] fil eller katalog > ...
sdelete [-p passes] [-z|-c [percent free]] enhetsbeteckningentt i % >>

Parameter Beskrivning
-c Rensa ledigt utrymme. Ange ett alternativ för att lämna ledigt utrymme för användning av ett system som körs.
-p Anger antalet överskrivningspasseringar (standardvärdet är 1).
-r Ta Read-Only attribut.
-s Rekursorer för underkataloger.
-z Inget ledigt utrymme (bra för optimering av virtuella diskar).
-nobanner Visa inte startbanderollen och upphovsrättsmeddelandet.

Så här fungerar SDelete

Det är relativt enkelt att ta bort en fil som inte har några särskilda attribut på ett säkert sätt: programmet för säker borttagning skriver helt enkelt över filen med mönstret för säker borttagning. Det som är svårare är att ta bort Windows NT/2K komprimerade, krypterade och glesa filer och rensa diskutrymme på ett säkert sätt.

Komprimerade, krypterade och glesa hanteras av NTFS i 16-klusterblock. Om ett program skriver till en befintlig del av en sådan fil, allokerar NTFS nytt utrymme på disken för att lagra nya data och när nya data har skrivits, så frisänder klustren som tidigare upptas av filen. NTFS tar den här försiktiga metoden på grund av dataintegritetsskäl, och när det gäller komprimerade och glesa filer, om en ny allokering är större än vad som finns (de nya komprimerade data är större än de gamla komprimerade data). Det innebär att om du skriver över en sådan fil så lyckas det inte att ta bort filens innehåll från disken.

För att hantera dessa typer av filer förlitar sig SDelete på defragmenterings-API:et. Med hjälp av defragmenterings-API:et kan SDelete avgöra exakt vilka kluster på en disk som används av data som hör till komprimerade, glesa och krypterade filer. När SDelete vet vilka kluster som innehåller filens data kan den öppna disken för rååtkomst och skriva över dessa kluster.

Att rensa ledigt utrymme är en annan utmaning. Eftersom FAT och NTFS inte ger något sätt för ett program att direkt åtgärda ledigt utrymme har SDelete ett av två alternativ. Den första är att den, precis som den gör för komprimerade, glesa och krypterade filer, kan öppna disken för rååtkomst och skriva över det lediga utrymmet. Den här metoden drabbas av ett stort problem: även om SDelete kodades för att kunna beräkna de lediga utrymmesdelen av NTFS- och FAT-enheter (något som inte är helt enkelt) skulle det innebära en risk för kollision med aktiva filåtgärder i systemet. Säg till exempel att SDelete bestämmer att ett kluster är kostnadsfritt, och just då bestämmer sig filsystemdrivrutinen (FAT, NTFS) för att allokera klustret för en fil som ett annat program ändrar. Filsystemdrivrutinen skriver nya data till klustret och sedan skriver SDelete över nyskrivna data: filens nya data är borta. Problemet är ännu värre om klustret allokeras för filsystemmetadata eftersom SDelete kommer att skada filsystemets strukturer på disken.

Den andra metoden, och den som SDelete tar, är att indirekt skriva över ledigt utrymme. Först allokerar SDelete den största filen som den kan. SDelete gör detta med hjälp av icke-cachelagrad fil-I/O så att innehållet i NT-filsystemets cache inte slängs ut och ersätts med oanvändbara data som är associerade med SDeletesutrymmesbuffret. Eftersom icke-cachelagrad fil-I/O måste vara sektorjusterad (512 byte) kan det finnas utrymme som inte allokeras för SDelete-filen även om SDelete inte kan utöka filen ytterligare. För att hämta återstående utrymme allokerar SDelete nästa största cachelagrade fil som den kan. För båda dessa filer utför SDelete en säker överskrivning, vilket säkerställer att allt diskutrymme som tidigare var ledigt rensas på ett säkert sätt.

På NTFS-enheter går SDelete-jobbetinte nödvändigtvis igenom när det har allokerat och skriver över de två filerna. SDelete måste också fylla alla befintliga kostnadsfria delar av NTFS MFT (masterfiltabell) med filer som passar i en MFT-post. En MFT-post är vanligtvis 1 kB stor och varje fil eller katalog på en disk kräver minst en MFT-post. Små filer lagras helt och hållet i sin MFT-post, medan filer som inte passar i en post allokeras kluster utanför MFT. Allt SDelete behöver göra för att ta hand om det lediga MFT-utrymmet allokerar den största filen som den kan – när filen tar upp allt tillgängligt utrymme i en MFT-post NTFS förhindrar att filen blir större, eftersom det inte finns några lediga kluster kvar på disken (de lagras av de två filerna SDelete som tidigare allokerats). SDelete upprepar sedan processen. När SDelete inte längre ens kan skapa en ny fil vet den att alla tidigare kostnadsfria poster i MFT har fyllts i med överskrivna filer på ett säkert sätt.

Om du vill skriva över filnamnen för en fil som du tar bort byter SDelete namn på filen 26 gånger, och ersätter varje tecken i filens namn med ett efterföljande alfabetiskt tecken. Det första namnet på "foo.txt" är till exempel "AAA. AAA".

Anledningen till att SDelete inte tar bort filnamn på ett säkert sätt när du rensar ledigt diskutrymme är att det skulle kräva direkt manipulering av katalogstrukturer. Katalogstrukturer kan ha ledigt utrymme som innehåller borttagna filnamn, men det lediga katalogutrymmet är inte tillgängligt för allokering till andra filer. SDelete har därför inget sätt att allokera det här lediga utrymmet så att det kan skrivas över på ett säkert sätt.

Laddaned Ladda ned SDelete(518 KB)

Körs på:

  • Klient: Windows Vista och senare
  • Server: Windows Server 2008 och senare
  • Nano Server: 2016 och senare