簡體   English   中英

如何擦除硬盤驅動器

[英]How to erase a Hard Disk Drive

這是一個奇怪的問題,但在這里。 我想寫一個程序來閃存我的外部硬盤1s然后0s完全清理它所以我可以賣它。 現在,為什么我要編寫自己的軟件而不是僅僅使用DBAN?

  1. 據我所知,DBAN刪除了它檢測到的所有硬盤。 我只想清理我的外部。

  2. DBAN閃爍七次。 我認為這對我的目的有點過分,因為我的外部不包含非法材料或信用卡信息。

  3. 說實話,我實際上對固件如何工作很好奇。

谷歌沒有出現太多(愚蠢的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 。)

請注意,由於緩存,程序在打印“完成”后可能會在結束時掛起一段時間。 它並沒有真正懸掛,只是寫操作的緩存阻塞它,直到它們全部完成。

據我所知,DBAN刪除了它檢測到的所有硬盤。 我只想清理我的外部。

它沒有

DBAN閃爍七次。 我認為這對我的目的有點過分,因為我的外部不包含非法材料或信用卡信息。

但是當你早上醒來時,已經完成了,對吧? 此外,它顯然是可配置的

說實話,我實際上對固件如何工作很好奇。

IMO,這不是最好的起點。

作為一個說明。 你的問題似乎是關於刪除數據,也就是粉碎等。

閃存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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM