• ベストアンサー

LinuxでDisk probeのようなソフト

Linux で Windows の Disk probe のように ドライブ(パーティション)の中身のデータを 16進数で表示するソフトってありますか? odはファイルが対象でないとうまくいかないようでして。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.5

No1です。 od や hexdump は、同じ表示が続き時に、* でそれらを置き換えます。「中略」ということですね。 * の直前の行が繰り返されていると思ってください。どれだけ繰り返しかは、その次の行頭のアドレスでわかります。 /dev/zeroで埋めても df の表示が変わらないのは、メモリ上のマウントテーブルにそのまま情報が残っているからです。syncしても関係無いと思いますよ。いちどアンマウントすると、再びさしこんでももうマウントできない(パーティション情報が消されている)ので、表示されません。 デバイスに直接書き込むのは、普通は、アンマウントしてからだと思います。

noname#197334
質問者

お礼

ご回答ありがとうございます。 理解できる所まで理解して 分からない所を質問させていただこうかなと思っていましたため、 お礼を付けるのが少し遅れてしまい、申し訳ありません。 http://x68000.q-e-d.net/~68user/unix/pickup?od をじっくり読んでいたのですが、 http://okwave.jp/qa/q8406776.html で書いています消去してしまったMBRを od,hexdump でダンプしたものは単純なので理解できました。 dizzy@Minty ~ $ od MBR-破壊後.bu 0000000 000000 000000 000000 000000 000000 000000 000000 000000 * 0000700 000001 177356 177777 000001 000000 101257 045205 000000 0000720 000000 000000 000000 000000 000000 000000 000000 000000 * 0000760 000000 000000 000000 000000 000000 000000 000000 125125 0001000 dizzy@Minty ~ $ hexdump MBR-破壊後.bu 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 00001c0 0001 feee ffff 0001 0000 82af 4a85 0000 00001d0 0000 0000 0000 0000 0000 0000 0000 0000 * 00001f0 0000 0000 0000 0000 0000 0000 0000 aa55 0000200 dizzy@Minty ~ $ しかし、次の例がよくわかりません。 dizzy@Minty ‾ $ echo abcdef | od 0000000 061141 062143 063145 000012 0000007 dizzy@Minty ‾ $ 2バイトを6桁で表示しているようですが、 とりあえず ab の部分だけ見ると 8進数で a:141,b:142 なのを素直に並べたわけでもないようですし、 10進数で a:97,b:98 なので、 ab: 97*256 + 98 = 48*512 + 256 + 64 + 32 + 2 = 6*4096 + 5*64 + 4*8 + 2 より、8進数で表示すると、 ab:6542 となる、というような変換をしたわけでもない。 どういう風な変換法則になっているのか、 どなたでもいいので教えていただけますか?

その他の回答 (5)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.6

No1, No5です。 >dizzy@Minty ‾ $ echo abcdef | od >0000000 061141 062143 063145 000012 について。 "abcdef" を2バイトずつ区切って、"ab"。下位アドレスの"a"=97(10進)を下位バイト、上位アドレスにある"b"=98(10進)を上位バイトとみて(リトルエンディアン)、97+98*256=25185= 6*4096+1*512+1*64+4*8+1=61141(8進) > = 6*4096 + 5*64 + 4*8 + 2 >より、8進数で表示すると、 >ab:6542 は、上下バイトが逆の上に、6*4096 + 5*64 + 4*8 + 2 を8進数に直すと、60542なので二重に間違っています。 リトルエンディアンなのは、Unixが開発されたコンピューターがリトルエンディアンだったから。 https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%88%E3%83%AB%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3

noname#197334
質問者

お礼

ご回答ありがとうございます。 ここのサイトで質問しますと コンピューターに関してプロと思われる方達から 色々と教えていただくことができるので、 本当に勉強になります。 今回もおかげさまで od,hexdump をある程度理解できましたし、 エンディアンについても知識をつけることができました。 エンディアンという言葉はガリヴァー旅行記から来ているのですか。 http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3 (ここを読んでいる一般の方のためのreference) MBRは512バイトしかないので、 もうちょっと頑張れば私でも MBRを od して 何が書き込まれているかを理解できるようになるかもしれませんね。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.4

Linuxでは、ヘキサダンプが良いかと思います。 使い方は、 man hexdump で調査されたし。 一般には、 hexdump -C ファイル名 hexdump -C ファイル名 > printimg printimgをエディタ等で表示します。

noname#197334
質問者

お礼

ご回答ありがとうございます。 hexdump の方が右にテキストファイルの文字も表示されるので (日本語は・・・になりますが) od より使いやすそうですね。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

>2GB の USB なのに > >0000000 000000 000000 000000 000000 000000 000000 000000 000000 >* >16740000000 > >とだけ書いてあります。 >一般のファイルを od で変換した場合は >ちゃんと数字の列が長々と表示されます。 odの-vオプションの意味について調べて下さい。 2004877312バイト分の出力なので、最後が16740000000になっているのでしょう。 ちなみに、8進数表記になっているのでお間違えのないように。 16進数で表記したいなら-tオプションについて確認を。 >USB全体を消したのにパーティションが見えていた最初の方が変なのですが。 カーネルのキャッシュに残っていたんでしょう。 syncコマンドで適用すれば消えたんじゃないですかね。 あるいは読み書きした時点でエラーになったかもしれません。

noname#197334
質問者

お礼

ご回答ありがとうございます。 最初読んだ時 2004877312 という数字はどこから出てきたのだろうと思いましたが、 8進数の 16740000000 を10進数に変換すると 2004877312 になる、というわけなのですね。 http://www.peko-step.com/tool/nsin.html (ここを読んでいる一般の方のためのreference) sync というコマンドにつきましてはイマイチよく分からないです。 http://tewasura.com/?USB_Install などと書いてありますが、 私は cat debian-6.0.6-amd64-netinst.iso > /dev/sdb の段階でずっと書き込まれていて sync のコマンドを実行しても一瞬で終わりましたし。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

普通に可能ですねぇ…。 >odはファイルが対象でないとうまくいかないようでして。 デバイス「ファイル」について調べてみるといいかと思います。

noname#197334
質問者

お礼

ご回答ありがとうございます。 回答No.1 の方の欄に詳細を書きこんでおります。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

>odはファイルが対象でないとうまくいかないようでして。 普通に出来ますけど(rootユーザじゃ無いとだめですよ)。 どんなコマンドを打って、どんなエラーになりましたか? df の結果も書いてください。

noname#197334
質問者

お礼

ご回答ありがとうございます。 今回の質問は http://okwave.jp/qa/q8404421.html の途中の操作 $ sudo dd if=/dev/zero of=/dev/sdc bs=128M count=17 のコマンドできちんとUSB全体が消去できているかと確かめようと思ってしたことなのですが、 dizzy@PC03 ~ $ sudo dd if=/dev/zero of=/dev/sdc bs=128M count=17 [sudo] password for dizzy: dd: `/dev/sdc' を書き込んでいます: デバイスに空き領域がありません 15+0 レコード入力 14+0 レコード出力 2004877312 バイト (2.0 GB) コピーされました、 256.46 秒、 7.8 MB/秒 をした後、 dizzy@PC03 ~ $ sudo od /dev/sdc > od-result.txt dizzy@PC03 ~ $ とうまくいったようでして、 (申し訳ありませんが、さっきなぜ失敗したのかはよく分かりません) od-result.txt の中身を見てみますと、 2GB の USB なのに 0000000 000000 000000 000000 000000 000000 000000 000000 000000 * 16740000000 とだけ書いてあります。 一般のファイルを od で変換した場合は ちゃんと数字の列が長々と表示されます。 この場合は全体が空なので MBR だけ表示される、ということでしょうか? しかし上記のデータは512バイトもないと思うのですが・・・ ゼロで埋めたはずなのに「1674」とか書いてあるのも妙ですし。 念のために df の結果を載せておきます。 sudo dd if=/dev/zero of=/dev/sdc bs=128M count=17 sudo od /dev/sdc > od-result.txt をした直後は dizzy@PC03 ~ $ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda10 20G 11G 7.8G 58% / udev 1.9G 4.0K 1.9G 1% /dev tmpfs 773M 1.1M 772M 1% /run none 5.0M 0 5.0M 0% /run/lock none 1.9G 312K 1.9G 1% /run/shm /dev/sda6 90G 12G 79G 13% /media/DATAFAT32_ /dev/sda9 20G 6.2G 13G 33% /media/Debian /dev/sda8 9.9G 6.8G 2.6G 73% /media/Ubuntu /dev/sda2 15G 7.3G 7.5G 50% /media/Recovery /dev/sdc6 600M 17M 553M 3% /media/live-rw /dev/sdc5 1.3G 34M 1.2G 3% /media/debian-live だったのが、USBを抜き差ししてからだと dizzy@PC03 ~ $ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda10 20G 11G 7.8G 58% / udev 1.9G 4.0K 1.9G 1% /dev tmpfs 773M 1.1M 772M 1% /run none 5.0M 0 5.0M 0% /run/lock none 1.9G 312K 1.9G 1% /run/shm /dev/sda6 90G 12G 79G 13% /media/DATAFAT32_ /dev/sda9 20G 6.2G 13G 33% /media/Debian /dev/sda8 9.9G 6.8G 2.6G 73% /media/Ubuntu /dev/sda2 15G 7.3G 7.5G 50% /media/Recovery というように /dev/sdc6,/dev/sdc5 が消えています。 というか、 USB全体を消したのにパーティションが見えていた最初の方が変なのですが。

関連するQ&A