SDelete v2.05

Autor: Mark Russinovich

Opublikowano: 29 września 2023 r.

DownloadPobierz aplikację SDelete(304 KB)

Wprowadzenie

Jedną z funkcji zgodności systemu Windows NT/2000 (Win2K) C2 jest to, że implementuje ochronę obiektu ponownie. 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 zero wypełnia pamięć i zero sektorów na dysku, gdzie plik jest umieszczany przed przedstawieniem dowolnego typu zasobu do 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 dostęp 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. Bezpieczne usuwanie aplikacji zastępuje usunięte dane pliku na dysku przy użyciu technik, które są pokazane, aby dane dysku nie można odzyskać, nawet przy użyciu technologii odzyskiwania, która może odczytywać wzorce na nośniku magnetycznym, które ujawniają 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 Departament Obrony czyszczenie i oczyszczanie standardu DOD 5220.22-M, aby zapewnić pewność, że po usunięciu z 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. Funkcja SDelete akceptuje symbole wieloznaczne w ramach specyfikatora katalogu lub pliku.

Użycia:

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ś argumenty zawierające tylko litery, które mają być traktowane jako plik/katalog, a nie dysk.
Nie jest wymagane, jeśli argument zawiera inne znaki (na przykład separatory ścieżek lub rozszerzenia plików).
-P Określa liczbę przestępów (wartość domyślna to 1).
-P Tryb cichy.
-r Usuń atrybut tylko do odczytu.
-s Powtarzaj podkatalogi.
-Z Brak wolnego miejsca (dobra do optymalizacji dysku wirtualnego).
-nobanner Nie wyświetlaj baneru startowego i wiadomości o prawach autorskich.
  • Dyski nie mogą mieć żadnych woluminów do wyczyszczenia.
  • W przypadku liter dysku dołącz :ciąg , na przykład D:.

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 bardziej trudne jest bezpieczne usuwanie skompresowanych, zaszyfrowanych i rozrzedzone pliki systemu Windows NT/2K oraz bezpieczne czyszczenie wolnych miejsc na dysku.

Skompresowane, zaszyfrowane i rozrzedzone są zarządzane przez system plików NTFS w blokach klastra 16. Jeśli program zapisuje w istniejącej części pliku NTFS przydziela nowe miejsce na dysku do przechowywania nowych danych i po zapisaniu nowych danych, cofnie przydział klastrów wcześniej zajmowanych przez plik. System ntfs przyjmuje to konserwatywne podejście ze względów związanych z integralnością danych, a w przypadku skompresowanych i rozrzedzone pliki, jeśli nowa alokacja jest większa niż to, co istnieje (nowe skompresowane dane są większe niż stare skompresowane dane). W związku z tym zastąpienie takiego pliku nie powiedzie się usunięciem zawartości pliku z dysku.

Do obsługi tych typów plików SDelete opiera się na interfejsie API defragmentacji. 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 usługa SDelete wie, które klastry zawierają dane pliku, może otworzyć dysk w celu uzyskania surowego dostępu i zastąpić te klastry.

Czyszczenie wolnego miejsca stanowi kolejne wyzwanie. Ponieważ fat i NTFS nie zapewniają aplikacji środków do bezpośredniego adresowania wolnego miejsca, SDelete ma jedną z dwóch opcji. Po pierwsze może, podobnie jak w przypadku skompresowanych, rozrzedzonych i zaszyfrowanych plików, otworzyć dysk w celu uzyskania nieprzetworzonego dostępu i zastąpić 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, a to, które przyjmuje SDelete , jest pośrednio zastępowanie wolnego miejsca. Najpierw funkcja SDelete przydziela największy plik, który może. 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 wyrzucona i zastąpiona bezużytecznymi danymi skojarzonymi z plikiem spacji sDelete. Ponieważ niebuforowane operacje we/wy 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 funkcja SDelete nie może jeszcze bardziej zwiększyć pliku. Aby pobrać pozostałe miejsce SDelete następnie przydziela największy buforowany plik 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ć przekazywane po przydzieleniu i zastąpi dwa pliki. SDelete musi również wypełnić wszelkie istniejące wolne części NTFS MFT (tabela plików głównych) z plikami, które mieszczą się w rekordzie 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. Wszystkie SDelete musi dbać o wolne miejsce MFT jest przydzielany największy plik, który może - gdy plik zajmuje wszystkie dostępne miejsce w systemie plików MFT Record NTFS zapobiegnie większemu rozmiarowi pliku, ponieważ nie ma wolnych klastrów pozostawionych na dysku (są one przechowywane 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ć.

DownloadPobierz aplikację SDelete(304 KB)

Działa w:

  • Klient: Windows 10 lub nowszy.
  • Serwer: Windows Server 2012 i nowsze.
  • Nano Server: 2016 i nowsze.