Saya ingin tahu cara menghapus USB flash drive melalui terminal jika memungkinkan sehingga data tidak dapat dipulihkan.
Saya ingin tahu cara menghapus USB flash drive melalui terminal jika memungkinkan sehingga data tidak dapat dipulihkan.
Jawaban:
TL / DR: Pastikan Anda mendapatkan nama perangkat yang tepat, pastikan itu tidak dipasang, dan lakukan sebanyak mungkin timpa secara acak. Anda dapat mengikutinya dengan perintah erase yang dirancang untuk perangkat keras flash, jika Anda memiliki distribusi yang cukup baru. Dalam pemeriksaan ini, selalu gunakan drive (seperti / dev / sd h ) dan bukan nama partisi (yang akan menjadi / dev / sd h1 )
# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#
Secara teori, menimpa dengan nol dengan dd
baik-baik saja. Namun, karena cara internal flash drive dibuat, jika Anda menggunakan pass overwrite tunggal, mungkin ada beberapa lapisan data yang tersembunyi di balik blok aktual yang masih menyimpan informasi sisa.
Biasanya bagian dari penyimpanan flash rusak, dan ditandai demikian selama pembuatan. Ada juga bit lain yang bisa salah (menjadi tidak dapat diubah, tidak dapat diatur, atau tidak jelas), bagian-bagian ini harus ditandai rusak juga selama masa pakai. Informasi ini disimpan dalam ruang yang disediakan, pada chip yang sama dengan data Anda. Ini adalah salah satu dari beberapa alasan thumb drive 4GB tidak menunjukkan kapasitas 2 ^ 32 byte.
Penyimpanan flash juga diatur secara internal dalam blok yang lebih besar, kadang-kadang jauh lebih besar daripada sistem file yang bekerja pada drive. Ukuran blok sistem file tipikal adalah 4KB, dan segmen flash yang dapat dihapus dalam sekali jalan dapat berkisar dari 64KB hingga beberapa megabita. Blok besar ini hanya dapat dihapus secara keseluruhan, yang me-reset semua blok ke kondisi yang diketahui (semua 1s atau semua 0s). Setelah itu penulisan data dapat mengubah bit mana pun (ubah 1s default menjadi 0s jika diperlukan, atau ubah 0s default menjadi 1s), tetapi hanya sekali . Untuk mengubah bit kembali ke default, semua segmen perlu dihapus lagi!
Jadi, ketika Anda ingin mengubah blok 4KB (sistem file diminta untuk mengubah satu karakter di tengah file), pengontrol flash perlu membaca dan buffer semua 64KB dari data lama, menghapus semua itu, dan tulis kembali konten baru. Ini akan sangat lambat, menghapus segmen adalah operasi paling lambat. Selain itu, segmen hanya dapat dihapus dengan waktu terbatas (puluhan ribu adalah khas), jadi jika Anda membuat terlalu banyak perubahan pada satu file, itu dapat dengan cepat merusak drive.
Tapi ini bukan bagaimana hal itu dilakukan. Pengontrol flash cerdas cukup menulis data baru 4KB di tempat lain, dan membuat catatan untuk mengarahkan bacaan ke data 4KB ini di tengah-tengah blok lama. Mereka memerlukan lebih banyak ruang, yang tidak dapat kita lihat untuk menyimpan informasi ini tentang arahan ulang. Mereka juga mencoba memastikan bahwa mereka melalui semua segmen yang dapat diakses untuk menyimpan data, ini disebut leveling keausan .
Ini berarti bahwa biasanya data lama masih ada di drive di suatu tempat! Jika Anda baru saja menghapus semua blok yang dapat diakses, semua blok tersembunyi masih menyimpan versi data yang cukup baru. Apakah ini dapat diakses oleh penyerang yang Anda inginkan agar data Anda dilindungi, adalah pertanyaan yang berbeda.
Jika Anda memiliki distribusi yang cukup baru, dan drive USB diprogram untuk mengungkapkan bahwa itu adalah drive flash, blkdiscard
dapat menggunakan TRIM
operasi yang mendasarinya , yang merupakan penghapusan segmen yang kita bicarakan di atas. Ini juga memiliki bendera tambahan untuk memastikan bahwa bahkan data tersembunyi yang tidak terlihat sepenuhnya terhapus oleh perangkat keras:
# blkdiscard -s /dev/myusbdevice
-s, --secure Melakukan pembuangan yang aman. Buang aman adalah sama dengan Buang biasa kecuali bahwa semua salinan blok dibuang yang mungkin dibuat oleh pengumpulan sampah juga harus dihapus. Ini membutuhkan dukungan dari perangkat.
Ini tidak akan berhasil, seperti yang saya tunjukkan di atas. Jika Anda mendapatkan Operation not supported
, baik kernel Anda, utilitas Anda, atau chip gateway USB (yang memungkinkan pengontrol flash terlihat seperti drive melalui USB) tidak mendukung TRIM
perintah passing . (Pengontrol flash masih harus dapat menghapus segmen dengan sendirinya). Jika didukung oleh vendor drive Anda, ini adalah cara paling aman.
Cara lain yang kurang aman untuk memastikan Anda membiarkan lebih sedikit data lama untuk berlama-lama di suatu tempat adalah dengan menimpanya beberapa kali, dengan nilai acak, jika memungkinkan.
Kenapa acak, Anda bertanya? Bayangkan saja jika drive USB dibuat terlalu cerdas, dan mendeteksi bahwa Anda ingin menghapus suatu sektor, dan hanya membuat perubahan dalam bitmap bahwa sektor ini sekarang bebas, dan perlu dibersihkan nanti. Karena ini berarti dapat mempercepat penulisan angka nol, jadi itu membuat flashdisk yang tampak lebih efisien, bukan? Apakah drive Anda melakukannya, sulit diceritakan.
Paling ekstrim, drive hanya dapat mengingat berapa banyak dari awal Anda telah membersihkan, dan semua yang diperlukan untuk menyimpan adalah sekitar 4 byte informasi untuk melakukan ini, dan tidak menghapus apa pun dari data yang ingin Anda hilangkan. Semua itu bisa terlihat sangat cepat.
Jika Anda menimpa data dengan nilai acak dan tidak dapat diprediksi, optimasi ini tidak mungkin dilakukan. Jadi drive harus memastikan data akhirnya disimpan di dalam chip flash. Tetapi Anda masih tidak akan dapat mengesampingkan bahwa beberapa sektor yang sebelumnya digunakan masih ada dengan data lama Anda, tetapi drive itu belum dianggap penting untuk dihapus dulu, karena itu tidak dapat diakses secara normal. Hanya TRIM
perintah yang sebenarnya yang bisa menjamin itu.
Untuk mengotomatisasi menimpa dengan nilai acak, Anda mungkin ingin melihat ke dalam menggunakan shred
, seperti:
# shred -vzn88 /dev/myusbdrive
Opsi yang digunakan:
Jika memungkinkan, gunakan keduanya blkdiscard
dan shred
, jika blkdiscard -s
didukung oleh drive Anda, ini adalah solusi optimal, tetapi tidak ada salahnya untuk melakukan shred
sebelumnya untuk menyingkirkan kesalahan firmware.
Oh, dan selalu periksa dua kali lipat perangkat yang Anda coba hapus! dmesg dapat membantu untuk melihat apa perangkat yang paling baru disisipkan, dan juga ada baiknya memeriksa nama perangkat yang ingin Anda hapus ls -al
, bahkan untuk nomor simpul perangkat, dan blkid
output untuk melihat partisi apa yang tersedia yang tidak Anda miliki. ingin membersihkan.
Jangan pernah menggunakan perintah ini pada drive internal yang ingin Anda terus gunakan - blkdiscard
hanya akan bekerja pada solid state drive, tetapi tidak ada gunanya mencoba kehilangan data!
Mungkin ada cara lain untuk menghapus data dengan aman seiring kemajuan teknologi.
Satu cara lain yang disebutkan adalah SECURITY ERASE
perintah ATA yang dapat dikeluarkan melalui hdparm
perintah. Dalam pengalaman saya, itu tidak benar-benar didukung pada flash drive. Ini dirancang untuk hard drive perusahaan, dan fitur ini tidak selalu diimplementasikan pada perangkat penyimpanan dengan biaya terendah.
The TRIM
/ DISCARD
operasi jauh lebih baru daripada SECURITY ERASE
perintah, dan telah dibuat dalam menanggapi fitur flash, sehingga memiliki kesempatan yang jauh lebih tinggi dari yang sedang dilaksanakan, bahkan di murah USB drive, tapi masih tidak di mana-mana. Jika Anda ingin menghapus kartu SD / micro SD dalam dongle USB, dan blkdiscard
melaporkannya tidak didukung, Anda mungkin ingin mencoba dongle / pembaca kartu yang berbeda, dan / atau melakukannya di mesin dengan slot SD / MMC langsung .
blkdiscard
ada di Debian Jessie, dan hanya di dua rilis terbaru Ubuntu, tetapi tidak Ubuntu LTS 14.04. blkdiscard
telah ditambahkan ke paket util-linux
versi 2.23.
blkdiscard
membandingkan dengan hdparm
solusi dalam komentar lain oleh @zhenech (khususnya tautannya: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
Saya menyadari ini bukan jawaban untuk pertanyaan Anda, tetapi cara paling sederhana adalah dengan menghancurkan drive secara fisik (menghancurkannya berulang kali dengan palu godam pada umumnya memang berhasil, tetapi penghancuran atau pembakaran industri juga merupakan pilihan). Jika Anda cukup khawatir tentang keamanan untuk ingin memastikan data tidak dapat dipulihkan, nilai data itu kemungkinan kali lebih besar daripada biaya drive itu sendiri, dan metode fisiknya murah dan dapat diandalkan.
Hampir semua fungsi secure-delete yang tersedia dirancang untuk memutar media magnetik, di mana komputer biasanya dapat menentukan lokasi fisik [1] dari blok yang digunakan untuk file dan menulis di atas blok yang sama. Chip pengontrol penyimpanan solid-state mengabstraksi lokasi fisik data dari sistem dan suka memindahkannya.
Pertanyaan Anda benar-benar tergantung pada siapa yang mencari data Anda. Jika Anda khawatir tentang kehilangan acak atau pencurian biasa maka format biasa akan baik-baik saja. Jika Anda khawatir menjadi sasaran pengguna yang sangat termotivasi dan kompeten secara teknis dengan sumber daya substansial yang dapat mereka gunakan, maka bakar saja drive tersebut dan belanjakan $ 10 untuk yang baru.
ya, ada pemetaan blok logis. Tapi blok logis A akan selalu memetakan ke blok fisik B.
orang ini akan membuka drive, menarik chip memori dari kartu dan membaca memori flash secara langsung, melewati controller
Cara paling sederhana dan tercepat yang saya tahu adalah menulis nol (0) ke seluruh drive:
dd if=/dev/zero of=/dev/sdX
di mana /dev/sdX
node perangkat thumbdrive Anda.
Beberapa menyarankan proses yang lebih menyeluruh dengan lebih banyak iterasi dan pola lainnya. Utilitas khusus tersedia untuk melakukan ini. Paket GNU coreutils berisi shred
perintah khusus untuk tujuan ini. Banyak orang juga menggunakan badblocks -w
, yang merupakan bagian dari paket e2fsprogs. Pada FreeBSD shred
utilitas dipanggil gshred
dan harus tersedia di port /usr/ports/sysutils/coreutils
atau /usr/ports/sysutils/fileutils
.
Ini harus dapat menghapus flash drive Anda dengan aman jika Anda berencana menggunakannya kembali: http://linux.die.net/man/1/scrub Jika tidak maka lelehkan ...