[英]How to erase a Hard Disk Drive
這是一個奇怪的問題,但在這里。 我想寫一個程序來閃存我的外部硬盤1s然后0s完全清理它所以我可以賣它。 現在,為什么我要編寫自己的軟件而不是僅僅使用DBAN?
據我所知,DBAN刪除了它檢測到的所有硬盤。 我只想清理我的外部。
DBAN閃爍七次。 我認為這對我的目的有點過分,因為我的外部不包含非法材料或信用卡信息。
說實話,我實際上對固件如何工作很好奇。
谷歌沒有出現太多(愚蠢的Adobe Flash)。 我更喜歡在C / C ++中這樣做,但其他語言也適用,包括匯編。
好吧,在C中做這件事很容易。 首先,在寫入模式下打開相應的設備文件:
int fd = open("/dev/sdc", O_WRONLY);
你只需write()
512字節塊,直到你不能再寫。 較新的磁盤使用4096字節扇區,但操作系統通常將它們視為具有512字節扇區,因此512是最安全的值。 這是一個完成這個的C程序:
(注意:要非常小心選擇正確的/ dev設備文件,否則你要擦除錯誤的磁盤!)
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main(void)
{
int fd = open("/dev/sdd", O_WRONLY);
if (fd < 0) {
fprintf(stderr, "Error opening device file.\n");
return EXIT_FAILURE;
}
// Write 0's all over the disk, in chunks of 512 bytes.
char* zeros = calloc(1, 512);
ssize_t written, total = 0;
do {
total += written = write(fd, zeros, 512);
printf("\rBytes written: %ld", total);
} while (written == 512);
printf("\nDone!\n");
close(fd);
free(zeros);
return 0;
}
如果你刪除printf()
,你可能會獲得加速,盡管看到進展發生時很酷。 您可能還應該在結尾處執行其他錯誤檢查(如果written
為-1,則發生錯誤,您應該檢查errno
。)
請注意,由於緩存,程序在打印“完成”后可能會在結束時掛起一段時間。 它並沒有真正懸掛,只是寫操作的緩存阻塞它,直到它們全部完成。
作為一個說明。 你的問題似乎是關於刪除數據,也就是粉碎等。
閃存HDD將是更新內部軟件。 如: HDD有自己的固件 。 在Linux下你可以做到:
$ sudo hdparm -I /dev/sda
然后,您將獲得以下信息:
ATA device, with non-removable media
Model Number: ST31000524AS
Serial Number: XXXXXXX
Firmware Revision: JC4B
Transport: Serial, SATA Rev 3.0
...
反過來,你可以看看/搜索取證。 即FAU , 開源數字取證等獲取更多信息。
更多關於擦拭 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.