c81b2a5ad1ae71dc144debf8900246e4a8ae069a
[dragonfly.git] / contrib / file-4 / magic / Magdir / msdos
1
2 #------------------------------------------------------------------------------
3 # msdos:  file(1) magic for MS-DOS files
4 #
5
6 # .BAT files (Daniel Quinlan, quinlan@yggdrasil.com)
7 0       string/c        @echo\ off      MS-DOS batch file text
8
9 # XXX - according to Microsoft's spec, at an offset of 0x3c in a
10 # PE-format executable is the offset in the file of the PE header;
11 # unfortunately, that's a little-endian offset, and there's no way
12 # to specify an indirect offset with a specified byte order.
13 # So, for now, we assume the standard MS-DOS stub, which puts the
14 # PE header at 0x80 = 128.
15 #
16 # Required OS version and subsystem version were 4.0 on some NT 3.51
17 # executables built with Visual C++ 4.0, so it's not clear that
18 # they're interesting.  The user version was 0.0, but there's
19 # probably some linker directive to set it.  The linker version was
20 # 3.0, except for one ".exe" which had it as 4.20 (same damn linker!).
21 #
22 128     string          PE\0\0  MS Windows PE
23 >150    leshort&0x0100  >0      32-bit
24 >132    leshort         0x0     unknown processor
25 >132    leshort         0x14c   Intel 80386
26 >132    leshort         0x166   MIPS R4000
27 >132    leshort         0x184   Alpha
28 >132    leshort         0x268   Motorola 68000
29 >132    leshort         0x1f0   PowerPC
30 >132    leshort         0x290   PA-RISC
31 >148    leshort         >27
32 >>220   leshort         0       unknown subsystem
33 >>220   leshort         1       native
34 >>220   leshort         2       GUI
35 >>220   leshort         3       console
36 >>220   leshort         7       POSIX
37 >150    leshort&0x2000  =0      executable
38 #>>136  ledate          x       stamp %s,
39 >>150   leshort&0x0001  >0      not relocatable
40 #>>150  leshort&0x0004  =0      with line numbers,
41 #>>150  leshort&0x0008  =0      with local symbols,
42 #>>150  leshort&0x0200  =0      with debug symbols,
43 >>150   leshort&0x1000  >0      system file
44 #>>148  leshort         >0
45 #>>>154 byte            x       linker %d
46 #>>>155 byte            x       \b.%d,
47 #>>148  leshort         >27
48 #>>>192 leshort         x       requires OS %d
49 #>>>194 leshort         x       \b.%d,
50 #>>>196 leshort         x       user version %d
51 #>>>198 leshort         x       \b.%d,
52 #>>>200 leshort         x       subsystem version %d
53 #>>>202 leshort         x       \b.%d,
54 >150    leshort&0x2000  >0      DLL
55 #>>136  ledate          x       stamp %s,
56 >>150   leshort&0x0001  >0      not relocatable
57 #>>150  leshort&0x0004  =0      with line numbers,
58 #>>150  leshort&0x0008  =0      with local symbols,
59 #>>150  leshort&0x0200  =0      with debug symbols,
60 >>150   leshort&0x1000  >0      system file
61 #>>148  leshort         >0
62 #>>>154 byte            x       linker %d
63 #>>>155 byte            x       \b.%d,
64 #>>148  leshort         >27
65 #>>>192 leshort         x       requires OS %d
66 #>>>194 leshort         x       \b.%d,
67 #>>>196 leshort         x       user version %d
68 #>>>198 leshort         x       \b.%d,
69 #>>>200 leshort         x       subsystem version %d
70 #>>>202 leshort         x       \b.%d,
71 0       leshort         0x14c   MS Windows COFF Intel 80386 object file
72 #>4     ledate          x       stamp %s
73 0       leshort         0x166   MS Windows COFF MIPS R4000 object file
74 #>4     ledate          x       stamp %s
75 0       leshort         0x184   MS Windows COFF Alpha object file
76 #>4     ledate          x       stamp %s
77 0       leshort         0x268   MS Windows COFF Motorola 68000 object file
78 #>4     ledate          x       stamp %s
79 0       leshort         0x1f0   MS Windows COFF PowerPC object file
80 #>4     ledate          x       stamp %s
81 0       leshort         0x290   MS Windows COFF PA-RISC object file
82 #>4     ledate          x       stamp %s
83
84 # .EXE formats (Greg Roelofs, newt@uchicago.edu)
85 #
86 0       string  MZ              MS-DOS executable (EXE)
87 >24     string  @               \b, OS/2 or MS Windows
88 >>0xe7  string  LH/2\ Self-Extract      \b, %s
89 >>0xe9  string  PKSFX2          \b, %s
90 >>122   string  Windows\ self-extracting\ ZIP   \b, %s
91 >0x1c   string  RJSX\xff\xff    \b, ARJ SFX
92 >0x1c   string  diet\xf9\x9c    \b, diet compressed
93 >0x1c   string  LZ09            \b, LZEXE v0.90 compressed
94 >0x1c   string  LZ91            \b, LZEXE v0.91 compressed
95 >0x1e   string  Copyright\ 1989-1990\ PKWARE\ Inc.      \b, PKSFX
96 # JM: 0x1e "PKLITE Copr. 1990-92 PKWARE Inc. All Rights Reserved\7\0\0\0"
97 >0x1e   string  PKLITE\ Copr.   \b, %.6s compressed
98 >0x24   string  LHa's\ SFX      \b, %.15s
99 >0x24   string  LHA's\ SFX      \b, %.15s
100 >1638   string  -lh5-           \b, LHa SFX archive v2.13S
101 >7195   string  Rar!            \b, RAR self-extracting archive
102 #
103 # [GRR 950118:  file 3.15 has a buffer-size limitation; offsets bigger than
104 #   8161 bytes are ignored.  To make the following entries work, increase
105 #   HOWMANY in file.h to 32K at least, and maybe to 70K or more for OS/2,
106 #   NT/Win32 and VMS.]
107 # [GRR:  some company sells a self-extractor/displayer for image data(!)]
108 #
109 >11696  string  PK\003\004      \b, PKZIP SFX archive v1.1
110 >13297  string  PK\003\004      \b, PKZIP SFX archive v1.93a
111 >15588  string  PK\003\004      \b, PKZIP2 SFX archive v1.09
112 >15770  string  PK\003\004      \b, PKZIP SFX archive v2.04g
113 >28374  string  PK\003\004      \b, PKZIP2 SFX archive v1.02
114 #
115 # Info-ZIP self-extractors
116 #    these are the DOS versions:
117 >25115  string  PK\003\004      \b, Info-ZIP SFX archive v5.12
118 >26331  string  PK\003\004      \b, Info-ZIP SFX archive v5.12 w/decryption
119 #    these are the OS/2 versions (OS/2 is flagged above):
120 >47031  string  PK\003\004      \b, Info-ZIP SFX archive v5.12
121 >49845  string  PK\003\004      \b, Info-ZIP SFX archive v5.12 w/decryption
122 #    this is the NT/Win32 version:
123 >69120  string  PK\003\004      \b, Info-ZIP NT SFX archive v5.12 w/decryption
124 #
125 # TELVOX Teleinformatica CODEC self-extractor for OS/2:
126 >49801  string  \x79\xff\x80\xff\x76\xff        \b, CODEC archive v3.21
127 >>49824 leshort         =1                      \b, 1 file
128 >>49824 leshort         >1                      \b, %u files
129
130 # .COM formats (Daniel Quinlan, quinlan@yggdrasil.com)
131 # Uncommenting only the first two lines will cover about 2/3 of COM files,
132 # but it isn't feasible to match all COM files since there must be at least
133 # two dozen different one-byte "magics".
134 #0      byte            0xe9            MS-DOS executable (COM)
135 #>6     string  SFX\ of\ LHarc  (%s)
136 #0      byte            0x8c            MS-DOS executable (COM)
137 # 0xeb conflicts with "sequent" magic
138 #0      byte            0xeb            MS-DOS executable (COM)
139 #0      byte            0xb8            MS-DOS executable (COM)
140
141 # miscellaneous formats
142 0       string          LZ              MS-DOS executable (built-in)
143 #0      byte            0xf0            MS-DOS program library data
144 #
145
146 #
147 # Windows Registry files.
148 #
149 0       string          regf            Windows NT registry file
150 0       string          CREG            Windows 95 registry file
151
152
153 # AAF files:
154 # <stuartc@rd.bbc.co.uk> Stuart Cunningham
155 0       string  \320\317\021\340\241\261\032\341AAFB\015\000OM\006\016\053\064\001\001\001\377                  AAF legacy file using MS Structured Storage
156 >30     byte    9               (512B sectors)
157 >30     byte    12              (4kB sectors)
158 0       string  \320\317\021\340\241\261\032\341\001\002\001\015\000\002\000\000\006\016\053\064\003\002\001\001                        AAF file using MS Structured Storage
159 >30     byte    9               (512B sectors)
160 >30     byte    12              (4kB sectors)
161
162 # Popular applications
163 2080    string  Microsoft\ Word\ 6.0\ Document  %s
164 2080    string  Documento\ Microsoft\ Word\ 6 Spanish Microsoft Word 6 document data
165 # Pawel Wiecek <coven@i17linuxb.ists.pwr.wroc.pl> (for polish Word)
166 2112    string  MSWordDoc                       Microsoft Word document data
167 #
168 0       belong  0x31be0000                      Microsoft Word Document
169 #
170 0       string  PO^Q`                           Microsoft Word 6.0 Document
171 #
172 0       string  \376\067\0\043                  Microsoft Office Document
173 0       string  \320\317\021\340\241\261\032\341        Microsoft Office Document
174 0       string  \333\245-\0\0\0                 Microsoft Office Document
175 #
176 2080    string  Microsoft\ Excel\ 5.0\ Worksheet        %s
177 2080    string  Foglio\ di\ lavoro\ Microsoft\ Exce     %s
178 #
179 # Pawel Wiecek <coven@i17linuxb.ists.pwr.wroc.pl> (for polish Excel)
180 2114    string  Biff5           Microsoft Excel 5.0 Worksheet
181 # Italian MS-Excel
182 2121    string  Biff5           Microsoft Excel 5.0 Worksheet
183 0       string  \x09\x04\x06\x00\x00\x00\x10\x00        Microsoft Excel Worksheet
184 #
185 0       belong  0x00001a00      Lotus 1-2-3
186 >4      belong  0x00100400      wk3 document data
187 >4      belong  0x02100400      wk4 document data
188 >4      belong  0x07800100      fm3 or fmb document data
189 >4      belong  0x07800000      fm3 or fmb document data
190 #
191 0       belong  0x00000200      Lotus 1-2-3
192 >4      belong  0x06040600      wk1 document data
193 >4      belong  0x06800200      fmt document data
194
195 # Help files
196 0       string  ?_\3\0          MS Windows Help Data
197
198 #  DeIsL1.isu what this is I don't know
199 0       string  \161\250\000\000\001\002        DeIsL1.isu whatever that is
200
201 # Winamp .avs
202 #0      string  Nullsoft\ AVS\ Preset\ \060\056\061\032 A plug in for Winamp ms-windows Freeware media player
203 0       string  Nullsoft\ AVS\ Preset\  Winamp plug in
204
205 # Hyper terminal:
206 0       string  HyperTerminal\  hyperterm
207 >15     string  1.0\ --\ HyperTerminal\ data\ file      MS-windows Hyperterminal
208
209 # Windows Metafont .WMF
210 0       string  \327\315\306\232\000\000\000\000\000\000        ms-windows metafont .wmf
211
212 #tz3 files whatever that is (MS Works files)
213 0       string  \003\001\001\004\070\001\000\000        tz3 ms-works file
214 0       string  \003\002\001\004\070\001\000\000        tz3 ms-works file
215 0       string  \003\003\001\004\070\001\000\000        tz3 ms-works file
216
217 # PGP sig files .sig
218 #0 string \211\000\077\003\005\000\063\237\127 065 to  \027\266\151\064\005\045\101\233\021\002 PGP sig
219 0 string \211\000\077\003\005\000\063\237\127\065\027\266\151\064\005\045\101\233\021\002 PGP sig
220 0 string \211\000\077\003\005\000\063\237\127\066\027\266\151\064\005\045\101\233\021\002 PGP sig
221 0 string \211\000\077\003\005\000\063\237\127\067\027\266\151\064\005\045\101\233\021\002 PGP sig
222 0 string \211\000\077\003\005\000\063\237\127\070\027\266\151\064\005\045\101\233\021\002 PGP sig
223 0 string \211\000\077\003\005\000\063\237\127\071\027\266\151\064\005\045\101\233\021\002 PGP sig
224 0 string \211\000\225\003\005\000\062\122\207\304\100\345\042 PGP sig
225
226 # windows zips files .dmf
227 0       string  MDIF\032\000\010\000\000\000\372\046\100\175\001\000\001\036\001\000 Ms-windows special zipped file
228
229
230 # Windows help file FTG FTS
231 0       string  \164\146\115\122\012\000\000\000\001\000\000\000        ms-windows help cache
232
233 # grp old windows 3.1 group files
234 0 string  \120\115\103\103      Ms-windows 3.1 group files
235
236
237 # lnk files windows symlinks
238 0       string  \114\000\000\000\001\024\002\000\000\000\000\000\300\000\000\000\000\000\000\106        ms-Windows shortcut
239
240 #ico files
241 0       string  \102\101\050\000\000\000\056\000\000\000\000\000\000\000        Icon for ms-windows
242
243 # Windows icons (Ian Springer <ips@fpk.hp.com>)
244 0       string  \000\000\001\000        ms-windows icon resource
245 >4      byte    1                       - 1 icon
246 >4      byte    >1                      - %d icons
247 >>6     byte    >0                      \b, %dx
248 >>>7    byte    >0                      \b%d
249 >>8     byte    0                       \b, 256-colors
250 >>8     byte    >0                      \b, %d-colors
251
252
253 # .chr files
254 0       string  PK\010\010BGI   Borland font 
255 >4      string  >\0     %s
256 # then there is a copyright notice
257
258
259 # .bgi files
260 0       string  pk\010\010BGI   Borland device 
261 >4      string  >\0     %s
262 # then there is a copyright notice
263
264
265 # recycled/info the windows trash bin index
266 9       string  \000\000\000\030\001\000\000\000 ms-windows recycled bin info
267
268
269 ##### put in Either Magic/font or Magic/news
270 # Acroread or something  files wrongly identified as G3  .pfm
271 # these have the form \000 \001 any? \002 \000 \000
272 # or \000 \001 any? \022 \000 \000
273 #0      string  \000\001 pfm?
274 #>3     string  \022\000\000Copyright\  yes
275 #>3     string  \002\000\000Copyright\  yes
276 #>3     string  >\0     oops, not a font file. Cancel that.
277 #it clashes with ttf files so put it lower down.
278
279 # From Doug Lee via a FreeBSD pr
280 9       string          GERBILDOC       First Choice document
281 9       string          GERBILDB        First Choice database
282 9       string          GERBILCLIP      First Choice database
283 0       string          GERBIL          First Choice device file
284 9       string          RABBITGRAPH     RabbitGraph file
285 0       string          DCU1            Borland Delphi .DCU file
286 0       string          !<spell>        MKS Spell hash list (old format)
287 0       string          !<spell2>       MKS Spell hash list
288 # Too simple - MPi
289 #0      string          AH              Halo(TM) bitmapped font file
290 0       lelong          0x08086b70      TurboC BGI file
291 0       lelong          0x08084b50      TurboC Font file
292
293 # WARNING: below line conflicts with Infocom game data Z-machine 3
294 0       byte            0x03            DBase 3 data file
295 >0x04   lelong          0               (no records)
296 >0x04   lelong          >0              (%ld records)
297 0       byte            0x83            DBase 3 data file with memo(s)
298 >0x04   lelong          0               (no records)
299 >0x04   lelong          >0              (%ld records)
300 0       leshort         0x0006          DBase 3 index file
301 0       string          PMCC            Windows 3.x .GRP file
302 1       string          RDC-meg         MegaDots 
303 >8      byte            >0x2F           version %c
304 >9      byte            >0x2F           \b.%c file
305 0       lelong          0x4C
306 >4      lelong          0x00021401      Windows shortcut file
307
308 # DOS EPS Binary File Header
309 # From: Ed Sznyter <ews@Black.Market.NET>
310 0       belong          0xC5D0D3C6      DOS EPS Binary File
311 >4      long            >0              Postscript starts at byte %d
312 >>8     long            >0              length %d
313 >>>12   long            >0              Metafile starts at byte %d
314 >>>>16  long            >0              length %d
315 >>>20   long            >0              TIFF starts at byte %d
316 >>>>24  long            >0              length %d
317
318 # TNEF magic From "Joomy" <joomy@se-ed.net> 
319 0       leshort         0x223e9f78      TNEF
320
321 # HtmlHelp files (.chm)
322 0       string  ITSF\003\000\000\000\x60\000\000\000\001\000\000\000    MS Windows HtmlHelp Data
323
324 # GFA-BASIC (Wolfram Kleff)
325 2       string          GFA-BASIC3      GFA-BASIC 3 data
326
327 # DJGPP compiled files
328 # v >2, uses DPMI & small(2k) stub (Robert vd Boon, rjvdboon@europe.com)
329 0x200   string          go32stub        DOS-executable compiled w/DJGPP
330 >0x20c  string          >0              (stub v%.4s)
331 >>0x8b2 string          djp             [compressed w/%s
332 >>>&1   string          >\0             %.4s]
333 >>0x8ad string          UPX             [compressed w/%s
334 >>>&1   string          >\0             %.4s]
335 >>0x1c  string          pmodedj         stubbed with %s
336
337 #------------------------------------------------------------------------------
338 # From Stuart Caie <kyzer@4u.net> (developer of cabextract)
339 # Microsoft Cabinet files
340 0       string          MSCF\0\0\0\0    Microsoft Cabinet file
341 >8      lelong          x               \b, %u bytes
342 >28     leshort         1               \b, 1 file
343 >28     leshort         >1              \b, %u files
344
345 # InstallShield Cabinet files
346 0       string          ISc(            InstallShield Cabinet file
347 >5      byte&0xf0       =0x60           version 6,
348 >5      byte&0xf0       !0x60           version 4/5,
349 >(12.l+40)      lelong  x               %u files
350
351 # Windows CE package files
352 0       string          MSCE\0\0\0\0    Microsoft WinCE install header
353 >20     lelong          0               \b, architecture-independent
354 >20     lelong          103             \b, Hitachi SH3
355 >20     lelong          104             \b, Hitachi SH4
356 >20     lelong          0xA11           \b, StrongARM
357 >20     lelong          4000            \b, MIPS R4000
358 >20     lelong          10003           \b, Hitachi SH3
359 >20     lelong          10004           \b, Hitachi SH3E
360 >20     lelong          10005           \b, Hitachi SH4
361 >20     lelong          70001           \b, ARM 7TDMI
362 >52     leshort         1               \b, 1 file
363 >52     leshort         >1              \b, %u files
364 >56     leshort         1               \b, 1 registry entry
365 >56     leshort         >1              \b, %u registry entries
366
367 # Outlook Personal Folders
368 0       lelong  0x4E444221      Microsoft Outlook binary email folder
369
370 # From: Dirk Jagdmann <doj@cubic.org>
371 0       lelong  0x00035f3f      Windows 3.x help file
372
373 # Christophe Monniez
374 0       string  Client\ UrlCache\ MMF   Microsoft Internet Explorer Cache File
375 >20     string  >\0                     Version %s
376 0       string  \xCF\xAD\x12\xFE        Microsoft Outlook Express DBX File
377 >4      byte    =0xC5                   Message database
378 >4      byte    =0xC6                   Folder database
379 >4      byte    =0xC7                   Accounts informations
380 >4      byte    =0x30                   Offline database
381
382
383 # Windows Enhanced Metafile (EMF)
384 # See msdn.microsoft.com/archive/en-us/dnargdi/html/msdn_enhmeta.asp 
385 # for further information. Note that "0 lelong 1" should be true i.e.
386 # the first double word in the file should be 1. With the extended
387 # syntax available by some file commands you could write:
388 # 0 lelong 1
389 # &40 ulelong 0x464D4520 Windows Enhanced Metafile (EMF) image data
390 40      ulelong 0x464D4520      Windows Enhanced Metafile (EMF) image data
391 >44     ulelong x               version 0x%x.
392 # If the description has a length greater than zero, it exists and is 
393 # found at offset (*64).
394 >64     ulelong >0              Description available at offset 0x%x
395 >>60    ulelong >0              (length 0x%x)
396 # Note it would be better to print out the description, which is found 
397 # as below. Unfortunately the following only prints out the first couple
398 # of characters instead of all the "description length"
399 # number of characters -- indicated by the ulelong at offset 60.
400 >>(64.l)  lestring16 >0 Description: %15.15s