@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

Windows Searchデータベースの修復

SC Suite v4.0 に含まれる Windows Search Index Extractor 1.3 ツールをテストしていたりするんですけど、Windows XP 上で Windows 7Windows.edb を解析させると(予想通り?)ページサイズが違うといってエラーになるのでサポートに問い合わせ...orz
とはいえ、XP+Windows Search が作成した Windows.edb ファイルは解析できて、日本語文字列も正常に出力されているように見えるのでなかなかヨサゲ!です。先日調べたEseDbViewerは同じ Windows.ebd ファイルの解析がエラーになって落ちるので実質使えるツールがこれしかない?!
で、XP上の Windows Search の Windows.edb ファイルをテストしているのですが、ちょっとはまったので忘れないようにメモ。
正常にシャットダウンされている場合には影響ないのですが、強制的に電源を断したり、稼働中システム(ライブ・フォレンジック)から取得した Windows.edb ファイルを解析しようとすると、ダーティな状態(State: Dirty Shutdown)なので、ツールがこれを処理できない場合があります。

C:\case\XP\Windows>esentutl /mh Windows.edb

Microsoft(R) Windows(TM) Database Utilities
Version 5.1
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating FILE DUMP mode...
      Database: Windows.edb

        File Type: Database
   Format ulMagic: 0x89abcdef
   Engine ulMagic: 0x89abcdef
 Format ulVersion: 0x620,9
 Engine ulVersion: 0x620,9
     DB Signature: Create time:01/08/2010 12:10:04 Rand:1793142014 Computer:
         cbDbPage: 8192
           dbtime: 174 (0xae)
            State: Dirty Shutdown

esentutilコマンドの Repair (/p)オプションを使うとダーティー状態を修復できるようなのですが、この手順で良いのかもう少し確認が必要かもしれません。とりあえずこれを実行した後であればツールから処理できたので結果オーライではあるんですが...トランザクションログを適用しないとか細かい動作内容については別途確認する必要があるかもしれません。

C:\case\XP\Windows>esentutl /p Windows.edb

Microsoft(R) Windows(TM) Database Utilities
Version 5.1
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating REPAIR mode...
        Database: Windows.edb
  Temp. Database: TEMPREPAIR7088.EDB

Checking database integrity.

The database is not up-to-date. This operation may find that
this database is corrupt because data from the log files has
yet to be placed in the database.

To ensure the database is up-to-date please use the 'Recovery' operation.


                     Scanning Status (% complete)

          0    10   20   30   40   50   60   70   80   90  100
          |----|----|----|----|----|----|----|----|----|----|
          ...................................................

Scanning the database.

                     Scanning Status (% complete)

          0    10   20   30   40   50   60   70   80   90  100
          |----|----|----|----|----|----|----|----|----|----|
          ...................................................


Repairing damaged tables.

                     Scanning Status (% complete)

          0    10   20   30   40   50   60   70   80   90  100
          |----|----|----|----|----|----|----|----|----|----|
          ...................................................

Repair completed. Database corruption has been repaired!

Note:
  It is recommended that you immediately perform a full backup
  of this database. If you restore a backup made before the
  repair, the database will be rolled back to the state
  it was in at the time of that backup.

Operation completed successfully with 595 (JET_wrnDatabaseRepaired, Database corruption has been repaired) after 34.938 seconds.