SDelete v2.06

Oleh Mark Russinovich

Diterbitkan: 5 Maret 2026

UnduhUnduh SDelete(328 KB)

Pendahuluan

Salah satu fitur kepatuhan C2 Windows NT/2000 (Win2K) adalah menerapkan perlindungan penggunaan kembali objek. Ini berarti bahwa ketika aplikasi mengalokasikan ruang file atau memori virtual, aplikasi tidak dapat melihat data yang sebelumnya disimpan dalam sumber daya yang dialokasikan Windows NT/2K untuk itu. Windows NT mengisi memori nol dan nol sektor pada disk tempat file ditempatkan sebelum menyajikan salah satu jenis sumber daya ke aplikasi. Namun, penggunaan kembali objek tidak menentukan bahwa ruang yang ditempati file sebelum dihapus menjadi nol. Ini karena Windows NT/2K dirancang dengan asumsi bahwa sistem operasi mengontrol akses ke sumber daya sistem. Namun, ketika sistem operasi tidak aktif, dimungkinkan untuk menggunakan editor disk dan alat pemulihan untuk melihat dan memulihkan data yang tidak lagi dialokasikan oleh sistem operasi. Bahkan ketika Anda mengenkripsi file dengan Sistem File Enkripsi Win2K (EFS), data file asli yang tidak terenkripsi file dibiarkan di disk setelah versi terenkripsi baru file dibuat.

Satu-satunya cara untuk memastikan bahwa file yang dihapus, serta file yang Anda enkripsi dengan EFS, aman dari pemulihan adalah dengan menggunakan aplikasi penghapusan yang aman. Aplikasi penghapusan aman menimpa data file yang dihapus di dalam disk menggunakan teknik yang terbukti membuat data pada disk tidak dapat dipulihkan, bahkan ketika menggunakan teknologi pemulihan yang mampu membaca pola di media magnetik yang mengungkapkan file-file yang dihapus secara tidak sempurna. SDelete (Penghapusan Aman) adalah aplikasi seperti itu. Anda dapat menggunakan SDelete untuk menghapus file yang ada dengan aman, serta menghapus data file apa pun yang ada di bagian disk yang tidak dialokasikan dengan aman (termasuk file yang telah Anda hapus atau enkripsi). SDelete menterimplementasikan standar pembersihan dan pembersihan Departemen Pertahanan DOD 5220.22-M, untuk memberi Anda keyakinan bahwa setelah dihapus dengan SDelete, data file Anda tidak dapat dipulihkan. Perhatikan bahwa SDelete menghapus data file dengan aman, tetapi bukan nama file yang terletak di ruang disk kosong.

Menggunakan SDelete

SDelete adalah utilitas baris perintah yang mengambil sejumlah opsi. Dalam penggunaan tertentu, ini memungkinkan Anda untuk menghapus satu atau beberapa file dan/atau direktori, atau untuk membersihkan ruang kosong pada disk logis. SDelete menerima karakter wildcard sebagai bagian dari direktori atau penentu file.

Penggunaan:

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 [...]>
Parameter Deskripsi
-c Bersihkan ruang kosong.
-f Paksa argumen yang hanya berisi huruf untuk diperlakukan sebagai file/direktori, bukan disk.
Tidak diperlukan jika argumen berisi karakter lain (pemisah jalur atau ekstensi file misalnya).
-p Menentukan jumlah pass overwrite (defaultnya adalah 1).
-q Mode tenang.
-r Hapus atribut Hanya-Baca.
-s Proses subdirektori secara rekursif.
-z Nol ruang kosong (baik untuk pengoptimalan disk virtual).
-nobanner Jangan tampilkan spanduk startup dan pesan hak cipta.
  • Disk tidak boleh memiliki volume apa pun untuk dibersihkan.
  • Untuk huruf kandar, sertakan , misalnya .

Cara Kerja SDelete

Menghapus file dengan aman yang tidak memiliki atribut khusus cukup sederhana: program penghapusan aman hanya menimpa file dengan pola penghapusan aman. Yang lebih rumit adalah menghapus file Windows NT/2K terkompresi, terenkripsi, dan jarang dengan aman, serta membersihkan ruang kosong disk dengan aman.

Terkompresi, terenkripsi, dan jarang dikelola oleh NTFS dalam blok 16 kluster. Jika sebuah program menulis ke bagian yang sudah ada dari file tersebut, NTFS mengalokasikan ruang baru pada disk untuk menyimpan data baru dan setelah data baru ditulis, menghapus alokasi kluster yang sebelumnya ditempati oleh file. NTFS mengambil pendekatan konservatif ini karena alasan yang terkait dengan integritas data, dan dalam kasus file terkompresi dan jarang, jika alokasi baru lebih besar dari apa yang ada (data terkompresi baru lebih besar dari data terkompresi lama). Dengan demikian, menimpa file seperti itu tidak akan berhasil menghapus isi file dari disk.

Untuk menangani jenis file ini, SDelete bergantung pada API defragmentasi. Dengan menggunakan API defragmentasi, SDelete dapat menentukan dengan tepat kluster mana pada disk yang ditempati oleh data milik file terkompresi, jarang, dan terenkripsi. Setelah SDelete tahu kluster mana yang berisi data file, maka SDelete dapat membuka disk untuk akses mentah dan menimpa kluster tersebut.

Membersihkan ruang kosong menghadirkan tantangan lain. Karena FAT dan NTFS tidak menyediakan sarana bagi aplikasi untuk langsung mengatasi ruang kosong, SDelete memiliki salah satu dari dua opsi. Yang pertama adalah bahwa, seperti halnya untuk file terkompresi, sparse, dan terenkripsi, ini dapat membuka disk untuk akses mentah dan menimpa ruang kosong. Pendekatan ini menghadapi masalah besar: bahkan jika SDelete diprogram untuk mampu sepenuhnya menghitung bagian ruang kosong pada drive NTFS dan FAT (sesuatu yang tidak sepele), itu akan berisiko bentrok dengan operasi file yang sedang aktif berlangsung di sistem. Misalnya, SDelete menentukan bahwa kluster gratis, dan pada saat itu driver sistem file (FAT, NTFS) memutuskan untuk mengalokasikan kluster untuk file yang dimodifikasi aplikasi lain. Driver sistem file menulis data baru ke kluster, lalu SDelete datang dan menimpa data yang baru ditulis: data baru file hilang. Masalahnya bahkan lebih buruk jika kluster dialokasikan untuk metadata sistem file karena SDelete akan merusak struktur on-disk sistem file.

Pendekatan kedua, dan yang diambil SDelete, adalah menimpa ruang kosong secara tidak langsung. Pertama, SDelete mengalokasikan file terbesar yang dapat dialokasikan. SDelete melakukan ini dengan menggunakan I/O file tanpa cache, sehingga konten cache sistem file NT tidak akan dibuang dan digantikan dengan data yang tidak berguna terkait file yang menggunakan banyak ruang milik SDelete. Karena I/O file yang tidak di-cache harus sejajar sektor (512-byte), mungkin ada beberapa ruang sisa yang tidak dialokasikan untuk file SDelete bahkan ketika SDelete tidak dapat memperbesar file lebih lanjut. Untuk mengambil ruang yang tersisa, SDelete kemudian mengalokasikan file cache terbesar yang dapat dibuatnya. Untuk kedua file ini SDelete melakukan penimpaan yang aman, memastikan bahwa semua ruang disk yang sebelumnya bebas menjadi dibersihkan dengan aman.

Pada drive NTFS, tugas SDelete belum tentu selesai setelah mengalokasikan dan menimpa kedua file tersebut. SDelete juga harus mengisi bagian kosong yang tersedia dari MFT NTFS (Tabel File Master) dengan file yang dapat dimuat dalam satu catatan MFT. Catatan MFT biasanya berukuran 1KB, dan setiap file atau direktori pada disk memerlukan setidaknya satu rekaman MFT. File kecil disimpan sepenuhnya dalam catatan MFT mereka, sementara file yang tidak muat dalam catatan diberikan kluster di luar MFT. Semua yang SDelete harus lakukan untuk menangani ruang MFT kosong adalah mengalokasikan file terbesar yang bisa dibuatnya - ketika file menempati semua ruang yang tersedia di MFT Record, NTFS akan mencegah file tersebut bertambah besar, karena tidak ada kluster bebas yang tersisa di disk (mereka ditahan oleh dua file SDelete yang sebelumnya dialokasikan). SDelete kemudian mengulangi proses. Ketika SDelete bahkan tidak dapat lagi membuat file baru, SDelete tahu bahwa semua catatan kosong sebelumnya dalam MFT telah sepenuhnya diisi dengan file yang telah ditimpa secara aman.

Untuk menimpa nama file yang Anda hapus, SDelete mengganti nama file tersebut sebanyak 26 kali, dengan setiap kali mengganti setiap karakter dalam nama file menggunakan karakter alfabet berikutnya secara berurutan. Misalnya, penggantian nama pertama "foo.txt" adalah menjadi "AAA. AAA".

Alasan bahwa SDelete tidak menghapus nama file dengan aman saat membersihkan ruang kosong disk adalah bahwa menghapusnya akan memerlukan manipulasi langsung struktur direktori. Struktur direktori dapat memiliki ruang kosong yang berisi nama file yang dihapus, tetapi ruang direktori kosong tidak tersedia untuk alokasi ke file lain. Oleh karena itu, SDelete tidak memiliki cara untuk mengalokasikan ruang kosong ini sehingga dapat menimpanya dengan aman.

UnduhUnduh SDelete(328 KB)

Beroperasi di:

  • Klien: Windows 10 dan yang lebih tinggi.
  • Server: Windows Server 2012 dan yang lebih tinggi.
  • Nano Server: 2016 dan yang lebih tinggi.