Perlについての質問箱 14箱目
■ このスレッドは過去ログ倉庫に格納されています
0858853
NGNGより引用。
Q. バイナリファイルの判定
たとえば、ASCIIコードと改行などわずかなコントロールコードだけで構成される
ファイルの場合、プレーン・テキストだと類推できます。
また、ほとんどのバイナリファイルには特徴的なコードが埋め込まれているので、
そこからどんなタイプのファイルなのかを知ることができます。たとえば、
「%PDF-1.3」で始まる文字列が書き込まれていれば、Acrobatで読むことのできる
PDFファイルであることがわかりますし、先頭に「#!/bin/sh」とあれば
シェルスクリプトです。
バイナリの実行ファイルなども同様で、OSなど実行環境に特有のコードパターンが
書き込まれています。このパターンを「マジック」あるいは「マジックナンバー」と
呼びます。UNIXの file (1) コマンドは、「ファイルシステム>マジック>言語」の
順でチェックを行い、ファイルの種類を判別しています。
マジックにはたくさんの種類がありますので、ぜんぶ自分で調べてプログラムを
つくっていては骨が折れますから、file(1)でも参照しているマジックナンバーの
リスト(/usr/share/magicなど)を利用するとよいかもしれません。
■ このスレッドは過去ログ倉庫に格納されています