1

ワイプ システムが正常に動作していることを確認するために、ワイプされたハード ドライブを監査する bash スクリプトを作成しようとしています。ドライブ全体を 16 進ダンプし、必要な部分を抽出することなく、ドライブの特定の部分を 16 進ダンプする方法を見つけたいと思います (これは、スクリプトを書く価値があるほど長く実行されているようです)。理想的には、ドライブの最初、中間、最後から部品をつかむことができればいいのにと思います。

16 進ダンプの出力を取得し、文字が 1 つしか存在しないことを確認したいと思います (ドライブが正常にワイプされたことを示します)。この部分は、私は対処できますが、私が受けるアドバイスに影響を与える可能性があると思いました.

私は xxd にパイプされたヘッドを使用して、機能しているファイルの先頭を取得しましたが、まだ他の部分で立ち往生しています。ドライブの終わりを取得するために tail を使用しようとしましたが、それもすぐには機能しないようです。これを効率的に行うことは可能ですか?おそらく dd などを使用して、それを 16 進エディターにパイプしますか? xxd と hexdump のオプションを調べましたが、役に立ちませんでした。誰かが私を正しい方向に向けることができれば、それは大歓迎です!

4

2 に答える 2

2

xxd には、ファイルへの道をスキップするオプション ( -s) と、制限された長さをダンプするオプション ( ) があります-l。単純な hex ( -p) オプションを使用すると、grep を使用して異常を見つけることができる場合があります。

$ xxd -s 8192 -l 256 -p /dev/disk3s2 | grep [^0]
000000010000000000000000000000000000000000000000000000000000
000000000000000000000000300000000000000800000000000000000000
dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb
dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb
dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb

od同様のスキップ ( -j) と制限長 ( -N) があります。同様に、 とddskip=ありcount=ます (ただし、これらはバイト単位ではなくブロック単位でカウントされます。ブロック サイズは で変更できますbs=)。

編集:xxd -p奇妙な結果が得られるため (デバイスの最後で停止しない)、何が起こっているのかを把握するためにいくつかのテストを実行することをお勧めします。最初に、コンピューター上の重要なものをすべてバックアップします。デバイス アクセス レベルで何かがおかしい場合、これらのテストの一部が予期しないものを上書きする可能性があるためです。

次に、さまざまなツールを使用してデバイスの最後にダンプしてみて、それらがすべて同じように動作するかどうかを確認します。

xxd -s 65451982336 /dev/sdb | more  # This *should* dump 512 bytes (32 lines) then stop, but apparently keeps going
od -xv -j 65451982336 /dev/sdb | more  # This also *should* dump 512 bytes then stop
dd if=/dev/sdb skip=127835903 | xxd | more # This again should do the same thing (note that the skip value is in 512-byte blocks)

他のツールは、fdisk がディスクの終わりとして報告したものを超えて読み取りますか? 3つすべてがさらにデータを読み取った場合、「fdiskは間違っている/誤解を招く」という回答を使用します。「最後」を過ぎてゼロ以外のデータを書き込んで結果を確認することで、さらにテストできます。

dd if=/dev/random of=/dev/sdb seek=127835903 count=2

...次に、さまざまなダンプ コマンドを繰り返します。ランダム データの 2 つのブロック (=64 行) の後にゼロが続く場合、そのデバイスはあなたが思っているよりも大きいと確信しています。

于 2013-12-07T04:39:20.567 に答える
1

私は自分のシェルに近づいていませんが、これらの行に沿った何かから始める必要があります:

dd if=/dev/hda1 | hexdump -C | grep [^00]

ゼロ以外のすべてのバイトを出力します。

dd if=/dev/hda1 | od -x -j100

100 バイトから始まる、オフセット付きの 16 進数のダンプが得られます。

于 2013-12-07T03:40:37.240 に答える