Hatena::Grouplinux2

Going My Linux Way このページをアンテナに追加 RSSフィード

2012年05月15日(火)

binfmt - JPEG 画像ファイルを「実行」して表示する

23:17 | binfmt - JPEG 画像ファイルを「実行」して表示する - Going My Linux Way を含むブックマーク はてなブックマーク - binfmt - JPEG 画像ファイルを「実行」して表示する - Going My Linux Way binfmt - JPEG 画像ファイルを「実行」して表示する - Going My Linux Way のブックマークコメント

binfmt は Linuxバイナリフォーマットファイルの実行方法を制御する仕組みです。

ここでは実験として、

JPEG 画像ファイルを「実行」した場合に画像ビューアでそれを表示する

ように設定してみます。

JPEG 画像フォーマットを特定するマジックナンバーは以下です。

オフセット 6 バイトの位置の "JFIF"

binfmt の設定などは、update-binfmts コマンドで行えます。

画像ビューアは /usr/bin/eog を使用することにします。

手順

#
# 登録する
#
$ sudo update-binfmts --install jpeg /usr/bin/eog --magic "JFIF" --offset 6

#
# 登録内容を確認
#
$ update-binfmts --display jpeg
jpeg (enabled):
     package = <local>
        type = magic
      offset = 6
       magic = JFIF
        mask = 
 interpreter = /usr/bin/eog
    detector = 

#
# 試してみる (JPEG 画像ファイル hoge.jpg は適当に用意)
#
$ chmod +x hoge.jpg		  # JPEG 画像ファイルに実行権を付与
$ ./hoge.jpg              # JPEG 画像ファイルを'実行'する
# (eog が起動して hoge.jpg が表示される)

#
# 登録を削除
#
$ sudo update-binfmts --remove jpeg /usr/bin/eog

参考ですが、

JPEG の代わりに PNGGIF(GIF89a) を登録する場合は以下のようにします。

#
# PNG 画像フォーマットを登録する場合
#
$ sudo update-binfmts --install png /usr/bin/eog --magic "\x89PNG\x0d\x0a\x1a\x0a"

#
# GIF (GIF89a) 画像フォーマットを登録する場合
#
$ sudo update-binfmts --install gif /usr/bin/eog --magic "GIF89a"
トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120515