第二夜 〜 ハードディスク解析 ー 総論 〜

目次 †

始めにお断りしておきますが、以下の内容には他者の知的財産権を侵害する恐れがあるため、
自主規制により曖昧な表現しかできない場合があることをご了承ください。
これも大人の事情ですのでご理解ください。
興味のある方は各自HDDからイメージを取得した後、見比べながらお読みくだされば理解が深まるものと存じます。

 

はじめに †

HDDに書き込まれている情報 (バイナリデータ) を扱う際のお約束として、

1.16進数を用いての表記
  16進数では、9の次はAとなり、B, C, D, E, Fと続き、10進数での16が 16進数では10となる。
  時々頭が混乱するややこしい表記法。
  10進数と16進数が入り混じると余計にややこしくなるため、ここでは16進数で表記する際には数字の前に
  「0x」を付けることとする。例:0x10 = 16、0xFF = 255

2.数を数える場合、0から数える
  これも頭が混乱するややこしい話であるが、
  日常の「1, 2, 3,…」とは異なり、こっちの世界では「0, 1, 2, …」と数えることが多い。

解析方法は、dd コマンドで HDD の内容を 1.024GB 毎のイメージファイルに書き出し、
それを MacOS のバイナリエディタ「HexEdit? v2.2.0 J」で読み込み解析した。

HDD 内容の全体的な印象として、
1.ファイルシステムやパーティションなどの明確な構造を持たず、単なるバイトデータの集合体である。
  そのためフォルダ・ファイルといった構造もなく、PC に接続しても「読み込めません。初期化しますか?」
  と警告を受ける。「RAW」の状態と言える。

2.HDD 先頭から 2 または 4GB と末端 2GB の領域は通常の PC の HDD データ同様「00」が多くスカスカであるが、
  それ以外の中央領域は隙間なくギッシリ書き込まれていて録画データと思われる。
  一方、先頭・末端領域にはいわゆるシステム管理情報・辞書情報・HDD のアドレス(位置) 情報・録画タイトル
  リスト・EPG (電子番組表) と思われる重要なデータが格納されている。
  特にこの HDD 両端領域はアクセス (データの書き換え) が激しく HDD クラッシュの一因と考えられる。

3.両端の領域では同じデータが2回連続していて、その一つがバックアップとして用いられている模様。
  片方を「00」で埋めても (ゼロフィル) 元通りに再生されるが、両方をゼロフィルするとエラーとなる。

4.HDDを初期化して解ったことだが、HDD を正常に機能させるのに必要なデータには、
  A.レコーダー内に保持され、通電・起動時に書き込まれる (コピーあるいは再計算される) もの
  B.HDD内にだけ予め書き込まれているもの
  の2種類があり、後者にデータの欠損があると HDD は正常に機能しなくなる。
  そのため HDD が健康なうちにバックアップを保存することを強くお勧めする。

5.レコーダーの起動過程での HDD のチェックが少なくとも3段階行われているようだ。
  A.電源プラグをコンセントに繋いだ時 … スタンバイ時
  B.電源ボタンで本体起動時      … HDD・BD/DVD (白) ランプ点滅時
  C.「ディスク読み込み中」表示時   … HDD (白) ランプ点滅時

  各段階でどのようなチェックが行われているか知る由もないが、何らかの異常が見つかった時には、
  修正しようと通常より時間がかかり「ディスクを確認しています。完了まで10分以上かかる場合があります。」
  と表示され、最悪無限ループに陥ってしまいいつまで経っても完了しない場合がある。
  またこれらすべてのチェックをパスし一見正常に起動したように見えても、HDD にアクセスすると
  「ハードディスク準備中です。操作できません。」の表示が出る場合もある。
  いずれの場合も HDD に問題ありと判定され、レコーダー固有の容量に変更されてしまうため増量換装は不可能。

6.アドレス (HDD 内の位置を示す値) は4バイト区切りであり、4バイト以内に収まるように0x1000で除した値
  が用いられる。また特殊なケースではその前に乗数 (係数) を指定し表示されている。

  例)00 00 02 00 00 00 01 00 では 0x200 * 0x100 = 0x20000 を意味する。

  バイトオーダーは大部分はビッグエンディアンであるが、ごく一部でリトルエンディアンが使用されている。

 

HDD先頭領域 †

HDD の領域を指定するのに「Block」という単位を用いることとする。
この「Block」は独自の定義であり、1Block = 1.024GB = 81920 x 12500 に相当し、
dd コマンドでディスクイメージを取得する (bs=81920 count=12500) 時の単位である。

1Block 目 = HDD 先頭から     0-1.024GB の領域
2Block 目 = HDD 先頭から 1.024-2.048GB の領域
3Block 目 = HDD 先頭から 2.048-3.072GB の領域
4Block 目 = HDD 先頭から 3.072-4.096GB の領域

全機種共通 †

1Block 目

  • 0x0-0x7FE00 (0-523,776バイト)
    調査した全機種で共通の構造。勿論、値は機種により異なる。
    0x200 (=512バイト) 長のユニットから構成され、同一内容のユニットが2個連続している。

各ユニットは初めの30行 (0-0x1E0) と残りの2行 (0x1E0-0x200) に分けられる。
データは4バイト区切りと思われる。

初めの30行の偶数行では最初の12バイトにのみ値が存在するが、その意味するところは不明。

終端2行の上の行後半4バイト 2個には同じ値が認められるが、レコーダーを通電・起動する度に

+1増加するユニットがあり、何回起動したのかを記録するカウンターの役割を担っているようだ。

終端2行の下の行末尾4バイトは、pngファイルのCRCに似た当該ユニットデータの整合性を検査する値であると推測される。
ここでは詳しく述べないが、その計算式は単純な合計と判明した。

データの無い部分はすべて「00」ではなく「E5」で埋められていて、書き込み禁止・予約領域などの意味か。

この領域はゼロ消去(全て 00 に上書きすること)してもレコーダーの起動には全く影響しない。

  • 0x7FE00-0x80000 (523,776-524,288バイト)
    第1行目 (0x7FE00-0x7FE10) のみ機種毎に異なるが、ASCIIコードで [EP11] で始まるそれ以降は、調査した全機種で同一の値を持つ。

第1行目のみをゼロ消去してもレコーダーの起動には全く影響しなかった。

第2行目降の 0x7FE10-80000 を消すと、メンテナンスモードでHDD-ID の項目が赤で「FORMAT」と表示され、
HDD-IDを登録できなくなるため、ここだけが機能上必須領域と思われる。

これ以降の領域については機種によって異なるので、代表的な DV-AC82、BD-HDW25、BD-HDW70 について述べる。

DV-AC82 †

1Block 目

  • 0x80000-0x820000
    プログラム領域と思われる。
    「need dictionary invalid window size unknown compression method …」などのエラーメッセージ、
    「inflate 1.1.4 Copyright 1995-2002 Mark Adler」zlib関連のクレジットが読み取れる。
  • 0x1E00000-0x1F4CDF0
    補助辞書情報と思われる。
    50音順で英単語が列記されている。
  • 0x2000000-0x27A0000
    「L12A120.IMG」の文字が読み取れるので、DVDドライブに関係したプログラム?領域と思われる。
  • 0x2E1C800-0x37493C88
    録画タイトルのインデックス画像のデータと思われる。
    「00 00 00 E0 00 00 00 7E」で始まる長さ 0xDC88 のデータが398カ所存在する。

2Block 目

  • 0x5D70000-0x5D76010 (0x42E00000-0x42E06010)
    [C4 C8 F0 CC (DA CC CA C6)x7]の繰り返し配列。内容不明。
  • 0x5D80000-0xE580000 (0x42E10000-0x4B610000)
    おたすけ博士「一緒に操作を覚えよう」 HELP 動画データ。全長 0x8800000。
    HDD 換装時に「ハードディスクの更新」に必須となる領域。
    HDD 初期化時には、このデータを基に後方の 0x2DB42000 と末端から
    1または2Block 遡った場所に書き込まれる。
  • 0xE580000-0xE58A000 (0x4B610000-0x4B61A000)
    「EXT0」「TRP00001」や 4 バイトのリストなどおたすけ博士動画関連データが並んでいる。
    この部分の同一のデータが末端から1Block遡ったEnd-1にも認められ、End-1にコピーされるようである。
  • 0x15D70000-0x163B0000 (0x52E00000-0x53440000)
    [00 00 00 2E] で始まり、EPG (電子番組表)が書き込まれる領域と思われる。
    初期状態では、[12 34 56 78 FF (FFの連続) FF 87 65 43 21]からなる長さ0x20000の繰り返し。
    この部分の類似のデータが末端から 1Block 遡った End-1 の 0-Point にも認められる。
  • 0x22F70000-0x22F72000 (0x60000000-0x60002000)
    [00 01]モチーフ 後述。
  • 0x22F72000-0x22F74000 (0x60002000-0x60004000)
    [00 02]モチーフ 後述。
  • 0x22F74000-0x238D2000 (0x60004000-0x60962000)
    [00 03]モチーフ 後述。
  • 0x238D2000-0x23905000 (0x60962000-0x60995000)
    [00 04/5]モチーフ 後述。
  • 0x23905000-0x258D2000 (0x60995000-0x62962000)
    [00 00 00 00 00 00 00 01]モチーフ 後述。
  • 0x29932000-0x29932040 (0x669C2000-0x669C2040)
    「DVD_RTAV」
  • 0x2993A000-0x29B42000 (0x669CA000-0x66BD2000)
    「VR_MANGR.IFO/VR_MANGR.BUP/VR_ENTRY.IFO/VR_TMENT.IFO/VR_MOVIE.VRO」
  • 0x29942000-0x29B42000 (0x669D2000-0x66BD2000)
    「DVD_RTR_VMG0」
  • 0x2D942000-0x2DB42000 (0x6A9D2000-0x6ABD2000)
    「DVD_RTR_VMG0」
  • 0x2DB42000-0x31942000 (0x6ABD2000-0x6E9D2000)
    長さ 0xC0 (192) 毎の繰り返し配列。全長 0x3E00000。

BD-HDW25 †

1Block 目

  • 0x80000-0x2158030
    「SHARPLS10」「ADA10」「discTrak」「DVBTestLog?.txt」などが読み取れる。
  • 0x2160000-0x2161EE0
    上記「DVBTestLog?.txt」の内容か?
  • 0x60E0000-0x81C0030
    「SHARPLS10」「BUDA10」「scrnsave.sav」などが読み取れる。
    BD-J(Blu-ray Disc Java)デジタルテレビ用Java仕様関連のデータか?
    ADA (Application Data Area?) : アプリケーションのデータを格納することを想定した領域
    BUDA (Binding Unit Data Area?) : BDメディアの内容を見かけ上アップデートするためのデータを格納するための領域

2Block 目

  • 0x22FF0000-0x23570000 (0x60080000-0x60600000)
    プログラム領域と思われる。
    「need dictionary invalid window size unknown compression method …」などのエラーメッセージ、
    「inflate 1.1.4 Copyright 1995-2002 Mark Adler」zlib関連のクレジットが読み取れる。
  • 0x23570000-0x24730000 (0x60600000-0x617C0000)
    プログラム領域と思われる。
    「SHARP EMMA3」(Enhanced Multi Media Architecture) デジタルハイビジョン放送の受信・DVDディスクや
    HDDへの録画・MPEG-2/4デコーダ機能などを有するシステムLSI。
    「NEC VR4100」「R4000SC」などのマイクロプロセッサ名が認められる。
    「kernel, /sbin/init, /bin/sh, /sys/block, libc.so, libjpeg.so, libssl.so, …」
    「Linux, 2.6.21.5emma3, PREEMPT Thu Sep 30 15:48:20 JST 2010, mips」
    Linux/Java関連の用語がゴロゴロしている。
  • 0x26FF0000-0x2713CE00 (0x64080000-0x641CCE00)
    補助辞書情報と思われる。
    50音順で英単語が列記されている。
  • 0x271F0000-0x273EF400 (0x64280000-0x6447F400)
    「L04_130.IMG」の文字で始まるので、BD/DVDドライブに関係したプログラム?領域と思われる。
  • 0x275F0000-0x276E8800 (0x64680000-0x64778800)
    「WH26R2_118」の文字で始まるが、内容は不明。
  • 0x2B81AC00-0x3CF5E888 (0x688AAC00-0x79FEE888)
    録画タイトルのインデックス画像のデータと思われる。
    「00 00 00 E0 00 00 00 7E」で始まる長さ 0xDC88 のデータが171カ所存在する。

3Block 目

  • 0x22C01800-0x231D9488 (0x9CD21800-0x9D2F9488)
    録画タイトルのインデックス画像のデータと思われる。
    「00 00 00 E0 00 00 00 7E」で始まる長さ 0xDC88 のデータが66 (合計237) カ所存在する。
  • 0x2E770000-0x375F0000 (0xA8890000-0xB1710000)
    おたすけ博士「一緒に操作を覚えよう」 HELP 動画データ。。
    この部分の類似のデータが末端から2Block遡ったEnd-2にも認められるが、
    繰り返し構造の頭16バイトだけが同一でその他の部分は全く異なる。
  • 0x375F0000-0x375FA000 (0xB1710000-0xB171A000)
    「EXT0」「TRP00001.4」や4バイトのリストなどおたすけ博士動画関連データが並んでいる。
    この部分の同一のデータが末端から 1Block 遡った End-1 にも認められ、End-1 にコピーされるようである。

4Block 目

  • 0x16D0000-0x1D10000 (0xB8880000-0xB8EC0000)
    [00 00 00 2E] で始まり、EPG (電子番組表)が書き込まれる領域と思われる。
    EPGの書き込まれる前は、[12 34 56 78 FF (FFの連続) FF 87 65 43 21]からなる長さ0x20000の繰り返し。
    この部分の類似のデータが末端から1Block遡ったEnd-1にも認められる。
  • 0x8E50000-0x8E54000 (0xC0000000-0xC0004000)
    [00 01]モチーフ 後述。
  • 0x8E54000-0x8E56000 (0xC0004000-0xC0006000)
    [00 02]モチーフ 後述。
  • 0x8E56000-0x9A0C000 (0xC0006000-0xC0BBC000)
    [00 03]モチーフ 後述。
  • 0x9A0C000-0x9A58000 (0xC0BBC000-0xC0C08000)
    [00 04/5]モチーフ 後述。
  • 0x9A58000-0xBA0C000 (0xC0C08000-0xC2BBC000)
    [00 00 00 00 00 00 00 01]モチーフ 後述。
  • 0x11A7C000-0x11C7C000 (0xC8C2C000-0xC8E2C000)
    「DVD_RTR_VMG0」
  • 0x1BA0C000- (0xD2BBC000-)
    これ以降録画データと思われる。

BD-HDW70 †

1Block 目

  • 0x8E400-0x2DEB888
    録画タイトルのインデックス画像のデータと思われる。
    「00 00 00 E0 00 00 00 7E」で始まる長さ 0xDC88 のデータが701カ所存在する。

2Block 目

  • 0xC170800-0x12794C88 (0x49200800-0x4F824C88)
    録画タイトルのインデックス画像のデータと思われる。
    「00 00 00 E0 00 00 00 7E」で始まる長さ 0xDC88 のデータが29 (合計730) カ所存在する。

3Block 目

  • 0x25F60000-0x26FE0000 (0xA0080000-0xA1100000)
    プログラム領域と思われる。
    「need dictionary invalid window size unknown compression method …」などのエラーメッセージ、
    「inflate 1.1.4 Copyright 1995-2002 Mark Adler」zlib関連のクレジットが読み取れる。
  • 0x26FE0000-0x284D8D10 (0xA1100000-0xA25F8D10)
    プログラム領域と思われる。
    「Compressed ROMFS」
    Linux/Java関連の用語がゴロゴロしている。
  • 0x29F60000-0x2B318D24 (0xA4080000-0xA5438D24)
    補助辞書情報と思われる。
    50音順で英単語が列記されている。
  • 0x2E6E0000-0x2E6E01F0 (0xA8800000-0xA88001F0)
  • 0x2E760000-0x30E60304 (0xA8880000-0xAAF80304)
    「M2TS0100」で始まる長さ0x200程度のデータが、0x100000毎に40回繰り返す。

4Block 目

  • 0xF2D0000-0xF910000 (0xC6480000-0xC6AC0000)
    [00 00 00 2E] で始まり、EPG (電子番組表)が書き込まれる領域と思われる。
    EPGの書き込まれる前は、[12 34 56 78 FF (FFの連続) FF 87 65 43 21]からなる長さ0x20000の繰り返し。
    この部分の類似のデータが末端から 1Block 遡った End-1 の 0-Point にも認められる。
  • 0x12E50800-0x12E54800 (0xCA000800-0xCA004800)
    [00 01]モチーフ 後述。
  • 0x12E54800- 0x12E56800 (0xCA004800-0xCA006800)
    [00 02]モチーフ 後述。
  • 0x12E56800- 0x13A0C800 (0xCA006800-0xCABBC800)
    [00 03]モチーフ 後述。
  • 0x13A0C800-0x13A4A800 (0xCABBC800-0xCABFA800)
    [00 04/5]モチーフ 後述。
  • 0x13A4A800-0x15A0C800 (0xCABFA800-0xCCBBC800)
    [00 00 00 00 00 00 00 01]モチーフ 後述。

Counter: 697, today: 10, yesterday: 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-05 (金) 21:07:24 (67d)