日記を消してしまったのと、
毎回この手の「なんだっけ?」でググると自分のページが出る(笑)という状況なのでまとめます
MBRを取得する
$ sudo dd if=/dev/hda of=mbr.img bs=512 count=1
バイナリを見る
$ od -tx1 mbr.img
バイナリと一緒にASCII文字も読む
$ hexdump -C mbr.img
可読な文字だけ表示する
$ strings mbr.img
4つの基本パーティションを確認する
$ od -tx1 -j 446 -N 64 mbr.img
起動フラグがアクティブ「0x80」なパーティションを確認する
「0x00」は非アクティブ(ブート不可)
$ od -tx1 -j 446 -N 64 mbr.img | awk -F" " '{print $2}' | nl
ブートシグニチャが「0xAA55(表示は 55 aa)」でMBRが有効になっていることを確認する
$ od -tx1 -j 510 -N 2 mbr.img
Stage1のアセンブラで言う「jmp命令(表示は eb 48)」を確認する
$ od -tx1 -N 2 mbr.img
MBRからパーティション情報を除いて出力する
$ dd if=mbr.img of=a.out bs=446 count=1
逆アセンブルをして、Stage1全体のコードを確認する
$ objdump -D -b binary -d -mi386 a.out
各パーティションのCHSの開始位置を確認する
$ od -tx1 -j 446 -N 64 mbr.img | awk -F" " '{print $3" "$4" "$5}' | nl | head -4
各パーティションのパーティションタイプを確認する
$ od -tx1 -j 446 -N 64 mbr.img | awk -F" " '{print $6}' | nl | head -4
各パーティションのCHSの終了位置を確認する
$ od -tx1 -j 446 -N 64 mbr.img | awk -F" " '{print $7" "$8" "$9}' | nl | head -4
各パーティションのLBAの開始位置を確認する
$ od -tx1 -j 446 -N 64 mbr.img | awk -F" " '{print $13" "$12" "$11" "$10}' | nl | head -4
各パーティションのLBAの総セクタ数を確認する
$ od -tx1 -j 446 -N 64 mbr.img | awk -F" " '{print $17" "$16" "$15" "$14}' | nl | head -4
パーティション部分だけを書き出す(of=part.img でも良い)
$ dd if=mbr.img bs=1 skip=446 count=64 > part.img
CHSの始点と終点を確認する
$ od -tx1 part.img | awk -F" " '{print $3 $4 $5" "$7 $8 $9}' | tr '[a-f]' '[A-F]' | \
for chs in `xargs`; \
do \
H=0;S=0;CH=0;CL=0;C=0;\
let H="0x${chs}/0x010000"; \
let S="0x${chs}%0x010000/0x0100%0x040"; \
let CH=0x"${chs}%010000/0x0100/0x040"; \
let CL="0x${chs}%0100"; \
let C="0x${CH}*0x0100+${CL}";\
echo -ne "C=${C}\t0x";dc -e "10i 16o ${C} p" | echo -ne `xargs`"\t:"; \
echo -ne "\tH=${H}\t0x";dc -e "10i 16o ${H} p" | echo -ne `xargs`"\t:"; \
echo -ne "\tS=${S}\t0x";dc -e "10i 16o ${S} p" | echo -ne `xargs`"\t:"; \
echo "0x${chs}"; \
done;echo ""
LBAの始点と総セクタ数を確認する
$ od -tx1 part.img | awk -F" " '{print $13 $12 $11 $10" "$17 $16 $15 $14}' | tr '[a-f]' '[A-F]' | \
for lba in `xargs`; \
do \
L=0; \
let L="0x${lba}"; \
echo -ne "L=${L}\t0x";dc -e "10i 16o ${L} p" | echo -ne `xargs`"\t:"; \
echo "0x${lba}"; \
done;echo ""
LBAの表示結果をfdsik結果と見比べる
$ sudo fdisk -lu /dev/hda