1 # Magic data for KMimeMagic (originally for file(1) command)
3 # The format is 4-5 columns:
4 # Column #1: byte number to begin checking from, ">" indicates continuation
5 # Column #2: type of data to match
6 # Column #3: contents of data to match
7 # Column #4: MIME type of result
8 # Column #5: MIME encoding of result (optional)
10 #------------------------------------------------------------------------------
11 # Localstuff: file(1) magic for locally observed files
12 # Add any locally observed files here.
14 #------------------------------------------------------------------------------
16 #------------------------------------------------------------------------------
18 #------------------------------------------------------------------------------
22 >2 short 0xbabe application/java
24 #------------------------------------------------------------------------------
25 # audio: file(1) magic for sound formats
27 # from Jan Nicolai Langfeldt <janl@ifi.uio.no>,
32 >12 belong 1 audio/basic
33 >12 belong 2 audio/basic
34 >12 belong 3 audio/basic
35 >12 belong 4 audio/basic
36 >12 belong 5 audio/basic
37 >12 belong 6 audio/basic
38 >12 belong 7 audio/basic
40 >12 belong 23 audio/x-adpcm
42 # DEC systems (e.g. DECstation 5000) use a variant of the Sun/NeXT format
43 # that uses little-endian encoding and has a different magic number
44 # (0x0064732E in little-endian encoding).
46 >12 lelong 1 audio/x-dec-basic
47 >12 lelong 2 audio/x-dec-basic
48 >12 lelong 3 audio/x-dec-basic
49 >12 lelong 4 audio/x-dec-basic
50 >12 lelong 5 audio/x-dec-basic
51 >12 lelong 6 audio/x-dec-basic
52 >12 lelong 7 audio/x-dec-basic
53 # compressed (G.721 ADPCM)
54 >12 lelong 23 audio/x-dec-adpcm
56 # Bytes 0-3 of AIFF, AIFF-C, & 8SVX audio files are "FORM"
58 8 string AIFF audio/x-aiff
60 8 string AIFC audio/x-aiff
62 8 string 8SVX audio/x-aiff
64 # Creative Labs AUDIO stuff
66 0 string MThd audio/unknown
67 #>9 byte >0 (format %d)
68 #>11 byte >1 using %d channels
69 # Creative Music (CMF) data
70 0 string CTMF audio/unknown
71 # SoundBlaster instrument data
72 0 string SBI audio/unknown
73 # Creative Labs voice data
74 0 string Creative\ Voice\ File audio/unknown
75 ## is this next line right? it came this way...
77 #>23 byte >0 - version %d
80 # [GRR 950115: is this also Creative Labs? Guessing that first line
81 # should be string instead of unknown-endian long...]
82 #0 long 0x4e54524b MultiTrack sound data
83 #0 string NTRK MultiTrack sound data
84 #>4 long x - version %ld
86 # Microsoft WAVE format (*.wav)
87 # [GRR 950115: probably all of the shorts and longs should be leshort/lelong]
91 >8 string WAVE audio/x-wav
92 >8 string AVI video/x-msvideo
94 0 belong 0x2e7261fd application/x-realaudio
96 # MPEG Layer 3 sound files
97 0 beshort &0xffe0 audio/mpeg
99 0 string ID3 audio/mpeg
101 0 string OggS audio/x-ogg
103 #------------------------------------------------------------------------------
104 # c-lang: file(1) magic for C programs or various scripts
107 # XPM icons (Greg Roelofs, newt@uchicago.edu)
108 # ideally should go into "images", but entries below would tag XPM as C source
109 0 string /*\ XPM image/x-xpm 7bit
111 # 3DS (3d Studio files)
112 16 beshort 0x3d3d image/x-3ds
114 # this first will upset you if you're a PL/1 shop... (are there any left?)
115 # in which case rm it; ascmagic will catch real C programs
116 # C or REXX program text
117 #0 string /* text/x-c
119 #0 string // text/x-c++
121 #------------------------------------------------------------------------------
122 # commands: file(1) magic for various shells and interpreters
124 #0 string :\ shell archive or commands for antique kernel text
125 0 string #!/bin/sh application/x-shellscript
126 0 string #!\ /bin/sh application/x-shellscript
127 0 string #!/bin/csh application/x-shellscript
128 0 string #!\ /bin/csh application/x-shellscript
129 # korn shell magic, sent by George Wu, gwu@clyde.att.com
130 0 string #!/bin/ksh application/x-shellscript
131 0 string #!\ /bin/ksh application/x-shellscript
132 0 string #!/bin/tcsh application/x-shellscript
133 0 string #!\ /bin/tcsh application/x-shellscript
134 0 string #!/usr/local/tcsh application/x-shellscript
135 0 string #!\ /usr/local/tcsh application/x-shellscript
136 0 string #!/usr/local/bin/tcsh application/x-shellscript
137 0 string #!\ /usr/local/bin/tcsh application/x-shellscript
138 # bash shell magic, from Peter Tobias (tobias@server.et-inf.fho-emden.de)
139 0 string #!/bin/bash application/x-shellscript
140 0 string #!\ /bin/bash application/x-shellscript
141 0 string #!/usr/local/bin/bash application/x-shellscript
142 0 string #!\ /usr/local/bin/bash application/x-shellscript
145 # zsh/ash/ae/nawk/gawk magic from cameron@cs.unsw.oz.au (Cameron Simpson)
146 0 string #!/usr/local/bin/zsh application/x-shellscript
147 0 string #!\ /usr/local/bin/zsh application/x-shellscript
148 0 string #!/usr/local/bin/ash application/x-shellscript
149 0 string #!\ /usr/local/bin/ash application/x-shellscript
150 #0 string #!/usr/local/bin/ae Neil Brown's ae
151 #0 string #!\ /usr/local/bin/ae Neil Brown's ae
152 0 string #!/bin/nawk application/x-nawk
153 0 string #!\ /bin/nawk application/x-nawk
154 0 string #!/usr/bin/nawk application/x-nawk
155 0 string #!\ /usr/bin/nawk application/x-nawk
156 0 string #!/usr/local/bin/nawk application/x-nawk
157 0 string #!\ /usr/local/bin/nawk application/x-nawk
158 0 string #!/bin/gawk application/x-gawk
159 0 string #!\ /bin/gawk application/x-gawk
160 0 string #!/usr/bin/gawk application/x-gawk
161 0 string #!\ /usr/bin/gawk application/x-gawk
162 0 string #!/usr/local/bin/gawk application/x-gawk
163 0 string #!\ /usr/local/bin/gawk application/x-gawk
165 0 string #!/bin/awk application/x-awk
166 0 string #!\ /bin/awk application/x-awk
167 0 string #!/usr/bin/awk application/x-awk
168 0 string #!\ /usr/bin/awk application/x-awk
169 0 string BEGIN application/x-awk
171 # For Larry Wall's perl language. The ``eval'' line recognizes an
172 # outrageously clever hack for USG systems.
173 # Keith Waclena <keith@cerberus.uchicago.edu>
174 0 string #!/bin/perl application/x-perl
175 0 string #!\ /bin/perl application/x-perl
176 0 string eval\ "exec\ /bin/perl application/x-perl
177 0 string #!/usr/bin/perl application/x-perl
178 0 string #!\ /usr/bin/perl application/x-perl
179 0 string eval\ "exec\ /usr/bin/perl application/x-perl
180 0 string #!/usr/local/bin/perl application/x-perl
181 0 string #!\ /usr/local/bin/perl application/x-perl
182 0 string eval\ "exec\ /usr/local/bin/perl application/x-perl
184 #------------------------------------------------------------------------------
185 # compress: file(1) magic for pure-compression formats (no archives)
187 # compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, whap, etc.
189 # Formats for various forms of compressed data
190 # Formats for "compress" proper have been moved into "compress.c",
191 # because it tries to uncompress it to figure out what's inside.
193 # standard unix compress
194 0 string \037\235 application/x-compress
196 # gzip (GNU zip, not to be confused with [Info-ZIP/PKWARE] zip archiver)
197 0 string \037\213 application/x-gzip
199 0 string PK\003\004 application/x-zip
201 # According to gzip.h, this is the correct byte order for packed data.
202 0 string \037\036 application/octet-stream
204 # This magic number is byte-order-independent.
206 0 short 017437 application/octet-stream
208 # XXX - why *two* entries for "compacted data", one of which is
209 # byte-order independent, and one of which is byte-order dependent?
212 0 short 0x1fff application/octet-stream
213 0 string \377\037 application/octet-stream
215 0 short 0145405 application/octet-stream
217 # Squeeze and Crunch...
218 # These numbers were gleaned from the Unix versions of the programs to
219 # handle these formats. Note that I can only uncrunch, not crunch, and
220 # I didn't have a crunched file handy, so the crunch number is untested.
221 # Keith Waclena <keith@cerberus.uchicago.edu>
222 #0 leshort 0x76FF squeezed data (CP/M, DOS)
223 #0 leshort 0x76FE crunched data (CP/M, DOS)
226 #0 string \037\237 Frozen file 2.1
227 #0 string \037\236 Frozen file 1.0 (or gzip 0.5)
230 #0 string \037\240 LZH compressed data
232 257 string ustar\0 application/x-tar posix
233 257 string ustar\040\040\0 application/x-tar gnu
235 0 short 070707 application/x-cpio
236 0 short 0143561 application/x-cpio swapped
238 0 string =<ar> application/x-archive
239 0 string !<arch> application/x-archive
240 >8 string debian application/x-debian-package
242 #------------------------------------------------------------------------------
244 # RPM: file(1) magic for Red Hat Packages Erik Troan (ewt@redhat.com)
247 >2 beshort 0xeedb application/x-rpm
249 0 lelong&0x8080ffff 0x0000081a application/x-arc lzw
250 0 lelong&0x8080ffff 0x0000091a application/x-arc squashed
251 0 lelong&0x8080ffff 0x0000021a application/x-arc uncompressed
252 0 lelong&0x8080ffff 0x0000031a application/x-arc packed
253 0 lelong&0x8080ffff 0x0000041a application/x-arc squeezed
254 0 lelong&0x8080ffff 0x0000061a application/x-arc crunched
256 0 leshort 0xea60 application/octet-stream x-arj
258 # LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
259 2 string -lh0- application/x-lharc lh0
260 2 string -lh1- application/x-lharc lh1
261 2 string -lz4- application/x-lharc lz4
262 2 string -lz5- application/x-lharc lz5
263 # [never seen any but the last; -lh4- reported in comp.compression:]
264 2 string -lzs- application/x-lha lzs
265 2 string -lh\ - application/x-lha lh
266 2 string -lhd- application/x-lha lhd
267 2 string -lh2- application/x-lha lh2
268 2 string -lh3- application/x-lha lh3
269 2 string -lh4- application/x-lha lh4
270 2 string -lh5- application/x-lha lh5
271 2 string -lh6- application/x-lha lh6
272 2 string -lh7- application/x-lha lh7
274 10 string #\ This\ is\ a\ shell\ archive application/octet-stream x-shell
276 #------------------------------------------------------------------------------
277 # frame: file(1) magic for FrameMaker files
279 # This stuff came on a FrameMaker demo tape, most of which is
280 # copyright, but this file is "published" as witness the following:
282 0 string \<MakerFile application/x-frame
283 0 string \<MIFFile application/x-frame
284 0 string \<MakerDictionary application/x-frame
285 0 string \<MakerScreenFon application/x-frame
286 0 string \<MML application/x-frame
287 0 string \<Book application/x-frame
288 0 string \<Maker application/x-frame
290 #------------------------------------------------------------------------------
291 # html: file(1) magic for HTML (HyperText Markup Language) docs
293 # from Daniel Quinlan <quinlan@yggdrasil.com>
295 0 string \<HEAD text/html
296 0 string \<head text/html
297 0 string \<TITLE text/html
298 0 string \<title text/html
299 0 string \<html text/html
300 0 string \<HTML text/html
301 0 string \<!-- text/html
302 0 string \<h1 text/html
303 0 string \<H1 text/html
304 0 string \<!doctype\ HTML text/html
305 0 string \<!DOCTYPE\ HTML text/html
306 0 string \<!doctype\ html text/html
308 #------------------------------------------------------------------------------
309 # images: file(1) magic for image formats (see also "c-lang" for XPM bitmaps)
311 # originally from jef@helios.ee.lbl.gov (Jef Poskanzer),
312 # additions by janl@ifi.uio.no as well as others. Jan also suggested
313 # merging several one- and two-line files into here.
315 # XXX - byte order for GIF and TIFF fields?
316 # [GRR: TIFF allows both byte orders; GIF is probably little-endian]
319 # [GRR: what the hell is this doing in here?]
320 #0 string xbtoa btoa'd file
324 0 string P1 image/x-portable-bitmap 7bit
326 0 string P2 image/x-portable-greymap 7bit
328 0 string P3 image/x-portable-pixmap 7bit
330 0 string P4 image/x-portable-bitmap
332 0 string P5 image/x-portable-greymap
334 0 string P6 image/x-portable-pixmap
336 # NIFF (Navy Interchange File Format, a modification of TIFF)
337 # [GRR: this *must* go before TIFF]
338 0 string IIN1 image/x-niff
341 # TIFF file, big-endian
342 0 string MM image/tiff
343 # TIFF file, little-endian
344 0 string II image/tiff
346 # possible GIF replacements; none yet released!
347 # (Greg Roelofs, newt@uchicago.edu)
349 # GRR 950115: this was mine ("Zip GIF"):
350 # ZIF image (GIF+deflate alpha)
351 0 string GIF94z image/unknown
353 # GRR 950115: this is Jeremy Wohl's Free Graphics Format (better):
354 # FGF image (GIF+deflate beta)
355 0 string FGF95a image/unknown
357 # GRR 950115: this is Thomas Boutell's Portable Bitmap Format proposal
358 # (best; not yet implemented):
359 # PBF image (deflate compression)
360 0 string PBF image/unknown
363 0 string GIF image/gif
366 0 beshort 0xffd8 image/jpeg
368 # PC bitmaps (OS/2, Windoze BMP files) (Greg Roelofs, newt@uchicago.edu)
369 0 string BM image/bmp
370 #>14 byte 12 (OS/2 1.x format)
371 #>14 byte 64 (OS/2 2.x format)
372 #>14 byte 40 (Windows 3.x format)
375 #0 string CI color icon
376 #0 string CP color pointer
377 #0 string BA bitmap array
380 #------------------------------------------------------------------------------
381 # lisp: file(1) magic for lisp programs
383 # various lisp types, from Daniel Quinlan (quinlan@yggdrasil.com)
384 0 string ;; text/plain 8bit
385 # Emacs 18 - this is always correct, but not very magical.
386 0 string \012( application/x-elc
388 0 string ;ELC\023\000\000\000 application/x-elc
390 #------------------------------------------------------------------------------
391 # mail.news: file(1) magic for mail and news
393 # There are tests to ascmagic.c to cope with mail and news.
394 0 string Relay-Version: message/rfc822 7bit
395 0 string #!\ rnews message/rfc822 7bit
396 0 string N#!\ rnews message/rfc822 7bit
397 0 string Forward\ to message/rfc822 7bit
398 0 string Pipe\ to message/rfc822 7bit
399 0 string Return-Path: message/rfc822 7bit
400 0 string Path: message/news 8bit
401 0 string Xref: message/news 8bit
402 0 string From: message/rfc822 7bit
403 0 string Article message/news 8bit
404 #------------------------------------------------------------------------------
405 # msword: file(1) magic for MS Word files
407 # Contributor claims:
408 # Reversed-engineered MS Word magic numbers
411 0 string \376\067\0\043 application/msword
412 0 string \320\317\021\340\241\261 application/msword
413 0 string \333\245-\0\0\0 application/msword
417 #------------------------------------------------------------------------------
418 # printer: file(1) magic for printer-formatted files
422 0 string %! application/postscript
423 0 string \004%! application/postscript
426 # (due to clamen@cs.cmu.edu)
427 0 string %PDF- application/pdf
429 #------------------------------------------------------------------------------
430 # sc: file(1) magic for "sc" spreadsheet
432 38 string Spreadsheet application/x-sc
434 #------------------------------------------------------------------------------
435 # tex: file(1) magic for TeX files
437 # XXX - needs byte-endian stuff (big-endian and little-endian DVI?)
439 # From <conklin@talisman.kaleida.com>
441 # Although we may know the offset of certain text fields in TeX DVI
442 # and font files, we can't use them reliably because they are not
443 # zero terminated. [but we do anyway, christos]
444 0 string \367\002 application/x-dvi
445 #0 string \367\203 TeX generic font data
446 #0 string \367\131 TeX packed font data
447 #0 string \367\312 TeX virtual font data
448 #0 string This\ is\ TeX, TeX transcript text
449 #0 string This\ is\ METAFONT, METAFONT transcript text
451 # There is no way to detect TeX Font Metric (*.tfm) files without
452 # breaking them apart and reading the data. The following patterns
453 # match most *.tfm files generated by METAFONT or afm2tfm.
454 2 string \000\021 application/x-tex-tfm
455 2 string \000\022 application/x-tex-tfm
458 # Texinfo and GNU Info, from Daniel Quinlan (quinlan@yggdrasil.com)
459 #0 string \\input\ texinfo Texinfo source text
460 #0 string This\ is\ Info\ file GNU Info text
462 # correct TeX magic for Linux (and maybe more)
463 # from Peter Tobias (tobias@server.et-inf.fho-emden.de)
465 0 leshort 0x02f7 application/x-dvi
467 # RTF - Rich Text Format
468 0 string {\\rtf text/rtf
470 #------------------------------------------------------------------------------
471 # animation: file(1) magic for animation/movie formats
473 # animation formats, originally from vax@ccwf.cc.utexas.edu (VaX#n8)
475 0 belong 0x000001b3 video/mpeg
476 0 belong 0x000001ba video/mpeg
477 # FLI animation format
478 0 leshort 0xAF11 video/fli
479 # FLC animation format
480 0 leshort 0xAF12 video/flc
482 >8 string AVI\ video/avi
484 # SGI and Apple formats
486 0 string MOVI video/sgi
487 4 string moov video/quicktime moov
488 4 string mdat video/quicktime mdat
489 # The contributor claims:
490 # I couldn't find a real magic number for these, however, this
491 # -appears- to work. Note that it might catch other files, too,
494 # Note that title and author appear in the two 20-byte chunks
495 # at decimal offsets 2 and 22, respectively, but they are XOR'ed with
496 # 255 (hex FF)! DL format SUCKS BIG ROCKS.
498 # DL file version 1 , medium format (160x100, 4 images/screen)
499 0 byte 1 video/unknown
500 0 byte 2 video/unknown
505 # Will be maintained as part of the GDBM distribution in the future.
507 0 belong 0x13579ace application/x-gdbm
508 0 lelong 0x13579ace application/x-gdbm
509 0 string GDBM application/x-gdbm
511 0 belong 0x061561 application/x-dbm
522 >>16 leshort 1 application/x-object
523 >>16 leshort 2 application/x-executable
524 >>16 leshort 3 application/x-sharedlib
525 >>16 leshort 4 application/x-coredump
528 0 string MZ application/x-dosexec
531 0 string [KDE\ Desktop\ Entry] application/x-kdelnk
532 0 string \#\ KDE\ Config\ File application/x-kdelnk
533 # xmcd database file for kscd
534 0 string \#\ xmcd text/xmcd
536 #------------------------------------------------------------------------------
537 # pkgadd: file(1) magic for SysV R4 PKG Datastreams
539 0 string #\ PaCkAgE\ DaTaStReAm application/x-svr4-package
542 0 string \x89PNG image/png
544 # MNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
545 0 string \x8aMNG video/x-mng
547 #------------------------------------------------------------------------------
548 # Hierarchical Data Format, used to facilitate scientific data exchange
549 # specifications at http://hdf.ncsa.uiuc.edu/
550 0 belong 0x0e031301 Hierarchical Data Format (version 4) data
551 0 string \211HDF\r\n\032 Hierarchical Data Format (version 5) data