SDelete v2.04

Szerző: Mark Russinovich

Közzétett: 2020. november 25.

SDelete letöltése(518 KB)

Bevezetés

Az NT/2000-Windows (Win2K) C2-megfelelőség egyik funkciója, hogy objektum-újrafelhasználási védelmet valósít meg. Ez azt jelenti, hogy amikor egy alkalmazás lefoglal egy fájlterületet vagy virtuális memóriát, nem tudja megtekinteni a korábban az NT/2K által lefoglalott erőforrásokban Windows adatokat. Windows NT nulla tölti ki a memóriát, és nullára állítja a szektorokat a lemezen, ahol a fájl azelőtt van elhelyezve, hogy az erőforrástípust bemutatja egy alkalmazásnak. Az objektumok újrafelhasználása azonban nem szabja meg, hogy a fájlok által a törlés előtt elfoglalt terület nullára legyen oltva. Ennek az az oka Windows hogy az NT/2K-t azzal a feltételezéssel tervezték, hogy az operációs rendszer szabályozza a rendszererőforrásokhoz való hozzáférést. Ha azonban az operációs rendszer nem aktív, nyers lemezszerkesztők és helyreállítási eszközök is használhatók az operációs rendszer által felszabadított adatok megtekintésére és helyreállítására. Még ha a Win2K titkosított fájlrendszer (EFS) segítségével titkosítja is a fájlokat, a fájlok eredeti titkosítatlan adatai a lemezen maradnak a fájl új titkosított verziójának létrehozása után.

Az egyetlen mód annak biztosítására, hogy a törölt fájlok, valamint az EFS-sel titkosított fájlok biztonságosak legyenek a helyreállítás során, ha biztonságos törlési alkalmazást használ. A biztonságos törlési alkalmazások olyan technikákkal írják felül a törölt fájlok lemezen lévő adatait, amelyek megmutatják, hogy a lemezadatok helyreállíthatatlanok, még akkor is, ha olyan helyreállítási technológiát alkalmaznak, amely képes a mágneses adathordozón a rosszul törölt fájlokat feltáró minták olvasására. A SDelete (Biztonságos törlés) egy ilyen alkalmazás. A SDelete használatával egyaránt biztonságosan törölheti a meglévő fájlokat, valamint biztonságosan törölheti a lemez nem lefoglalt részében található fájladatokat (beleértve a már törölt vagy titkosított fájlokat is). A SDelete a Védelmi Minisztérium 5220.22-M szabványának kiürítését és megtisztítást valósítja meg, hogy biztos lehet benne, hogy a SDelete-valvaló törlés után a fájladatok örökre eltűntek. Vegye figyelembe, hogy a SDelete biztonságosan törli a fájladatokat, a szabad lemezterületen lévő fájlneveket azonban nem.

A SDelete használata

A SDelete egy parancssori segédprogram, amely több lehetőséget is igénybe vesz. Bármely használat esetén lehetővé teszi egy vagy több fájl és/vagy könyvtár törlését, illetve a logikai lemezen lévő szabad terület megtisztítését. A SDelete helyettesítő karaktereket fogad el a könyvtár vagy a fájl határozza meg.

Használat: sdelete [-p pass] [-r] [-s] [-q] fájl vagy könyvtár >
sdelete [-p pass] [-z|-c [százalékban szabad]] meghajtóbetűjel >>

Paraméter Leírás
-c Szabad terület felszabadítva. Adja meg, hogy mennyi helyet hagyjon szabadon egy futó rendszernek.
-p Megadja a felülírásokat (az alapértelmezett érték 1).
-r Távolítsa el Read-Only attribútumot.
-s Ismétlődnek az alkönyvtárak.
-z Nincs szabad terület (virtuális lemezoptimalizáláshoz jó).
-nobanner Ne jelenítse meg az indítási szalagcímet és a szerzői jogi üzenetet.

A SDelete működése

A speciális attribútumokkal nem rendelkezik fájlok biztonságos törlése viszonylag egyszerű: a biztonságos törlési program egyszerűen felülírja a fájlt a biztonságos törlési mintával. Ennél is bonyolultabb az NT/2K Windows tömörített, titkosított és ritka fájlok biztonságos törlése, valamint a szabad lemezterület biztonságos megtisztítása.

A tömörített, titkosított és ritka fájlokat az NTFS 16 fürtözött blokkokban kezeli. Ha egy program az ilyen fájlok egy meglévő részéhez ír, az NTFS új helyet foglal le a lemezen az új adatok tárolására, és az új adatok írása után felszabadítja a fájl által korábban lefoglalt fürtöt. Az NTFS ezt a óvatos megközelítést az adatintegritási okokból, illetve tömörített és ritka fájlok esetén arra az esetre, ha az új foglalás nagyobb, mint ami létezik (az új tömörített adatok nagyobbak, mint a régi tömörített adatok). Ezért az ilyen fájlok felülírása nem fogja sikerülni a fájl tartalmának törlését a lemezről.

Az ilyen típusú fájlok kezeléséhez a SDelete a töredezettségmentesítési API-t használja. A töredezettségmentesítési API használatával a SDelete képes pontosan meghatározni, hogy a lemezen mely fürtök foglalnak el tömörített, ritka és titkosított fájlokhoz tartozó adatokat. Ha a SDelete tudni fogja, hogy mely fürtök tartalmazzák a fájl adatait, megnyithatja a lemezt nyers hozzáféréshez, és felülírhatja azokat.

A szabad terület megtisztítás újabb kihívást jelent. Mivel a FAT és az NTFS nem biztosít lehetőséget az alkalmazások számára a szabad terület közvetlen kezelésére, az SDelete két lehetőség közül választhat. Az első az, hogy a tömörített, ritka és titkosított fájlokhoz hasonló, nyers hozzáféréshez meg tudja nyitni a lemezt, és felülírhatja a szabad területet. Ez a megközelítés nagy problémát okoz: még akkor is, ha a SDelete úgy lett kódolt, hogy teljes mértékben képes legyen kiszámolni az NTFS- és FAT-meghajtók szabad területtel kapcsolatos részeit (ami nem triviális), akkor is fennállna a kockázat, hogy ütközést okozna a rendszeren futó aktív fájlműveletekkel. Tegyük fel például, hogy a SDelete megállapítja, hogy egy fürt szabad- és éppen abban a pillanatban a fájlrendszer-illesztőprogram (FAT, NTFS) úgy dönt, hogy lefoglalja a fürtöt egy másik alkalmazás által módosított fájl számára. A fájlrendszer-illesztőprogram beírja az új adatokat a fürtbe, majd a SDelete is érkezik, és felülírja a frissen írt adatokat: a fájl új adatai eltűntek. A probléma még ennél is rosszabb, ha a fürt le van foglalva a fájlrendszer metaadataihoz, mivel a SDelete meg fogja hibásodni a fájlrendszer lemezen lévő szerkezetét.

A második, és az SDelete által használt módszer a szabad terület közvetett felülírása. Először is a SDelete lefoglalja a legnagyobb fájlt, amelyből csak lehet. A SDelete nem gyorsítótárazott fájl I/O-val teszi ezt, hogy az NT fájlrendszer gyorsítótárának tartalma ne legyen eldobva és lecserélve az SDeleteszóköz-tároló fájlhoz társított használhatatlan adatokra. Mivel a nem gyorsítótárazott fájl I/O-nak szektor (512 bájt) igazításúnak kell lennie, előfordulhat, hogy van némi szabad terület, amely még akkor sem lesz lefoglalva a SDelete-fájlhoz, ha a SDelete nem tudja tovább növekedni a fájlt. A fennmaradó terület lefoglalása A SDelete következő lépésként lefoglalja a legnagyobb gyorsítótárazott fájlt, amelyből csak lehet. Mindkét fájlhoz a SDelete biztonságos felülírásokat hajt végre, ezzel biztosítva, hogy a korábban szabad lemezterület biztonságosan megtisztítható legyen.

NTFS-meghajtókon a SDeletefeladata nem feltétlenül megy keresztül a két fájl lefoglalása és felülírása után. A SDelete-nek az NTFS MFT (master fájltábla) meglévő szabad részeit is ki kell töltenie az MFT-rekordba illeszkedő fájlokkal. Az MFT-rekord általában 1 KB méretű, és a lemezen lévő összes fájlhoz vagy könyvtárhoz legalább egy MFT-rekord szükséges. A kis méretű fájlok teljes egészében az MFT-rekordjukban vannak tárolva, míg a rekordon belül nem elférő fájlok az MFT-n kívül vannak lefoglalva. Az SDelete-nek kell gondoskodnia a szabad MFT-területről, hogy a lehető legnagyobb fájlt foglalja le – amikor a fájl lefoglalja az MFT-rekord NTFS-fájlban rendelkezésre álló összes szabad területet, a fájl mérete nem fog megnőni, mivel a lemezen nem marad szabad fürt (ezeket a SDelete korábban lefoglalt két fájl fogja tartalmazni). A SDelete ezután megismétli a folyamatot. Ha a SDelete már nem is tud új fájlt létrehozni, akkor tudni fogja, hogy az MFT összes korábban szabad rekordja teljesen fel lett töltve biztonságosan felülírt fájlokkal.

Egy törölt fájl fájlnevének felülírása esetén a SDelete 26 alkalommal nevezi át a fájlt, minden alkalommal, amikor a fájl nevének minden egyes karakterét egy egymást követő betűrendes karakterre cseréli. A "foo.txt" első átnevezése például az "AAA" lesz. AAA".

A SDelete azért nem törli biztonságosan a fájlneveket a szabad lemezterület törlésekor, mert a törlésük a könyvtárstruktúrák közvetlen manipulálását igényelné. A könyvtárstruktúrák törölt fájlneveket tartalmazó szabad területekkel is tartalmazhatnak, de a szabad könyvtárterület nem foglalható le más fájlokhoz. Ezért a SDelete nem tudja kihelyezésre ezt a szabad területet, hogy biztonságosan felülírja azt.

SDelete letöltése(518 KB)

A következőn fut:

  • Ügyfél: Windows Vista és újabb verziók
  • Kiszolgáló: Windows Server 2008 és újabb verziók
  • Nano Server: 2016 és újabb verziók