Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Autor: Mark Russinovich
Opublikowano: 5 marca 2026 r.
Pobierz Pobierz plik SDelete (328 KB)
Wprowadzenie
Jedną z funkcji zgodności C2 systemu Windows NT/2000 (Win2K) jest to, że implementuje ochronę ponownego użycia obiektów. Oznacza to, że gdy aplikacja przydziela miejsce na plik lub pamięć wirtualną, nie może wyświetlić danych, które były wcześniej przechowywane w zasobach przydzielonych przez system Windows NT/2K. System Windows NT wypełnia pamięć zerami i wyzerowuje sektory na dysku, gdzie plik jest umieszczany przed udostępnieniem tych zasobów aplikacji. Jednak ponowne użycie obiektu nie nakazuje, aby miejsce zajmowane przez plik przed usunięciem zostało zerowane. Dzieje się tak, ponieważ system Windows NT/2K został zaprojektowany z założeniem, że system operacyjny kontroluje access do zasobów systemowych. Jeśli jednak system operacyjny nie jest aktywny, można użyć edytorów dysków pierwotnych i narzędzi odzyskiwania do wyświetlania i odzyskiwania danych, które system operacyjny cofnął przydział. Nawet w przypadku szyfrowania plików przy użyciu systemu szyfrowania plików Win2K (EFS) oryginalne dane pliku niezaszyfrowanego pozostają na dysku po utworzeniu nowej zaszyfrowanej wersji pliku.
Jedynym sposobem zapewnienia, że usunięte pliki, a także pliki szyfrowane za pomocą systemu szyfrowania plików, są bezpieczne przed odzyskiwaniem, to użycie bezpiecznej aplikacji usuwania. Aplikacje do bezpiecznego usuwania zastępują usunięte dane plików na dysku przy użyciu technik, które sprawiają, że danych z dysku nie można odzyskać, nawet za pomocą technologii odzyskiwania, które mogą odczytywać wzorce na nośnikach magnetycznych, ujawniających słabo usunięte pliki. SDelete (Secure Delete) to taka aplikacja. Za pomocą narzędzia SDelete można bezpiecznie usuwać istniejące pliki, a także bezpiecznie usuwać wszystkie dane plików, które istnieją w nieprzydzielonych częściach dysku (w tym pliki, które zostały już usunięte lub zaszyfrowane). SDelete implementuje standard czyszczenia i oczyszczania Departamentu Obrony DOD 5220.22-M, aby zapewnić pewność, że po usunięciu za pomocą SDelete, dane plików znikną na zawsze. Należy pamiętać, że usługa SDelete bezpiecznie usuwa dane plików, ale nie nazwy plików znajdujące się w wolnym miejscu na dysku.
Korzystanie z narzędzia SDelete
SDelete to narzędzie wiersza polecenia, które przyjmuje wiele opcji. W danym użyciu umożliwia usunięcie co najmniej jednego pliku i/lub katalogów lub oczyszczenie wolnego miejsca na dysku logicznym. SDelete obsługuje symbole wieloznaczne w ramach specyfikatora katalogu lub pliku.
Usage:
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 [...]>
| Parametr | Opis |
|---|---|
| -c | Wyczyść wolne miejsce. |
| -f | Wymuś, aby argumenty zawierające tylko litery były traktowane jako pliki/katalogi, a nie jako dyski. Nie jest wymagane, jeśli argument zawiera inne znaki (na przykład separatory ścieżek lub rozszerzenia plików). |
| -p | Określa liczbę nadpisań (wartość domyślna to 1). |
| -q | Tryb cichy. |
| -r | Usuń atrybut tylko do odczytu. |
| -s | Powtarzaj podkatalogi. |
| -z | Zero wolnego miejsca (dobrze nadaje się do optymalizacji dysku wirtualnego). |
| -nobanner | Nie wyświetlaj baneru startowego i wiadomości o prawach autorskich. |
- Dyski muszą być pozbawione jakichkolwiek woluminów, aby można je było wyczyścić.
- W przypadku liter dysku dołącz ciąg , na przykład .
Jak działa narzędzie SDelete
Bezpieczne usuwanie pliku, który nie ma specjalnych atrybutów, jest stosunkowo proste: program bezpiecznego usuwania po prostu zastępuje plik wzorcem bezpiecznego usuwania. Co jest trudniejsze, to bezpieczne usuwanie skompresowanych, zaszyfrowanych i rzadkich plików w systemie Windows NT/2K oraz bezpieczne czyszczenie wolnej przestrzeni na dysku.
Skompresowane, zaszyfrowane i rzadkie pliki są zarządzane przez system plików NTFS w blokach 16 klastrów. Jeśli program zapisuje w istniejącej części pliku, system NTFS przydziela nowe miejsce na dysku, aby przechować nowe dane. Po zapisaniu nowych danych zwalnia klastry wcześniej zajmowane przez plik. System NTFS stosuje to konserwatywne podejście ze względów związanych z integralnością danych, a w przypadku skompresowanych oraz rozrzedzonych plików, jeśli nowa alokacja jest większa niż dotychczasowa. W związku z tym zastąpienie takiego pliku nie powiedzie się usunięciem zawartości pliku z dysku.
SDelete opiera się na interfejsie API defragmentacji do obsługi tych typów plików. Za pomocą interfejsu API defragmentacji usługa SDelete może dokładnie określić, które klastry na dysku są zajmowane przez dane należące do skompresowanych, rozrzedzonych i zaszyfrowanych plików. Gdy SDelete wie, które klastry zawierają dane pliku, może otworzyć dysk dla bezpośredniego dostępu i zastąpić te klastry.
Czyszczenie wolnego miejsca stanowi kolejne wyzwanie. Ponieważ FAT i NTFS nie zapewniają aplikacji sposobu bezpośredniego adresowania wolnej przestrzeni, SDelete ma jedną z dwóch opcji. Po pierwsze, może, podobnie jak w przypadku skompresowanych, rzadkich i zaszyfrowanych plików, otworzyć dysk do surowego dostępu i nadpisać wolne miejsce. Takie podejście cierpi na duży problem: nawet jeśli SDelete zostały zakodowane jako w pełni zdolne do obliczenia części wolnego miejsca na dyskach NTFS i FAT (coś, co nie jest proste), może to spowodować kolizję z aktywnymi operacjami plików odbywających się w systemie. Załóżmy na przykład, że SDelete określa, że klaster jest wolny, a w tym momencie sterownik systemu plików (FAT, NTFS) decyduje się przydzielić klaster dla pliku, który modyfikuje inna aplikacja. Sterownik systemu plików zapisuje nowe dane w klastrze, a następnie program SDelete przechodzi i zastępuje świeżo zapisane dane: nowe dane pliku znikną. Problem jest jeszcze gorszy, jeśli klaster jest przydzielany do metadanych systemu plików, ponieważ narzędzie SDelete uszkodzi struktury na dysku systemu plików.
Drugie podejście, które przyjmuje SDelete, polega na pośrednim zastępowaniu wolnej przestrzeni. Najpierw SDelete przydziela największy możliwy plik. Funkcja SDelete wykonuje to przy użyciu niebuforowanych operacji we/wy pliku, dzięki czemu zawartość pamięci podręcznej systemu plików NT nie zostanie usunięta i zastąpiona bezużytecznymi danymi związanymi z plikiem zajmującym dużo miejsca, który tworzy SDelete. Ponieważ niebuforowane operacje wejścia/wyjścia (I/O) plików muszą być wyrównane do sektora (512 bajtów), może istnieć miejsce, które nie jest przydzielone dla pliku SDelete, nawet wtedy, gdy SDelete nie może dalej powiększyć pliku. Aby przejąć wszelkie pozostałe miejsce, SDelete następnie przydziela największy plik w pamięci podręcznej, jaki może. W przypadku obu tych plików funkcja SDelete wykonuje bezpieczne zastępowanie, zapewniając, że całe miejsce na dysku, które było wcześniej wolne, zostanie bezpiecznie oczyszczone.
Na dyskach NTFS zadanie SDelete nie musi być zakończone po przydziale i nadpisaniu dwóch plików. SDelete musi również wypełnić wszelkie istniejące wolne części MFT systemu NTFS plikami pasującymi do rekordu MFT. Rekord MFT ma zwykle rozmiar 1 KB, a każdy plik lub katalog na dysku wymaga co najmniej jednego rekordu MFT. Małe pliki są przechowywane w całości w rekordzie MFT, podczas gdy pliki, które nie mieszczą się w rekordzie, są przydzielane klastrom poza MFT. Wszystko, co musi zrobić SDelete, aby zadbać o wolne miejsce w MFT, to przydzielić największy plik, jaki może — gdy plik zajmuje całą dostępną przestrzeń w MFT Record, NTFS uniemożliwi dalsze powiększanie się pliku, ponieważ na dysku nie ma wolnych klastrów (są one zajęte przez dwa pliki SDelete wcześniej przydzielone). Następnie funkcja SDelete powtarza proces. Gdy usługa SDelete nie może nawet utworzyć nowego pliku, wie, że wszystkie wcześniej wolne rekordy w MFT zostały całkowicie wypełnione bezpiecznie nadpisanymi plikami.
Aby zastąpić nazwy plików usuniętego pliku, funkcja SDelete zmienia nazwę pliku 26 razy, za każdym razem zastępując każdy znak nazwy pliku kolejnym znakiem alfabetycznym. Na przykład pierwszą zmianą nazwy "foo.txt" będzie "AAA.AAA".
Powodem, dla którego usługa SDelete nie usuwa bezpiecznie nazw plików podczas czyszczenia wolnego miejsca na dysku, jest to, że usunięcie ich wymaga bezpośredniej manipulacji strukturami katalogów. Struktury katalogów mogą mieć wolne miejsce zawierające usunięte nazwy plików, ale wolne miejsce w katalogu nie jest dostępne do alokacji do innych plików. W związku z tym SDelete nie ma możliwości przydzielenia tego wolnego miejsca, aby można było bezpiecznie go zastąpić.
Pobierz Pobierz plik SDelete (328 KB)
Działa w:
- Klient: Windows 10 i nowsze.
- Serwer: Windows Server 2012 i nowsze.
- Nano Server: 2016 i nowsze.