[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 メーリングリストの案内