[Namazu-devel-ja 1556] OLE-Storage の判定に File::MMagic::addContainerHook を利用

Yukio USUDA m6694ha392t @ asahi-net.or.jp
2007年 4月 13日 (金) 22:55:56 JST


臼田です

昨年7月に File::MMagic に追加された addContainerHook 
() を
活用して OLE Object を作成したアプリケーションを判定する
サブルーチンを作成しました。
動作テスト用スクリプト olesummary.pl を添付しています。

OLE-Storage から Summary Info を抽出する部分には
OLE-Storage-Lite を使用しています。
プロパティを取得するサブルーチン get_ole_info() は
wvWare に含まれる wvSummary のサブルーチンを参考に
して作成しています。

OLE ストレージ系のファイルの名前を引数として
olesummary.pl を実行すると
Summary Info 内のいくつかのプロパティと mime-type を表示し 
ます。

使用する際には
File::MMagic のリポジトリから addContainerHook() を含んだ
最新版(r275)を入手したのち
MMagic.pm を編集し ms-word 等に関する magic データの 
うち
x-ole-storage と同じものを削除してインストールする必要があります。
(r275 との diff も添付しています)

・一太郎ファイルには Summary Info の中に作成アプリケーショ 
ン名
 が含まれないため JSRVSummary_Infomation の有無を調べて判 
定しています。
・ Visio ファイルも Summary Info の中に作成アプリ 
ケーション名
 が含まれないためなんらかの対策が必要です。
 (サンプルスクリプトでは拡張子を使用して判定しています)
・ File::MMagic に application/ms-ole-object の  
magic データを
 追加して ms-word の magic データをいくつか削除しよ 
うと思います。
 ただし、 magic データを変更することで ファイルの判 
定がこれまでと
 変わる可能性があります。対応はどうしましょうか。
 a) File::MMagic は application/ms-ole-object と返 
すことを標準として
   addContainerHook はアプリケーション側で実行するものと 
する。
 b) File::MMagic に OLE ストレージ用のサブルーチン 
も追加し
   初期化時(もしくは必要な際)に  
OLE_Storage_Lite と
   addContainerHook を実行するようにする。
   get_ole_info() サブルーチンを作成する際に参照した  
wvWare
   のライセンスが GPL なので File::MMagic と 
は混ぜられないかもし
   れません。
   ただし、ファイルフォーマットを解析する上でポインタ情 
報等を
   利用したものなので、コードは原型をとどめておらず、移 
植とまで
   いうものではないかもしれません。

臼田幸生

-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: diff.txt
URL:  http://www.namazu.org/pipermail/namazu-devel-ja/attachments/20070413/281873d2/diff.txt
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: olesummary.pl
型:         text/x-perl-script
サイズ:     6192 バイト
説明:       無し
URL:        http://www.namazu.org/pipermail/namazu-devel-ja/attachments/20070413/281873d2/olesummary.bin
-------------- next part --------------



Namazu-devel-ja メーリングリストの案内