fileコマンド

/ Linux/Unix / Comment[0]
仕組み
 ファイルのデータパターンを読み、あらかじめ用意してある識別パターンと照合してファイルの種類を識別する。

 $ file Screenshot-1.png
  Screenshot-1.png: PNG image, 2304 x 800, 8-bit/color RGB, non-interlaced


その識別パターンが定義されているファイル
/usr/share/file/magic
:
0 long 0xe809 separate object file (z8000 a.out)
0 long 0xe805 overlay object file (z8000 a.out)

#------------------------------------------------------------------------------
# zyxel: file(1) magic for ZyXEL modems
#
# From
# These are the /etc/magic entries to decode datafiles as used for the
# ZyXEL U-1496E DATA/FAX/VOICE modems. (This header conforms to a
# ZyXEL-defined standard)

0 string ZyXEL\002 ZyXEL voice data
>10 byte 0 - CELP encoding
>10 byte&0x0B 1 - ADPCM2 encoding
>10 byte&0x0B 2 - ADPCM3 encoding
>10 byte&0x0B 3 - ADPCM4 encoding
>10 byte&0x0B 8 - New ADPCM3 encoding
>10 byte&0x04 4 with resync

$ cat /usr/share/file/magic | grep PDF
 0	string		%PDF-		PDF document

バイトオフセット エンディアン指定 比較値 説明文
となっている。
この場合、%PDF-という文字列があれば、そのファイルはPDFと識別される。

$ hexdump -C toku.pdf |grep PDF
 00000000  25 50 44 46 2d 31 2e 34  0d 25 e2 e3 cf d3 0d 0a  |%PDF-1.4.%......|
000001d0 72 6f 63 53 65 74 5b 2f 50 44 46 2f 54 65 78 74 |rocSet[/PDF/Text|
00002050 72 6f 63 53 65 74 5b 2f 50 44 46 2f 54 65 78 74 |rocSet[/PDF/Text|
00002f00 65 74 5b 2f 50 44 46 2f 54 65 78 74 5d 2f 45 78 |et[/PDF/Text]/Ex|
00003ba0 6f 64 75 63 65 72 28 41 64 6f 62 65 20 50 44 46 |oducer(Adobe PDF|
00026800 3e 41 64 6f 62 65 20 50 44 46 20 4c 69 62 72 61 |>Adobe PDF Libra|

$ file toku.pdf
toku.pdf: PDF document, version 1.4
%PDF-という文字列があったのでPDFファイルと識別された。
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可