スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[--/--/-- --:--] | スポンサー広告 | page top
Officeファイル検証機能で問題が出たファイルの修復#2

前回に引き続き、Office検証機能で問題が発見された時の復旧方法を書きます。今回は、問題の内容確認と修正方法についてがテーマです。

 バイナリエディタで、Officeファイルを開いて修正します。かなり、分かりにくくリスクが高いです。どうしても問題を解決したい時の最終手段だといえます。

1.問題の確認
 (1)スタートメニューから、「Microsoft Office Binary File Format Validator」を実行します。「bffvalidator.exe 対象ファイルのパス」を入力します。
bffvalidator画面

 (2)Enterキーを押して実行すると、以下のエラーメッセージが表示されます。
  1行目:実行日時
  2行目:詳細な情報が書かれたログファイルの場所
  3行目:説明サイト(Microsoft のオープン仕様セクション)へのリンク
bffvalidator実行結果

 (3)ログのXMLファイルをテキストエディタで開きます。
ログ

エラー情報は、最後と最後から2番目のTypeタグに入っているようです。
赤枠内のmsdnLink、childId、streamOffset、LastDataが見るところです。

 (4)msdnLinkのURLをブラウザで開きます。
msdn   
上の0x00から0x31までの表は、構造体です。XMLのchildIdと構造体の要素の順序は対応しています。(childIdが1の場合、versを指します)。
今回は、childIdが9なので、すなわち「E」です。

同じページのもう少し下に、各要素の説明が書かれています。
msdn2

今回は、EですがMacで編集されたと分かり、値が0でないいけないと分かります。
どこの値が0かといいますと、XMLのLastDataです。LastDataとは、bffvalidator.exeで読み取られた最後の4バイトのことです。(bffvalidator.exeは、最初のエラーで読み取りをやめるようです)。
D9 40 03 00 -- -- -- -- -- -- -- -- -- -- -- -- .@..
]]>

2.問題の修正
 (1)バイナリエディタでOfficeファイルを開きます。
修正1

 hexStreamOffset(今回は、0xc)から、LastData最後の4バイトを探します。Offsetの開始位置についての説明が不明なのですが、どうやらFFが続いた後(0x200)からのOffsetのようです。

 (2)構造体の「E」は、0x00でないといけないので、0x00に修正します。
修正2

 (3)名前を付けて保存で、別のファイル名を付けて保存します。再度、bffvalidator.exeを実行します。エラーが出なくなるまで、この手順を繰り返します。


バイナリファイルのどのバイト(ビット)をどのような直せばよいかがややこしいです。
エラーの内容ごとに英語版MSDNの内容を理解して対応するので、ここで時間がかかります。
また、対象のデータ型が数値の場合、リトルエンディアンにより位置をひっくり返すことになります。

※ リトルエンディアンとは?

例えば 1234ABCD(16進数)という4バイトのデータを、データの上位バイトからメモリに「12 34 AB CD」と並べる方式をビッグエンディアン[1]、データの下位バイトから「CD AB 34 12」と並べる方式をリトルエンディアン[2]という。

―引用―
「"エンディアン"」『フリー百科事典 ウィキペディア日本語版』より。
最終更新 2012年8月15日 (水) 11:09 UTC
URL: http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3

3.感想
・Microsoftのサイトに書かれていた方法ですが、かなり大変です。特に、msdnの英語での説明を読んで、取るべき値を理解するのは苦労します。また、バイナリファイルを直接開いて修正するので、そこでファイルが壊れるかもしれません。
・リスクが高く大変な作業の割に、効果が実感しにくいです。セキュリティ上問題がないことを検証した上で、配布先に無視してもらった方がコスト的にはよいかもしれません。
・メッセージが気持ち悪くて、どうしても問題の場所・原因を特定したい時の最終手段だと思います。



関連記事

テーマ:トラブル - ジャンル:コンピュータ

[2012/09/21 18:24] | Office | トラックバック(0) | コメント(0) | page top
<<日経Systems10月号を読みました。 | ホーム | Officeファイル検証機能で問題が出たファイルの修復#1>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバック URL
http://gogyosan.blog.fc2.com/tb.php/10-88d12414
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。