私は(安全な)消去ハードドライブのためのいくつかのコードを見ています。私は異なった方法(Infosec 5,DoD 5220.22-M、など)を見ると、私は "書き込みを確認する"を読むことに気づきます。hddの消去時に "書き込みを確認する"とはどういう意味ですか?
例:
https://www.lifewire.com/dod-5220-22-m-2625856
パス3:かかわらず、レベルが使用された、検証はランダムな文字を書き込み、書き込み
https://en.wikipedia.org/wiki/Infosec_Standard_5#cite_note-5
を検証を確保する必要があるは上書きが成功したことを示します。
私の質問は、何ですか?テクニカルを意味しますか?
書き込まれたバイトがブロックのサイズと等しい(高速のように見える)場合は、ブロックを書き込むときにチェックしますか?
書き込んだブロックと(memcmp?)のデータブロックが完全に同じであればそれを読み返しますか?
私が見落とした解決策はありますか?ここで
私の質問を説明するためサンプルコードのビット。どのソリューションが「書き込みでベリファイする」ことを示すでしょうか?戻り値(write
)を確認するだけの場合を確認することができます、長さはブロックの長さと一致しますすべてバイトが実際に書き込まれていますか?
// erasure example
// erasure single block, start from 0
// block size
unsigned long block_size = 512;
// data-block we will write
char block[block_size];
// zero the block
bzero(&block, block_size);
// open device
int fd = open('/dev/sdb', O_RDWR);
// write 1st block
int bytes_written = write(fd, &block, block_size);
// verify option: A
if (bytes_written == block_size) {
// all good
}
// verify option B
// go back the number of bytes-wtitten from the current pos.
lseek(fd, -1 * bytes_written);
// read the same number of bytes
int bytes_read = read(fd, &block, bytes_written);
// should be same
if (bytes_read == bytes_written) {
// here code to check i block indeed contains zero's
// use memcmp ?
}
ありがとうございました、私のポイントはもっとですが、戻り値(block_size == write(...)の場合)は、消去の仕様の範囲内で、ベリファイの対象となります。 – Roger
@Rogier - はい、いずれかのメソッド、if(block_size == write(...))またはif(bytes_written == block_size)は_change_が行われたことを示す明確な指示(_validation_)です。 'memcmp(...) 'のような追加のステップは、追加の検証を提供するだけであり、あなたの目的のために完全にオプションです(IMO)。私はこれらの考えをより明確にするために、私の答えを修正しました。 – ryyker
@Rogier - あなたのアバター画像が_ [Thunder Mustang](http://www.thundermustang.com/)_、または大規模なWWII飛行機の画像であるかどうか不思議ですか? – ryyker