xref: /freebsd/contrib/file/magic/Magdir/msdos (revision a5d223e641705cbe537d23e5c023395a929ab8da)
1b6cee71dSXin LI
2b6cee71dSXin LI#------------------------------------------------------------------------------
3*a5d223e6SXin LI# $File: msdos,v 1.111 2016/09/14 01:26:26 christos Exp $
4b6cee71dSXin LI# msdos:  file(1) magic for MS-DOS files
5b6cee71dSXin LI#
6b6cee71dSXin LI
7b6cee71dSXin LI# .BAT files (Daniel Quinlan, quinlan@yggdrasil.com)
8b6cee71dSXin LI# updated by Joerg Jenderek at Oct 2008,Apr 2011
9b6cee71dSXin LI0	string/t	@
10b6cee71dSXin LI>1	string/cW	\ echo\ off	DOS batch file text
11b6cee71dSXin LI!:mime	text/x-msdos-batch
12b6cee71dSXin LI>1	string/cW	echo\ off	DOS batch file text
13b6cee71dSXin LI!:mime	text/x-msdos-batch
14b6cee71dSXin LI>1	string/cW	rem		DOS batch file text
15b6cee71dSXin LI!:mime	text/x-msdos-batch
16b6cee71dSXin LI>1	string/cW	set\ 		DOS batch file text
17b6cee71dSXin LI!:mime	text/x-msdos-batch
18b6cee71dSXin LI
19b6cee71dSXin LI
20b6cee71dSXin LI# OS/2 batch files are REXX. the second regex is a bit generic, oh well
21b6cee71dSXin LI# the matched commands seem to be common in REXX and uncommon elsewhere
22b6cee71dSXin LI100	search/0xffff   rxfuncadd
23b6cee71dSXin LI>100	regex/c =^[\ \t]{0,10}call[\ \t]{1,10}rxfunc	OS/2 REXX batch file text
24b6cee71dSXin LI100	search/0xffff   say
25b6cee71dSXin LI>100	regex/c =^[\ \t]{0,10}say\ ['"]			OS/2 REXX batch file text
26b6cee71dSXin LI
273e41d09dSXin LI# updated by Joerg Jenderek at Oct 2015
283e41d09dSXin LI# https://de.wikipedia.org/wiki/Common_Object_File_Format
293e41d09dSXin LI# http://www.delorie.com/djgpp/doc/coff/filhdr.html
303e41d09dSXin LI# ./intel already labeled COFF type 0x14c=0514 as "80386 COFF executable"
313e41d09dSXin LI#0	leshort		0x14c	MS Windows COFF Intel 80386 object file
32b6cee71dSXin LI#>4	ledate		x	stamp %s
33b6cee71dSXin LI0	leshort		0x166	MS Windows COFF MIPS R4000 object file
34b6cee71dSXin LI#>4	ledate		x	stamp %s
35b6cee71dSXin LI0	leshort		0x184	MS Windows COFF Alpha object file
36b6cee71dSXin LI#>4	ledate		x	stamp %s
37b6cee71dSXin LI0	leshort		0x268	MS Windows COFF Motorola 68000 object file
38b6cee71dSXin LI#>4	ledate		x	stamp %s
39b6cee71dSXin LI0	leshort		0x1f0	MS Windows COFF PowerPC object file
40b6cee71dSXin LI#>4	ledate		x	stamp %s
41b6cee71dSXin LI0	leshort		0x290	MS Windows COFF PA-RISC object file
42b6cee71dSXin LI#>4	ledate		x	stamp %s
43b6cee71dSXin LI
44b6cee71dSXin LI# Tests for various EXE types.
45b6cee71dSXin LI#
46b6cee71dSXin LI# Many of the compressed formats were extraced from IDARC 1.23 source code.
47b6cee71dSXin LI#
48b6cee71dSXin LI0	string/b	MZ
49b6cee71dSXin LI# All non-DOS EXE extensions have the relocation table more than 0x40 bytes into the file.
50b6cee71dSXin LI>0x18	leshort <0x40 MS-DOS executable
51b6cee71dSXin LI!:mime	application/x-dosexec
52b6cee71dSXin LI# These traditional tests usually work but not always.  When test quality support is
53b6cee71dSXin LI# implemented these can be turned on.
54b6cee71dSXin LI#>>0x18	leshort	0x1c	(Borland compiler)
55b6cee71dSXin LI#>>0x18	leshort	0x1e	(MS compiler)
56b6cee71dSXin LI
57b6cee71dSXin LI# If the relocation table is 0x40 or more bytes into the file, it's definitely
58b6cee71dSXin LI# not a DOS EXE.
59b6cee71dSXin LI>0x18  leshort >0x3f
60b6cee71dSXin LI
61b6cee71dSXin LI# Maybe it's a PE?
62b6cee71dSXin LI>>(0x3c.l) string PE\0\0 PE
63b6cee71dSXin LI!:mime	application/x-dosexec
64b6cee71dSXin LI>>>(0x3c.l+24)	leshort		0x010b	\b32 executable
65b6cee71dSXin LI>>>(0x3c.l+24)	leshort		0x020b	\b32+ executable
66b6cee71dSXin LI>>>(0x3c.l+24)	leshort		0x0107	ROM image
67b6cee71dSXin LI>>>(0x3c.l+24)	default		x	Unknown PE signature
68b6cee71dSXin LI>>>>&0 		leshort		x	0x%x
69b6cee71dSXin LI>>>(0x3c.l+22)	leshort&0x2000	>0	(DLL)
70b6cee71dSXin LI>>>(0x3c.l+92)	leshort		1	(native)
71b6cee71dSXin LI>>>(0x3c.l+92)	leshort		2	(GUI)
72b6cee71dSXin LI>>>(0x3c.l+92)	leshort		3	(console)
73b6cee71dSXin LI>>>(0x3c.l+92)	leshort		7	(POSIX)
74b6cee71dSXin LI>>>(0x3c.l+92)	leshort		9	(Windows CE)
75b6cee71dSXin LI>>>(0x3c.l+92)	leshort		10	(EFI application)
76b6cee71dSXin LI>>>(0x3c.l+92)	leshort		11	(EFI boot service driver)
77b6cee71dSXin LI>>>(0x3c.l+92)	leshort		12	(EFI runtime driver)
78b6cee71dSXin LI>>>(0x3c.l+92)	leshort		13	(EFI ROM)
79b6cee71dSXin LI>>>(0x3c.l+92)	leshort		14	(XBOX)
80b6cee71dSXin LI>>>(0x3c.l+92)	leshort		15	(Windows boot application)
81b6cee71dSXin LI>>>(0x3c.l+92)	default		x	(Unknown subsystem
82b6cee71dSXin LI>>>>&0		leshort		x	0x%x)
83b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x14c	Intel 80386
84b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x166	MIPS R4000
85b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x168	MIPS R10000
86b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x184	Alpha
87b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x1a2	Hitachi SH3
88b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x1a6	Hitachi SH4
89b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x1c0	ARM
90b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x1c2	ARM Thumb
91b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x1c4	ARMv7 Thumb
92b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x1f0	PowerPC
93b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x200	Intel Itanium
94b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x266	MIPS16
95b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x268	Motorola 68000
96b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x290	PA-RISC
97b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x366	MIPSIV
98b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x466	MIPS16 with FPU
99b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0xebc	EFI byte code
100b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0x8664	x86-64
101b6cee71dSXin LI>>>(0x3c.l+4)	leshort		0xc0ee	MSIL
102b6cee71dSXin LI>>>(0x3c.l+4)	default		x	Unknown processor type
103b6cee71dSXin LI>>>>&0		leshort		x	0x%x
104b6cee71dSXin LI>>>(0x3c.l+22)	leshort&0x0200	>0	(stripped to external PDB)
105b6cee71dSXin LI>>>(0x3c.l+22)	leshort&0x1000	>0	system file
106b6cee71dSXin LI>>>(0x3c.l+24)	leshort		0x010b
107b6cee71dSXin LI>>>>(0x3c.l+232) lelong	>0	Mono/.Net assembly
108b6cee71dSXin LI>>>(0x3c.l+24)	leshort		0x020b
109b6cee71dSXin LI>>>>(0x3c.l+248) lelong	>0	Mono/.Net assembly
110b6cee71dSXin LI
111b6cee71dSXin LI# hooray, there's a DOS extender using the PE format, with a valid PE
112b6cee71dSXin LI# executable inside (which just prints a message and exits if run in win)
113b6cee71dSXin LI>>>(8.s*16)		string		32STUB	\b, 32rtm DOS extender
114b6cee71dSXin LI>>>(8.s*16)		string		!32STUB	\b, for MS Windows
115b6cee71dSXin LI>>>(0x3c.l+0xf8)	string		UPX0 \b, UPX compressed
116b6cee71dSXin LI>>>(0x3c.l+0xf8)	search/0x140	PEC2 \b, PECompact2 compressed
117b6cee71dSXin LI>>>(0x3c.l+0xf8)	search/0x140	UPX2
118b6cee71dSXin LI>>>>(&0x10.l+(-4))	string		PK\3\4 \b, ZIP self-extracting archive (Info-Zip)
119b6cee71dSXin LI>>>(0x3c.l+0xf8)	search/0x140	.idata
120b6cee71dSXin LI>>>>(&0xe.l+(-4))	string		PK\3\4 \b, ZIP self-extracting archive (Info-Zip)
121b6cee71dSXin LI>>>>(&0xe.l+(-4))	string		ZZ0 \b, ZZip self-extracting archive
122b6cee71dSXin LI>>>>(&0xe.l+(-4))	string		ZZ1 \b, ZZip self-extracting archive
123b6cee71dSXin LI>>>(0x3c.l+0xf8)	search/0x140	.rsrc
124b6cee71dSXin LI>>>>(&0x0f.l+(-4))	string		a\\\4\5 \b, WinHKI self-extracting archive
125b6cee71dSXin LI>>>>(&0x0f.l+(-4))	string		Rar! \b, RAR self-extracting archive
126b6cee71dSXin LI>>>>(&0x0f.l+(-4))	search/0x3000	MSCF \b, InstallShield self-extracting archive
127b6cee71dSXin LI>>>>(&0x0f.l+(-4))	search/32	Nullsoft \b, Nullsoft Installer self-extracting archive
128b6cee71dSXin LI>>>(0x3c.l+0xf8)	search/0x140	.data
129b6cee71dSXin LI>>>>(&0x0f.l)		string		WEXTRACT \b, MS CAB-Installer self-extracting archive
130b6cee71dSXin LI>>>(0x3c.l+0xf8)	search/0x140	.petite\0 \b, Petite compressed
131b6cee71dSXin LI>>>>(0x3c.l+0xf7)	byte		x
132b6cee71dSXin LI>>>>>(&0x104.l+(-4))	string		=!sfx! \b, ACE self-extracting archive
133b6cee71dSXin LI>>>(0x3c.l+0xf8)	search/0x140	.WISE \b, WISE installer self-extracting archive
134b6cee71dSXin LI>>>(0x3c.l+0xf8)	search/0x140	.dz\0\0\0 \b, Dzip self-extracting archive
135b6cee71dSXin LI>>>&(0x3c.l+0xf8)	search/0x100	_winzip_ \b, ZIP self-extracting archive (WinZip)
136b6cee71dSXin LI>>>&(0x3c.l+0xf8)	search/0x100	SharedD \b, Microsoft Installer self-extracting archive
137b6cee71dSXin LI>>>0x30			string		Inno \b, InnoSetup self-extracting archive
138b6cee71dSXin LI
139b6cee71dSXin LI# Hmm, not a PE but the relocation table is too high for a traditional DOS exe,
140b6cee71dSXin LI# must be one of the unusual subformats.
141b6cee71dSXin LI>>(0x3c.l) string !PE\0\0 MS-DOS executable
142b6cee71dSXin LI!:mime	application/x-dosexec
143b6cee71dSXin LI
144b6cee71dSXin LI>>(0x3c.l)		string		NE \b, NE
145b6cee71dSXin LI!:mime	application/x-dosexec
146b6cee71dSXin LI>>>(0x3c.l+0x36)	byte		1 for OS/2 1.x
147b6cee71dSXin LI>>>(0x3c.l+0x36)	byte		2 for MS Windows 3.x
148b6cee71dSXin LI>>>(0x3c.l+0x36)	byte		3 for MS-DOS
149b6cee71dSXin LI>>>(0x3c.l+0x36)	byte		4 for Windows 386
150b6cee71dSXin LI>>>(0x3c.l+0x36)	byte		5 for Borland Operating System Services
151b6cee71dSXin LI>>>(0x3c.l+0x36)	default		x
152b6cee71dSXin LI>>>>(0x3c.l+0x36)	byte		x (unknown OS %x)
153b6cee71dSXin LI>>>(0x3c.l+0x36)	byte		0x81 for MS-DOS, Phar Lap DOS extender
154b6cee71dSXin LI>>>(0x3c.l+0x0c)	leshort&0x8003	0x8002 (DLL)
155b6cee71dSXin LI>>>(0x3c.l+0x0c)	leshort&0x8003	0x8001 (driver)
156b6cee71dSXin LI>>>&(&0x24.s-1)		string		ARJSFX \b, ARJ self-extracting archive
157b6cee71dSXin LI>>>(0x3c.l+0x70)	search/0x80	WinZip(R)\ Self-Extractor \b, ZIP self-extracting archive (WinZip)
158b6cee71dSXin LI
159b6cee71dSXin LI>>(0x3c.l)		string		LX\0\0 \b, LX
160b6cee71dSXin LI!:mime	application/x-dosexec
161b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		<1 (unknown OS)
162b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		1 for OS/2
163b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		2 for MS Windows
164b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		3 for DOS
165b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		>3 (unknown OS)
166b6cee71dSXin LI>>>(0x3c.l+0x10)	lelong&0x28000	=0x8000 (DLL)
167b6cee71dSXin LI>>>(0x3c.l+0x10)	lelong&0x20000	>0 (device driver)
168b6cee71dSXin LI>>>(0x3c.l+0x10)	lelong&0x300	0x300 (GUI)
169b6cee71dSXin LI>>>(0x3c.l+0x10)	lelong&0x28300	<0x300 (console)
170b6cee71dSXin LI>>>(0x3c.l+0x08)	leshort		1 i80286
171b6cee71dSXin LI>>>(0x3c.l+0x08)	leshort		2 i80386
172b6cee71dSXin LI>>>(0x3c.l+0x08)	leshort		3 i80486
173b6cee71dSXin LI>>>(8.s*16)		string		emx \b, emx
174b6cee71dSXin LI>>>>&1			string		x %s
175b6cee71dSXin LI>>>&(&0x54.l-3)		string		arjsfx \b, ARJ self-extracting archive
176b6cee71dSXin LI
177b6cee71dSXin LI# MS Windows system file, supposedly a collection of LE executables
178b6cee71dSXin LI>>(0x3c.l)		string		W3 \b, W3 for MS Windows
179b6cee71dSXin LI!:mime	application/x-dosexec
180b6cee71dSXin LI
181b6cee71dSXin LI>>(0x3c.l)		string		LE\0\0 \b, LE executable
182b6cee71dSXin LI!:mime	application/x-dosexec
183b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		1
184b6cee71dSXin LI# some DOS extenders use LE files with OS/2 header
185b6cee71dSXin LI>>>>0x240		search/0x100	DOS/4G for MS-DOS, DOS4GW DOS extender
186b6cee71dSXin LI>>>>0x240		search/0x200	WATCOM\ C/C++ for MS-DOS, DOS4GW DOS extender
187b6cee71dSXin LI>>>>0x440		search/0x100	CauseWay\ DOS\ Extender for MS-DOS, CauseWay DOS extender
188b6cee71dSXin LI>>>>0x40		search/0x40	PMODE/W for MS-DOS, PMODE/W DOS extender
189b6cee71dSXin LI>>>>0x40		search/0x40	STUB/32A for MS-DOS, DOS/32A DOS extender (stub)
190b6cee71dSXin LI>>>>0x40		search/0x80	STUB/32C for MS-DOS, DOS/32A DOS extender (configurable stub)
191b6cee71dSXin LI>>>>0x40		search/0x80	DOS/32A for MS-DOS, DOS/32A DOS extender (embedded)
192b6cee71dSXin LI# this is a wild guess; hopefully it is a specific signature
193b6cee71dSXin LI>>>>&0x24		lelong		<0x50
194b6cee71dSXin LI>>>>>(&0x4c.l)		string		\xfc\xb8WATCOM
195b6cee71dSXin LI>>>>>>&0		search/8	3\xdbf\xb9 \b, 32Lite compressed
196b6cee71dSXin LI# another wild guess: if real OS/2 LE executables exist, they probably have higher start EIP
197b6cee71dSXin LI#>>>>(0x3c.l+0x1c)	lelong		>0x10000 for OS/2
198b6cee71dSXin LI# fails with DOS-Extenders.
199b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		2 for MS Windows
200b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		3 for DOS
201b6cee71dSXin LI>>>(0x3c.l+0x0a)	leshort		4 for MS Windows (VxD)
202b6cee71dSXin LI>>>(&0x7c.l+0x26)	string		UPX \b, UPX compressed
203b6cee71dSXin LI>>>&(&0x54.l-3)		string		UNACE \b, ACE self-extracting archive
204b6cee71dSXin LI
205b6cee71dSXin LI# looks like ASCII, probably some embedded copyright message.
206b6cee71dSXin LI# and definitely not NE/LE/LX/PE
207b6cee71dSXin LI>>0x3c		lelong	>0x20000000
208b6cee71dSXin LI>>>(4.s*512)	leshort !0x014c \b, MZ for MS-DOS
209b6cee71dSXin LI!:mime	application/x-dosexec
210b6cee71dSXin LI# header data too small for extended executable
211b6cee71dSXin LI>2		long	!0
212b6cee71dSXin LI>>0x18		leshort <0x40
213b6cee71dSXin LI>>>(4.s*512)	leshort !0x014c
214b6cee71dSXin LI
215b6cee71dSXin LI>>>>&(2.s-514)	string	!LE
216b6cee71dSXin LI>>>>>&-2	string	!BW \b, MZ for MS-DOS
217b6cee71dSXin LI!:mime	application/x-dosexec
218b6cee71dSXin LI>>>>&(2.s-514)	string	LE \b, LE
219b6cee71dSXin LI>>>>>0x240	search/0x100	DOS/4G for MS-DOS, DOS4GW DOS extender
220b6cee71dSXin LI# educated guess since indirection is still not capable enough for complex offset
221b6cee71dSXin LI# calculations (next embedded executable would be at &(&2*512+&0-2)
222b6cee71dSXin LI# I suspect there are only LE executables in these multi-exe files
223b6cee71dSXin LI>>>>&(2.s-514)	string	BW
224b6cee71dSXin LI>>>>>0x240	search/0x100	DOS/4G	\b, LE for MS-DOS, DOS4GW DOS extender (embedded)
225b6cee71dSXin LI>>>>>0x240	search/0x100	!DOS/4G	\b, BW collection for MS-DOS
226b6cee71dSXin LI
227b6cee71dSXin LI# This sequence skips to the first COFF segment, usually .text
228b6cee71dSXin LI>(4.s*512)	leshort		0x014c \b, COFF
229b6cee71dSXin LI!:mime	application/x-dosexec
230b6cee71dSXin LI>>(8.s*16)	string		go32stub for MS-DOS, DJGPP go32 DOS extender
231b6cee71dSXin LI>>(8.s*16)	string		emx
232b6cee71dSXin LI>>>&1		string		x for DOS, Win or OS/2, emx %s
233b6cee71dSXin LI>>&(&0x42.l-3)	byte		x
234b6cee71dSXin LI>>>&0x26	string		UPX \b, UPX compressed
235b6cee71dSXin LI# and yet another guess: small .text, and after large .data is unusal, could be 32lite
236b6cee71dSXin LI>>&0x2c		search/0xa0	.text
237b6cee71dSXin LI>>>&0x0b	lelong		<0x2000
238b6cee71dSXin LI>>>>&0		lelong		>0x6000 \b, 32lite compressed
239b6cee71dSXin LI
240b6cee71dSXin LI>(8.s*16) string $WdX \b, WDos/X DOS extender
241b6cee71dSXin LI
242b6cee71dSXin LI# By now an executable type should have been printed out.  The executable
243b6cee71dSXin LI# may be a self-uncompressing archive, so look for evidence of that and
244b6cee71dSXin LI# print it out.
245b6cee71dSXin LI#
246b6cee71dSXin LI# Some signatures below from Greg Roelofs, newt@uchicago.edu.
247b6cee71dSXin LI#
248b6cee71dSXin LI>0x35	string	\x8e\xc0\xb9\x08\x00\xf3\xa5\x4a\x75\xeb\x8e\xc3\x8e\xd8\x33\xff\xbe\x30\x00\x05 \b, aPack compressed
249b6cee71dSXin LI>0xe7	string	LH/2\ 	Self-Extract \b, %s
250b6cee71dSXin LI>0x1c	string	UC2X	\b, UCEXE compressed
251b6cee71dSXin LI>0x1c	string	WWP\ 	\b, WWPACK compressed
252b6cee71dSXin LI>0x1c	string	RJSX 	\b, ARJ self-extracting archive
253b6cee71dSXin LI>0x1c	string	diet 	\b, diet compressed
254b6cee71dSXin LI>0x1c	string	LZ09 	\b, LZEXE v0.90 compressed
255b6cee71dSXin LI>0x1c	string	LZ91 	\b, LZEXE v0.91 compressed
256b6cee71dSXin LI>0x1c	string	tz 	\b, TinyProg compressed
257b6cee71dSXin LI>0x1e	string	Copyright\ 1989-1990\ PKWARE\ Inc.	Self-extracting PKZIP archive
258b6cee71dSXin LI!:mime	application/zip
259b6cee71dSXin LI# Yes, this really is "Copr", not "Corp."
260b6cee71dSXin LI>0x1e	string	PKLITE\ Copr.	Self-extracting PKZIP archive
261b6cee71dSXin LI!:mime	application/zip
262b6cee71dSXin LI# winarj stores a message in the stub instead of the sig in the MZ header
263b6cee71dSXin LI>0x20	search/0xe0	aRJsfX \b, ARJ self-extracting archive
264b6cee71dSXin LI>0x20	string AIN
265b6cee71dSXin LI>>0x23	string 2	\b, AIN 2.x compressed
266b6cee71dSXin LI>>0x23	string <2	\b, AIN 1.x compressed
267b6cee71dSXin LI>>0x23	string >2	\b, AIN 1.x compressed
268b6cee71dSXin LI>0x24	string	LHa's\ SFX \b, LHa self-extracting archive
269b6cee71dSXin LI!:mime	application/x-lha
270b6cee71dSXin LI>0x24	string	LHA's\ SFX \b, LHa self-extracting archive
271b6cee71dSXin LI!:mime	application/x-lha
272b6cee71dSXin LI>0x24	string	\ $ARX \b, ARX self-extracting archive
273b6cee71dSXin LI>0x24	string	\ $LHarc \b, LHarc self-extracting archive
274b6cee71dSXin LI>0x20	string	SFX\ by\ LARC \b, LARC self-extracting archive
275b6cee71dSXin LI>0x40	string aPKG \b, aPackage self-extracting archive
276b6cee71dSXin LI>0x64	string	W\ Collis\0\0 \b, Compack compressed
277b6cee71dSXin LI>0x7a	string		Windows\ self-extracting\ ZIP	\b, ZIP self-extracting archive
278b6cee71dSXin LI>>&0xf4 search/0x140 \x0\x40\x1\x0
279b6cee71dSXin LI>>>(&0.l+(4)) string MSCF \b, WinHKI CAB self-extracting archive
280b6cee71dSXin LI>1638	string	-lh5- \b, LHa self-extracting archive v2.13S
281b6cee71dSXin LI>0x17888 string Rar! \b, RAR self-extracting archive
282b6cee71dSXin LI
283b6cee71dSXin LI# Skip to the end of the EXE.  This will usually work fine in the PE case
284b6cee71dSXin LI# because the MZ image is hardcoded into the toolchain and almost certainly
285b6cee71dSXin LI# won't match any of these signatures.
286b6cee71dSXin LI>(4.s*512)	long	x
287b6cee71dSXin LI>>&(2.s-517)	byte	x
288b6cee71dSXin LI>>>&0	string		PK\3\4 \b, ZIP self-extracting archive
289b6cee71dSXin LI>>>&0	string		Rar! \b, RAR self-extracting archive
290b6cee71dSXin LI>>>&0	string		=!\x11 \b, AIN 2.x self-extracting archive
291b6cee71dSXin LI>>>&0	string		=!\x12 \b, AIN 2.x self-extracting archive
292b6cee71dSXin LI>>>&0	string		=!\x17 \b, AIN 1.x self-extracting archive
293b6cee71dSXin LI>>>&0	string		=!\x18 \b, AIN 1.x self-extracting archive
294b6cee71dSXin LI>>>&7	search/400	**ACE** \b, ACE self-extracting archive
295b6cee71dSXin LI>>>&0	search/0x480	UC2SFX\ Header \b, UC2 self-extracting archive
296b6cee71dSXin LI
297b6cee71dSXin LI# a few unknown ZIP sfxes, no idea if they are needed or if they are
298b6cee71dSXin LI# already captured by the generic patterns above
299b6cee71dSXin LI>(8.s*16)	search/0x20	PKSFX \b, ZIP self-extracting archive (PKZIP)
300b6cee71dSXin LI# TODO: how to add this? >FileSize-34 string Windows\ Self-Installing\ Executable \b, ZIP self-extracting archive
301b6cee71dSXin LI#
302b6cee71dSXin LI
303b6cee71dSXin LI# TELVOX Teleinformatica CODEC self-extractor for OS/2:
304b6cee71dSXin LI>49801	string	\x79\xff\x80\xff\x76\xff	\b, CODEC archive v3.21
305b6cee71dSXin LI>>49824 leshort		=1			\b, 1 file
306b6cee71dSXin LI>>49824 leshort		>1			\b, %u files
307b6cee71dSXin LI
308b6cee71dSXin LI# added by Joerg Jenderek of http://www.freedos.org/software/?prog=kc
309b6cee71dSXin LI# and http://www.freedos.org/software/?prog=kpdos
310b6cee71dSXin LI# for FreeDOS files like KEYBOARD.SYS, KEYBRD2.SYS, KEYBRD3.SYS, *.KBD
311b6cee71dSXin LI0	string/b	KCF		FreeDOS KEYBoard Layout collection
312b6cee71dSXin LI# only version=0x100 found
313b6cee71dSXin LI>3	uleshort	x		\b, version 0x%x
314b6cee71dSXin LI# length of string containing author,info and special characters
315b6cee71dSXin LI>6	ubyte		>0
316b6cee71dSXin LI#>>6	pstring		x		\b, name=%s
317b6cee71dSXin LI>>7	string		>\0		\b, author=%-.14s
318b6cee71dSXin LI>>7	search/254	\xff		\b, info=
319b6cee71dSXin LI#>>>&0	string		x		\b%-s
320b6cee71dSXin LI>>>&0	string		x		\b%-.15s
321b6cee71dSXin LI# for FreeDOS *.KL files
322b6cee71dSXin LI0	string/b	KLF		FreeDOS KEYBoard Layout file
323b6cee71dSXin LI# only version=0x100 or 0x101 found
324b6cee71dSXin LI>3	uleshort	x		\b, version 0x%x
325b6cee71dSXin LI# stringlength
326b6cee71dSXin LI>5	ubyte		>0
327b6cee71dSXin LI>>8	string		x		\b, name=%-.2s
328b6cee71dSXin LI0	string	\xffKEYB\ \ \ \0\0\0\0
329b6cee71dSXin LI>12	string	\0\0\0\0`\004\360	MS-DOS KEYBoard Layout file
330b6cee71dSXin LI
331b6cee71dSXin LI# DOS device driver updated by Joerg Jenderek at May 2011
332b6cee71dSXin LI# http://maben.homeip.net/static/S100/IBM/software/DOS/DOS%20techref/CHAPTER.009
333b6cee71dSXin LI0	ulequad&0x07a0ffffffff		0xffffffff		DOS executable (
334b6cee71dSXin LI>40	search/7			UPX!			\bUPX compressed
335b6cee71dSXin LI# DOS device driver attributes
336b6cee71dSXin LI>4	uleshort&0x8000			0x0000			\bblock device driver
337b6cee71dSXin LI# character device
338b6cee71dSXin LI>4	uleshort&0x8000			0x8000			\b
339b6cee71dSXin LI>>4	uleshort&0x0008			0x0008			\bclock
340b6cee71dSXin LI# fast video output by int 29h
341b6cee71dSXin LI>>4	uleshort&0x0010			0x0010			\bfast
342b6cee71dSXin LI# standard input/output device
343b6cee71dSXin LI>>4	uleshort&0x0003			>0			\bstandard
344b6cee71dSXin LI>>>4	uleshort&0x0001			0x0001			\binput
345b6cee71dSXin LI>>>4	uleshort&0x0003			0x0003			\b/
346b6cee71dSXin LI>>>4	uleshort&0x0002			0x0002			\boutput
347b6cee71dSXin LI>>4	uleshort&0x8000			0x8000			\bcharacter device driver
348b6cee71dSXin LI>0	ubyte				x
349b6cee71dSXin LI# upx compressed device driver has garbage instead of real in name field of header
350b6cee71dSXin LI>>40	search/7			UPX!
351b6cee71dSXin LI>>40	default				x
352b6cee71dSXin LI# leading/trailing nulls, zeros or non ASCII characters in 8-byte name field at offset 10 are skipped
353b6cee71dSXin LI>>>12		ubyte			>0x27			\b
354b6cee71dSXin LI>>>>10		ubyte			>0x20
355b6cee71dSXin LI>>>>>10		ubyte			!0x2E
356b6cee71dSXin LI>>>>>>10	ubyte			!0x2A			\b%c
357b6cee71dSXin LI>>>>11		ubyte			>0x20
358b6cee71dSXin LI>>>>>11		ubyte			!0x2E			\b%c
359b6cee71dSXin LI>>>>12		ubyte			>0x20
360b6cee71dSXin LI>>>>>12		ubyte			!0x39
361b6cee71dSXin LI>>>>>>12	ubyte			!0x2E			\b%c
362b6cee71dSXin LI>>>13		ubyte			>0x20
363b6cee71dSXin LI>>>>13		ubyte			!0x2E			\b%c
364b6cee71dSXin LI>>>>14		ubyte			>0x20
365b6cee71dSXin LI>>>>>14		ubyte			!0x2E			\b%c
366b6cee71dSXin LI>>>>15		ubyte			>0x20
367b6cee71dSXin LI>>>>>15		ubyte			!0x2E			\b%c
368b6cee71dSXin LI>>>>16		ubyte			>0x20
369b6cee71dSXin LI>>>>>16		ubyte			!0x2E
370b6cee71dSXin LI>>>>>>16	ubyte			<0xCB			\b%c
371b6cee71dSXin LI>>>>17		ubyte			>0x20
372b6cee71dSXin LI>>>>>17		ubyte			!0x2E
373b6cee71dSXin LI>>>>>>17	ubyte			<0x90			\b%c
374b6cee71dSXin LI# some character device drivers like ASPICD.SYS, btcdrom.sys and Cr_atapi.sys contain only spaces or points in name field
375b6cee71dSXin LI>>>4		uleshort&0x8000		0x8000
376b6cee71dSXin LI>>>>12		ubyte			<0x2F
377b6cee71dSXin LI# they have their real name at offset 22
378b6cee71dSXin LI>>>>>22		string			>\0			\b%-.5s
379b6cee71dSXin LI>4	uleshort&0x8000			0x0000
380b6cee71dSXin LI# 32 bit sector addressing ( > 32 MB) for block devices
381b6cee71dSXin LI>>4	uleshort&0x0002			0x0002			\b,32-bit sector-
382b6cee71dSXin LI# support by driver functions 13h, 17h, 18h
383b6cee71dSXin LI>4	uleshort&0x0040			0x0040			\b,IOCTL-
384b6cee71dSXin LI# open, close, removable media support by driver functions 0Dh, 0Eh, 0Fh
385b6cee71dSXin LI>4	uleshort&0x0800			0x0800			\b,close media-
386b6cee71dSXin LI# output until busy support by int 10h for character device driver
387b6cee71dSXin LI>4	uleshort&0x8000			0x8000
388b6cee71dSXin LI>>4	uleshort&0x2000			0x2000			\b,until busy-
389b6cee71dSXin LI# direct read/write support by driver functions 03h,0Ch
390b6cee71dSXin LI>4	uleshort&0x4000			0x4000			\b,control strings-
391b6cee71dSXin LI>4	uleshort&0x8000			0x8000
392b6cee71dSXin LI>>4	uleshort&0x6840			>0			\bsupport
393b6cee71dSXin LI>4	uleshort&0x8000			0x0000
394b6cee71dSXin LI>>4	uleshort&0x4842			>0			\bsupport
395b6cee71dSXin LI>0	ubyte				x			\b)
396b6cee71dSXin LI# DOS driver cmd640x.sys has 0x12 instead of 0xffffffff for pointer field to next device header
397b6cee71dSXin LI# Too weak, matches files that only contain 0's
398b6cee71dSXin LI#0	ulequad&0x000007a0ffffffed	0x0000000000000000	DOS-executable (
399b6cee71dSXin LI#>4	uleshort&0x8000			0x8000			\bcharacter device driver
400b6cee71dSXin LI#>>10	string				x			%-.8s
401b6cee71dSXin LI#>4	uleshort&0x4000			0x4000			\b,control strings-support)
402b6cee71dSXin LI
4033e41d09dSXin LI# updated by Joerg Jenderek
4043e41d09dSXin LI# GRR: line below too general as it catches also
4053e41d09dSXin LI# rt.lib DYADISKS.PIC and many more
4063e41d09dSXin LI# start with assembler instruction MOV
4073e41d09dSXin LI0	ubyte		0x8c
4083e41d09dSXin LI# skip "AppleWorks word processor data" like ARTICLE.1 ./apple
4093e41d09dSXin LI>4	string			!O====
4103e41d09dSXin LI# skip some unknown basic binaries like RocketRnger.SHR
4113e41d09dSXin LI>>5	string			!MAIN
4123e41d09dSXin LI# skip "GPG symmetrically encrypted data" ./gnu
4133e41d09dSXin LI# skip "PGP symmetric key encrypted data" ./pgp
4143e41d09dSXin LI# openpgpdefs.h: fourth byte < 14 indicate cipher algorithm type
4153e41d09dSXin LI>>>4	ubyte			>13	DOS executable (COM, 0x8C-variant)
4163e41d09dSXin LI# the remaining files should be DOS *.COM executables
4173e41d09dSXin LI# dosshell.COM	8cc0 2ea35f07 e85211 e88a11 b80058 cd
4183e41d09dSXin LI# hmload.COM	8cc8 8ec0 bbc02b 89dc 83c30f c1eb04 b4
4193e41d09dSXin LI# UNDELETE.COM	8cca 2e8916 6503 b430 cd21 8b 2e0200 8b
4203e41d09dSXin LI# BOOTFIX.COM	8cca 2e8916 9603 b430 cd21 8b 2e0200 8b
4213e41d09dSXin LI# RAWRITE3.COM	8cca 2e8916 d602 b430 cd21 8b 2e0200 8b
4223e41d09dSXin LI# SHARE.COM	8cca 2e8916 d602 b430 cd21 8b 2e0200 8b
4233e41d09dSXin LI# validchr.COM	8cca 2e8916 9603 b430 cd21 8b 2e028b1e
4243e41d09dSXin LI# devload.COM	8cca 8916ad01 b430 cd21 8b2e0200 892e
4253e41d09dSXin LI!:mime	application/x-dosexec
4263e41d09dSXin LI!:ext com
4273e41d09dSXin LI
428b6cee71dSXin LI# updated by Joerg Jenderek at Oct 2008
429b6cee71dSXin LI0	ulelong		0xffff10eb	DR-DOS executable (COM)
430b6cee71dSXin LI# byte 0xeb conflicts with "sequent" magic leshort 0xn2eb
431b6cee71dSXin LI0	ubeshort&0xeb8d	>0xeb00
432b6cee71dSXin LI# DR-DOS STACKER.COM SCREATE.SYS missed
433*a5d223e6SXin LI
434*a5d223e6SXin LI0       name    msdos-com
435*a5d223e6SXin LI>0  byte        x               DOS executable (COM)
436*a5d223e6SXin LI>6	string		SFX\ of\ LHarc	\b, %s
437*a5d223e6SXin LI>0x1FE leshort	0xAA55		    \b, boot code
438*a5d223e6SXin LI>85	string		UPX		        \b, UPX compressed
439*a5d223e6SXin LI>4	string		\ $ARX		    \b, ARX self-extracting archive
440*a5d223e6SXin LI>4	string		\ $LHarc	    \b, LHarc self-extracting archive
441*a5d223e6SXin LI>0x20e string	SFX\ by\ LARC	\b, LARC self-extracting archive
442*a5d223e6SXin LI
443*a5d223e6SXin LI# JMP 8bit
444*a5d223e6SXin LI0	        byte	0xeb
445*a5d223e6SXin LI# allow forward jumps only
446*a5d223e6SXin LI>1          byte    >-1
447*a5d223e6SXin LI# that offset must be accessible
448*a5d223e6SXin LI>>(1.b+2)   byte    x
449*a5d223e6SXin LI>>>0        use msdos-com
450*a5d223e6SXin LI
451*a5d223e6SXin LI# JMP 16bit
452*a5d223e6SXin LI0           byte    0xe9
453*a5d223e6SXin LI# forward jumps
454*a5d223e6SXin LI>1          short   >-1
455*a5d223e6SXin LI# that offset must be accessible
456*a5d223e6SXin LI>>(1.s+3)   byte    x
457*a5d223e6SXin LI>>>0        use msdos-com
458*a5d223e6SXin LI# negative offset, must not lead into PSP
459*a5d223e6SXin LI>1          short   <-259
460*a5d223e6SXin LI# that offset must be accessible
461*a5d223e6SXin LI>>(1,s+65539)   byte    x
462*a5d223e6SXin LI>>>0        use msdos-com
463*a5d223e6SXin LI
4643e41d09dSXin LI# updated by Joerg Jenderek at Oct 2008,2015
4653e41d09dSXin LI# following line is too general
4663e41d09dSXin LI0	ubyte		0xb8
4673e41d09dSXin LI# skip 2 linux kernels like memtest.bin with "\xb8\xc0\x07\x8e" in ./linux
4683e41d09dSXin LI>0	string		!\xb8\xc0\x07\x8e
469b6cee71dSXin LI# modified by Joerg Jenderek
4703e41d09dSXin LI# syslinux COM32 or COM32R executable
4713e41d09dSXin LI>>1	lelong&0xFFFFFFFe 0x21CD4CFe	COM executable (32-bit COMBOOT
4723e41d09dSXin LI# http://www.syslinux.org/wiki/index.php/Comboot_API
4733e41d09dSXin LI# Since version 5.00 c32 modules switched from the COM32 object format to ELF
4743e41d09dSXin LI!:mime	application/x-c32-comboot-syslinux-exec
4753e41d09dSXin LI!:ext c32
476b6cee71dSXin LI# http://syslinux.zytor.com/comboot.php
4773e41d09dSXin LI# older syslinux version ( <4 )
478b6cee71dSXin LI# (32-bit COMBOOT) programs *.C32 contain 32-bit code and run in flat-memory 32-bit protected mode
479b6cee71dSXin LI# start with assembler instructions mov eax,21cd4cffh
4803e41d09dSXin LI>>>1	lelong		0x21CD4CFf	\b)
481b6cee71dSXin LI# syslinux:doc/comboot.txt
482b6cee71dSXin LI# A COM32R program must start with the byte sequence B8 FE 4C CD 21 (mov
483b6cee71dSXin LI# eax,21cd4cfeh) as a magic number.
4843e41d09dSXin LI# syslinux version (4.x)
4853e41d09dSXin LI# "COM executable (COM32R)" or "Syslinux COM32 module" by TrID
4863e41d09dSXin LI>>>1	lelong		0x21CD4CFe	\b, relocatable)
4873e41d09dSXin LI# remaining are DOS COM executables starting with assembler instruction MOV
4883e41d09dSXin LI# like FreeDOS BANNER*.COM FINDDISK.COM GIF2RAW.COM WINCHK.COM
4893e41d09dSXin LI# MS-DOS SYS.COM RESTART.COM
4903e41d09dSXin LI# SYSLINUX.COM (version 1.40 - 2.13)
4913e41d09dSXin LI# GFXBOOT.COM (version 3.75)
4923e41d09dSXin LI# COPYBS.COM POWEROFF.COM INT18.COM
4933e41d09dSXin LI>>1	default	x			COM executable for DOS
4943e41d09dSXin LI!:mime	application/x-dosexec
4953e41d09dSXin LI#!:mime	application/x-ms-dos-executable
4963e41d09dSXin LI#!:mime	application/x-msdos-program
4973e41d09dSXin LI!:ext com
4983e41d09dSXin LI
499b6cee71dSXin LI0	string/b	\x81\xfc
500b6cee71dSXin LI>4	string	\x77\x02\xcd\x20\xb9
501b6cee71dSXin LI>>36	string	UPX!			FREE-DOS executable (COM), UPX compressed
502b6cee71dSXin LI252	string Must\ have\ DOS\ version DR-DOS executable (COM)
503b6cee71dSXin LI# added by Joerg Jenderek at Oct 2008
504b6cee71dSXin LI# GRR search is not working
505b6cee71dSXin LI#34	search/2	UPX!		FREE-DOS executable (COM), UPX compressed
506b6cee71dSXin LI34	string	UPX!			FREE-DOS executable (COM), UPX compressed
507b6cee71dSXin LI35	string	UPX!			FREE-DOS executable (COM), UPX compressed
508b6cee71dSXin LI# GRR search is not working
509b6cee71dSXin LI#2	search/28	\xcd\x21	COM executable for MS-DOS
510b6cee71dSXin LI#WHICHFAT.cOM
511b6cee71dSXin LI2	string	\xcd\x21		COM executable for DOS
512b6cee71dSXin LI#DELTREE.cOM DELTREE2.cOM
513b6cee71dSXin LI4	string	\xcd\x21		COM executable for DOS
514b6cee71dSXin LI#IFMEMDSK.cOM ASSIGN.cOM COMP.cOM
515b6cee71dSXin LI5	string	\xcd\x21		COM executable for DOS
516b6cee71dSXin LI#DELTMP.COm HASFAT32.cOM
517b6cee71dSXin LI7	string	\xcd\x21
518b6cee71dSXin LI>0	byte	!0xb8			COM executable for DOS
519b6cee71dSXin LI#COMP.cOM MORE.COm
520b6cee71dSXin LI10	string	\xcd\x21
521b6cee71dSXin LI>5	string	!\xcd\x21		COM executable for DOS
522b6cee71dSXin LI#comecho.com
523b6cee71dSXin LI13	string	\xcd\x21		COM executable for DOS
524b6cee71dSXin LI#HELP.COm EDIT.coM
525b6cee71dSXin LI18	string	\xcd\x21		COM executable for MS-DOS
526b6cee71dSXin LI#NWRPLTRM.COm
527b6cee71dSXin LI23	string	\xcd\x21		COM executable for MS-DOS
528b6cee71dSXin LI#LOADFIX.cOm LOADFIX.cOm
529b6cee71dSXin LI30	string	\xcd\x21		COM executable for MS-DOS
530b6cee71dSXin LI#syslinux.com 3.11
531b6cee71dSXin LI70	string	\xcd\x21		COM executable for DOS
532b6cee71dSXin LI# many compressed/converted COMs start with a copy loop instead of a jump
533b6cee71dSXin LI0x6	search/0xa	\xfc\x57\xf3\xa5\xc3	COM executable for MS-DOS
534b6cee71dSXin LI0x6	search/0xa	\xfc\x57\xf3\xa4\xc3	COM executable for DOS
535b6cee71dSXin LI>0x18	search/0x10	\x50\xa4\xff\xd5\x73	\b, aPack compressed
536b6cee71dSXin LI0x3c	string		W\ Collis\0\0		COM executable for MS-DOS, Compack compressed
537b6cee71dSXin LI# FIXME: missing diet .com compression
538b6cee71dSXin LI
539b6cee71dSXin LI# miscellaneous formats
540b6cee71dSXin LI0	string/b	LZ		MS-DOS executable (built-in)
541b6cee71dSXin LI#0	byte		0xf0		MS-DOS program library data
542b6cee71dSXin LI#
543b6cee71dSXin LI
544b6cee71dSXin LI# AAF files:
545b6cee71dSXin LI# <stuartc@rd.bbc.co.uk> Stuart Cunningham
546b6cee71dSXin LI0	string/b	\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
547b6cee71dSXin LI>30	byte	9		(512B sectors)
548b6cee71dSXin LI>30	byte	12		(4kB sectors)
549b6cee71dSXin LI0	string/b	\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
550b6cee71dSXin LI>30	byte	9		(512B sectors)
551b6cee71dSXin LI>30	byte	12		(4kB sectors)
552b6cee71dSXin LI
553b6cee71dSXin LI# Popular applications
554b6cee71dSXin LI2080	string	Microsoft\ Word\ 6.0\ Document	%s
555b6cee71dSXin LI!:mime	application/msword
556b6cee71dSXin LI2080	string	Documento\ Microsoft\ Word\ 6 Spanish Microsoft Word 6 document data
557b6cee71dSXin LI!:mime	application/msword
558b6cee71dSXin LI# Pawel Wiecek <coven@i17linuxb.ists.pwr.wroc.pl> (for polish Word)
559b6cee71dSXin LI2112	string	MSWordDoc			Microsoft Word document data
560b6cee71dSXin LI!:mime	application/msword
561b6cee71dSXin LI#
562b6cee71dSXin LI0	belong	0x31be0000			Microsoft Word Document
563b6cee71dSXin LI!:mime	application/msword
564b6cee71dSXin LI#
565b6cee71dSXin LI0	string/b	PO^Q`				Microsoft Word 6.0 Document
566b6cee71dSXin LI!:mime	application/msword
567b6cee71dSXin LI#
568b6cee71dSXin LI0	string/b	\376\067\0\043			Microsoft Office Document
569b6cee71dSXin LI!:mime	application/msword
570b6cee71dSXin LI0	string/b	\333\245-\0\0\0			Microsoft Office Document
571b6cee71dSXin LI!:mime	application/msword
572b6cee71dSXin LI512	string/b	\354\245\301			Microsoft Word Document
573b6cee71dSXin LI!:mime	application/msword
574b6cee71dSXin LI
575b6cee71dSXin LI#
576b6cee71dSXin LI0	string/b	\xDB\xA5\x2D\x00		Microsoft WinWord 2.0 Document
577b6cee71dSXin LI!:mime application/msword
578b6cee71dSXin LI#
579b6cee71dSXin LI2080	string	Microsoft\ Excel\ 5.0\ Worksheet	%s
580b6cee71dSXin LI!:mime	application/vnd.ms-excel
581b6cee71dSXin LI#
582b6cee71dSXin LI0	string/b	\xDB\xA5\x2D\x00		Microsoft WinWord 2.0 Document
583b6cee71dSXin LI!:mime application/msword
584b6cee71dSXin LI
585b6cee71dSXin LI2080	string	Foglio\ di\ lavoro\ Microsoft\ Exce	%s
586b6cee71dSXin LI!:mime	application/vnd.ms-excel
587b6cee71dSXin LI#
588b6cee71dSXin LI# Pawel Wiecek <coven@i17linuxb.ists.pwr.wroc.pl> (for polish Excel)
589b6cee71dSXin LI2114	string	Biff5		Microsoft Excel 5.0 Worksheet
590b6cee71dSXin LI!:mime	application/vnd.ms-excel
591b6cee71dSXin LI# Italian MS-Excel
592b6cee71dSXin LI2121	string	Biff5		Microsoft Excel 5.0 Worksheet
593b6cee71dSXin LI!:mime	application/vnd.ms-excel
594b6cee71dSXin LI0	string/b	\x09\x04\x06\x00\x00\x00\x10\x00	Microsoft Excel Worksheet
595b6cee71dSXin LI!:mime	application/vnd.ms-excel
596b6cee71dSXin LI#
597*a5d223e6SXin LI# Update: Joerg Jenderek
598*a5d223e6SXin LI# URL: https://en.wikipedia.org/wiki/Lotus_1-2-3
599*a5d223e6SXin LI# Reference: http://www.aboutvb.de/bas/formate/pdf/wk3.pdf
600*a5d223e6SXin LI# Note: newer Lotus versions >2 use longer BOF record
601*a5d223e6SXin LI# record type (BeginningOfFile=0000h) + length (001Ah)
602*a5d223e6SXin LI0	belong	0x00001a00
603*a5d223e6SXin LI# reserved should be 0h but 8c0dh for TUTMAC.WK3, 5h for SAMPADNS.WK3, 1h for a_readme.wk3, 1eh for K&G86.WK3
604*a5d223e6SXin LI#>18	uleshort&0x73E0	0
605*a5d223e6SXin LI# Lotus Multi Byte Character Set (LMBCS=1-31)
606*a5d223e6SXin LI>20	ubyte		>0
607*a5d223e6SXin LI>>20	ubyte		<32	Lotus 1-2-3
608*a5d223e6SXin LI#!:mime	application/x-123
609*a5d223e6SXin LI!:mime	application/vnd.lotus-1-2-3
610*a5d223e6SXin LI!:apple	????L123
611*a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 wk3 document data"
612*a5d223e6SXin LI>>>4	uleshort	0x1000	WorKsheet, version 3
613*a5d223e6SXin LI!:ext	wk3
614*a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 wk4 document data"
615*a5d223e6SXin LI>>>4	uleshort	0x1002	WorKsheet, version 4
616*a5d223e6SXin LI# also worksheet template 4 (.wt4)
617*a5d223e6SXin LI!:ext	wk4/wt4
618*a5d223e6SXin LI# no example or documentation for wk5
619*a5d223e6SXin LI#>>4	uleshort	0x????	WorKsheet, version 4
620*a5d223e6SXin LI#!:ext	wk5
621*a5d223e6SXin LI# only MacrotoScript.123 example
622*a5d223e6SXin LI>>>4	uleshort	0x1003	WorKsheet, version 97
623*a5d223e6SXin LI# also worksheet template Smartmaster (.12M)?
624*a5d223e6SXin LI!:ext	123
625*a5d223e6SXin LI# only Set_Y2K.123 example
626*a5d223e6SXin LI>>>4	uleshort	0x1005	WorKsheet, version 9.8 Millennium
627*a5d223e6SXin LI!:ext	123
628*a5d223e6SXin LI# no example for this version
629*a5d223e6SXin LI>>>4	uleshort	0x8001	FoRMatting data
630*a5d223e6SXin LI!:ext	frm
631*a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 fm3 or fmb document data"
632*a5d223e6SXin LI# TrID labeles the entry as "Formatting Data for Lotus 1-2-3 worksheet"
633*a5d223e6SXin LI>>>4	uleshort	0x8007	ForMatting data, version 3
634*a5d223e6SXin LI!:ext	fm3
635*a5d223e6SXin LI>>>4	default		x	unknown
636*a5d223e6SXin LI# file revision sub code 0004h for worksheets
637*a5d223e6SXin LI>>>>6	uleshort	=0x0004	worksheet
638*a5d223e6SXin LI!:ext	wXX
639*a5d223e6SXin LI>>>>6	uleshort	!0x0004	formatting data
640*a5d223e6SXin LI!:ext	fXX
641*a5d223e6SXin LI# main revision number
642*a5d223e6SXin LI>>>>4	uleshort	x	\b, revision 0x%x
643*a5d223e6SXin LI>>>6	uleshort	=0x0004	\b, cell range
644*a5d223e6SXin LI# active cellcoord range (start row, page,column ; end row, page, column)
645*a5d223e6SXin LI# start values normally 0~1st sheet A1
646*a5d223e6SXin LI>>>>8	ulelong		!0
647*a5d223e6SXin LI>>>>>10	ubyte		>0	\b%d*
648*a5d223e6SXin LI>>>>>8	uleshort	x	\b%d,
649*a5d223e6SXin LI>>>>>11	ubyte		x	\b%d-
650*a5d223e6SXin LI# end page mostly 0
651*a5d223e6SXin LI>>>>14	ubyte		>0	\b%d*
652*a5d223e6SXin LI# end raw, column normally not 0
653*a5d223e6SXin LI>>>>12	uleshort	x	\b%d,
654*a5d223e6SXin LI>>>>15	ubyte		x	\b%d
655*a5d223e6SXin LI# Lotus Multi Byte Character Set (1~cp850,2~cp851,...,16~japan,...,31~??)
656*a5d223e6SXin LI>>>>20	ubyte		>1	\b, character set 0x%x
657*a5d223e6SXin LI# flags
658*a5d223e6SXin LI>>>>21	ubyte		x	\b, flags 0x%x
659*a5d223e6SXin LI>>>6	uleshort	!0x0004
660*a5d223e6SXin LI# record type (FONTNAME=00AEh)
661*a5d223e6SXin LI>>>>30	search/29	\0\xAE
662*a5d223e6SXin LI# variable length m (2) + entries (1) + ?? (1) + LCMBS string (n)
663*a5d223e6SXin LI>>>>>&4	string		>\0	\b, 1st font "%s"
664b6cee71dSXin LI#
665*a5d223e6SXin LI# Update: Joerg Jenderek
666*a5d223e6SXin LI# URL: http://fileformats.archiveteam.org/wiki/Lotus_1-2-3
667*a5d223e6SXin LI# Reference: http://www.schnarff.com/file-formats/lotus-1-2-3/WSFF2.TXT
668*a5d223e6SXin LI# Note: Used by both old Lotus 1-2-3 and Lotus Symphony (DOS) til version 2.x
669*a5d223e6SXin LI# record type (BeginningOfFile=0000h) + length (0002h)
670*a5d223e6SXin LI0	belong	0x00000200
671*a5d223e6SXin LI# GRR: line above is too general as it catches also MS Windows CURsor
672*a5d223e6SXin LI# to display MS Windows cursor (strength=70) before Lotus 1-2-3 (strength=70-1)
673*a5d223e6SXin LI!:strength -1
674*a5d223e6SXin LI# skip Windows cursors with image height <256 and keep Lotus with low opcode 0001-0083h
675*a5d223e6SXin LI>7	ubyte		0
676*a5d223e6SXin LI# skip Windows cursors with image width 256 and keep Lotus with positiv opcode
677*a5d223e6SXin LI>>6	ubyte		>0	Lotus
678*a5d223e6SXin LI# !:mime	application/x-123
679*a5d223e6SXin LI!:mime	application/vnd.lotus-1-2-3
680*a5d223e6SXin LI!:apple	????L123
681*a5d223e6SXin LI# revision number (0404h = 123 1A, 0405h = Lotus Symphony , 0406h = 123 2.x wk1 , 8006h = fmt , ...)
682*a5d223e6SXin LI# undocumented; (version 5.26) labeled the configurations as "Lotus 1-2-3"
683*a5d223e6SXin LI>>>4	uleshort	0x0007	1-2-3 CoNFiguration, version 2.x (PGRAPH.CNF)
684*a5d223e6SXin LI!:ext	cnf
685*a5d223e6SXin LI>>>4	uleshort	0x0C05	1-2-3 CoNFiguration, version 2.4J
686*a5d223e6SXin LI!:ext	cnf
687*a5d223e6SXin LI>>>4	uleshort	0x0801	1-2-3 CoNFiguration, version 1-2.1
688*a5d223e6SXin LI!:ext	cnf
689*a5d223e6SXin LI>>>4	uleshort	0x0802	Symphony CoNFiguration
690*a5d223e6SXin LI!:ext	cnf
691*a5d223e6SXin LI>>>4	uleshort	0x0804	1-2-3 CoNFiguration, version 2.2
692*a5d223e6SXin LI!:ext	cnf
693*a5d223e6SXin LI>>>4	uleshort	0x080A	1-2-3 CoNFiguration, version 2.3-2.4
694*a5d223e6SXin LI!:ext	cnf
695*a5d223e6SXin LI>>>4	uleshort	0x1402	1-2-3 CoNFiguration, version 3.x
696*a5d223e6SXin LI!:ext	cnf
697*a5d223e6SXin LI>>>4	uleshort	0x1450	1-2-3 CoNFiguration, version 4.x
698*a5d223e6SXin LI!:ext	cnf
699*a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 123"
700*a5d223e6SXin LI# TrID labeles the entry as "Lotus 123 Worksheet (generic)"
701*a5d223e6SXin LI>>>4	uleshort	0x0404	1-2-3 WorKSheet, version 1
702*a5d223e6SXin LI# extension "wks" also for Microsoft Works document
703*a5d223e6SXin LI!:ext	wks
704*a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 123"
705*a5d223e6SXin LI# TrID labeles the entry as "Lotus 123 Worksheet (generic)"
706*a5d223e6SXin LI>>>4	uleshort	0x0405	Symphony WoRksheet, version 1.0
707*a5d223e6SXin LI!:ext	wrk/wr1
708*a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 wk1 document data"
709*a5d223e6SXin LI# TrID labeles the entry as "Lotus 123 Worksheet (V2)"
710*a5d223e6SXin LI>>>4	uleshort	0x0406	1-2-3/Symphony worksheet, version 2
711*a5d223e6SXin LI# Symphony (.wr1)
712*a5d223e6SXin LI!:ext	wk1/wr1
713*a5d223e6SXin LI# no example for this japan version
714*a5d223e6SXin LI>>>4	uleshort	0x0600	1-2-3 WorKsheet, version 1.xJ
715*a5d223e6SXin LI!:ext	wj1
716*a5d223e6SXin LI# no example or documentation for wk2
717*a5d223e6SXin LI#>>>4	uleshort	0x????	1-2-3 WorKsheet, version 2
718*a5d223e6SXin LI#!:ext	wk2
719*a5d223e6SXin LI# undocumented japan version
720*a5d223e6SXin LI>>>4	uleshort	0x0602	1-2-3 worksheet, version 2.4J
721*a5d223e6SXin LI!:ext	wj3
722*a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 fmt document data"
723*a5d223e6SXin LI>>>4	uleshort	0x8006	1-2-3 ForMaTting data, version 2.x
724*a5d223e6SXin LI# japan version 2.4J (fj3)
725*a5d223e6SXin LI!:ext	fmt/fj3
726*a5d223e6SXin LI# no example for this version
727*a5d223e6SXin LI>>>4	uleshort	0x8007	1-2-3 FoRMatting data, version 2.0
728*a5d223e6SXin LI!:ext	frm
729*a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3"
730*a5d223e6SXin LI>>>4	default		x	unknown worksheet or configuration
731*a5d223e6SXin LI!:ext	cnf
732*a5d223e6SXin LI>>>>4	uleshort	x	\b, revision 0x%x
733*a5d223e6SXin LI# 2nd record for most worksheets describes cells range
734*a5d223e6SXin LI>>>6		use	lotus-cells
735*a5d223e6SXin LI# 3nd record for most japan worksheets describes cells range
736*a5d223e6SXin LI>>>(8.s+10)	use	lotus-cells
737*a5d223e6SXin LI#	check and then display Lotus worksheet cells range
738*a5d223e6SXin LI0	name		lotus-cells
739*a5d223e6SXin LI# look for type (RANGE=0006h) + length (0008h) at record begin
740*a5d223e6SXin LI>0	ubelong	0x06000800	\b, cell range
741*a5d223e6SXin LI# cell range (start column, row, end column, row) start values normally 0,0~A1 cell
742*a5d223e6SXin LI>>4	ulong		!0
743*a5d223e6SXin LI>>>4	uleshort	x	\b%d,
744*a5d223e6SXin LI>>>6	uleshort	x	\b%d-
745*a5d223e6SXin LI# end of cell range
746*a5d223e6SXin LI>>8	uleshort	x	\b%d,
747*a5d223e6SXin LI>>10	uleshort	x	\b%d
748*a5d223e6SXin LI# EndOfLotus123
749b6cee71dSXin LI0	string/b		WordPro\0	Lotus WordPro
750b6cee71dSXin LI!:mime	application/vnd.lotus-wordpro
751b6cee71dSXin LI0	string/b		WordPro\r\373	Lotus WordPro
752b6cee71dSXin LI!:mime	application/vnd.lotus-wordpro
753b6cee71dSXin LI
754b6cee71dSXin LI
755b6cee71dSXin LI# Summary: Script used by InstallScield to uninstall applications
756b6cee71dSXin LI# Extension: .isu
757b6cee71dSXin LI# Submitted by: unknown
758b6cee71dSXin LI# Modified by (1): Abel Cheung <abelcheung@gmail.com> (replace useless entry)
759b6cee71dSXin LI0		string		\x71\xa8\x00\x00\x01\x02
760b6cee71dSXin LI>12		string		Stirling\ Technologies,		InstallShield Uninstall Script
761b6cee71dSXin LI
762b6cee71dSXin LI# Winamp .avs
763b6cee71dSXin LI#0	string	Nullsoft\ AVS\ Preset\ \060\056\061\032 A plug in for Winamp ms-windows Freeware media player
764b6cee71dSXin LI0	string/b	Nullsoft\ AVS\ Preset\ 	Winamp plug in
765b6cee71dSXin LI
766b6cee71dSXin LI# Windows Metafont .WMF
767b6cee71dSXin LI0	string/b	\327\315\306\232	ms-windows metafont .wmf
768b6cee71dSXin LI0	string/b	\002\000\011\000	ms-windows metafont .wmf
769b6cee71dSXin LI0	string/b	\001\000\011\000	ms-windows metafont .wmf
770b6cee71dSXin LI
771b6cee71dSXin LI#tz3 files whatever that is (MS Works files)
772b6cee71dSXin LI0	string/b	\003\001\001\004\070\001\000\000	tz3 ms-works file
773b6cee71dSXin LI0	string/b	\003\002\001\004\070\001\000\000	tz3 ms-works file
774b6cee71dSXin LI0	string/b	\003\003\001\004\070\001\000\000	tz3 ms-works file
775b6cee71dSXin LI
776b6cee71dSXin LI# PGP sig files .sig
777b6cee71dSXin LI#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
778b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\065\027\266\151\064\005\045\101\233\021\002 PGP sig
779b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\066\027\266\151\064\005\045\101\233\021\002 PGP sig
780b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\067\027\266\151\064\005\045\101\233\021\002 PGP sig
781b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\070\027\266\151\064\005\045\101\233\021\002 PGP sig
782b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\071\027\266\151\064\005\045\101\233\021\002 PGP sig
783b6cee71dSXin LI0 string \211\000\225\003\005\000\062\122\207\304\100\345\042 PGP sig
784b6cee71dSXin LI
785b6cee71dSXin LI# windows zips files .dmf
786b6cee71dSXin LI0	string/b	MDIF\032\000\010\000\000\000\372\046\100\175\001\000\001\036\001\000 MS Windows special zipped file
787b6cee71dSXin LI
788b6cee71dSXin LI
789b6cee71dSXin LI#ico files
790b6cee71dSXin LI0	string/b	\102\101\050\000\000\000\056\000\000\000\000\000\000\000	Icon for MS Windows
791b6cee71dSXin LI
792b6cee71dSXin LI# Windows icons
793282e23f0SXin LI# Update: Joerg Jenderek
794282e23f0SXin LI# URL: https://en.wikipedia.org/wiki/CUR_(file_format)
795282e23f0SXin LI# Note: similiar to Windows CURsor. container for BMP (only DIB part) or PNG
796b6cee71dSXin LI0   belong  0x00000100
797b6cee71dSXin LI>9  byte    0
798282e23f0SXin LI>>0 byte    x
799282e23f0SXin LI>>0 use     cur-ico-dir
800b6cee71dSXin LI>9  ubyte   0xff
801282e23f0SXin LI>>0 byte    x
802282e23f0SXin LI>>0 use     cur-ico-dir
803282e23f0SXin LI#	displays number of icons and information for icon or cursor
804282e23f0SXin LI0	name		cur-ico-dir
805282e23f0SXin LI# skip some Lotus 1-2-3 worksheets, CYCLE.PIC and keep Windows cursors with
806282e23f0SXin LI# 1st data offset = dir header size + n * dir entry size = 6 + n * 10h = ?6h
807282e23f0SXin LI>18		ulelong		&0x00000006
808282e23f0SXin LI# skip remaining worksheets, because valid only for DIB image (40) or PNG image (\x89PNG)
809282e23f0SXin LI>>(18.l)	ulelong		x		MS Windows
810282e23f0SXin LI>>>0		ubelong		0x00000100	icon resource
811282e23f0SXin LI#!:mime		image/vnd.microsoft.icon
812b6cee71dSXin LI!:mime		image/x-icon
813282e23f0SXin LI!:ext		ico
814282e23f0SXin LI>>>>4 		uleshort	x		- %d icon
815282e23f0SXin LI# plural s
816282e23f0SXin LI>>>>4 		uleshort	>1		\bs
817282e23f0SXin LI# 1st icon
818282e23f0SXin LI>>>>0x06	use		ico-entry
819282e23f0SXin LI# 2nd icon
820282e23f0SXin LI>>>>4 		uleshort	>1
821282e23f0SXin LI>>>>>0x16	use		ico-entry
822282e23f0SXin LI>>>0		ubelong		0x00000200	cursor resource
823282e23f0SXin LI#!:mime		image/x-cur
824282e23f0SXin LI!:mime		image/x-win-bitmap
825282e23f0SXin LI!:ext		cur
826282e23f0SXin LI>>>>4 		uleshort	x		- %d icon
827282e23f0SXin LI>>>>4 		uleshort	>1		\bs
828282e23f0SXin LI# 1st cursor
829282e23f0SXin LI>>>>0x06	use		cur-entry
830282e23f0SXin LI#>>>>0x16	use		cur-entry
831282e23f0SXin LI#	display information of one cursor entry
832282e23f0SXin LI0	name		cur-entry
833282e23f0SXin LI>0	use		cur-ico-entry
834282e23f0SXin LI>4	uleshort	x	\b, hotspot @%dx
835282e23f0SXin LI>6	uleshort	x	\b%d
836282e23f0SXin LI#	display information of one icon entry
837282e23f0SXin LI0	name		ico-entry
838282e23f0SXin LI>0			use	cur-ico-entry
839282e23f0SXin LI# normally 0 1 but also found 14
840282e23f0SXin LI>4	uleshort	>1	\b, %d planes
841282e23f0SXin LI# normally 0 1 but also found some 3, 4, some 6, 8, 24, many 32, two 256
842282e23f0SXin LI>6	uleshort	>1	\b, %d bits/pixel
843282e23f0SXin LI#	display shared information of cursor or icon entry
844282e23f0SXin LI0		name		cur-ico-entry
845282e23f0SXin LI>0		byte		=0		\b, 256x
846282e23f0SXin LI>0		byte		!0		\b, %dx
847282e23f0SXin LI>1		byte        	=0		\b256
848282e23f0SXin LI>1		byte        	!0		\b%d
849282e23f0SXin LI# number of colors in palette
850282e23f0SXin LI>2		ubyte		!0		\b, %d colors
851282e23f0SXin LI# reserved 0 FFh
852282e23f0SXin LI#>3		ubyte        	x		\b, reserved %x
853282e23f0SXin LI#>8		ulelong		x		\b, image size %d
854282e23f0SXin LI# offset of PNG or DIB image
855282e23f0SXin LI#>12		ulelong		x		\b, offset 0x%x
856282e23f0SXin LI# PNG header (\x89PNG)
857282e23f0SXin LI>(12.l)		ubelong		=0x89504e47
858282e23f0SXin LI>>&-4		indirect	x	\b with
859282e23f0SXin LI# DIB image
860282e23f0SXin LI>(12.l)		ubelong		!0x89504e47
861282e23f0SXin LI#>>&-4		use     	dib-image
862b6cee71dSXin LI
863b6cee71dSXin LI# Windows non-animated cursors
864282e23f0SXin LI# Update: Joerg Jenderek
865282e23f0SXin LI# URL: https://en.wikipedia.org/wiki/CUR_(file_format)
866282e23f0SXin LI# Note: similiar to Windows ICOn. container for BMP ( only DIB part)
867282e23f0SXin LI# GRR: line below is too general as it catches also Lotus 1-2-3 files
868b6cee71dSXin LI0   belong  0x00000200
869b6cee71dSXin LI>9  byte    0
870282e23f0SXin LI>>0 use     cur-ico-dir
871b6cee71dSXin LI>9  ubyte   0xff
872282e23f0SXin LI>>0 use     cur-ico-dir
873b6cee71dSXin LI
874b6cee71dSXin LI# .chr files
875b6cee71dSXin LI0	string/b	PK\010\010BGI	Borland font
876b6cee71dSXin LI>4	string	>\0	%s
877b6cee71dSXin LI# then there is a copyright notice
878b6cee71dSXin LI
879b6cee71dSXin LI
880b6cee71dSXin LI# .bgi files
881b6cee71dSXin LI0	string/b	pk\010\010BGI	Borland device
882b6cee71dSXin LI>4	string	>\0	%s
883b6cee71dSXin LI# then there is a copyright notice
884b6cee71dSXin LI
885b6cee71dSXin LI
886b6cee71dSXin LI# Windows Recycle Bin record file (named INFO2)
887b6cee71dSXin LI# By Abel Cheung (abelcheung AT gmail dot com)
888b6cee71dSXin LI# Version 4 always has 280 bytes (0x118) per record, version 5 has 800 bytes
889b6cee71dSXin LI# Since Vista uses another structure, INFO2 structure probably won't change
890b6cee71dSXin LI# anymore. Detailed analysis in:
891b6cee71dSXin LI# http://www.cybersecurityinstitute.biz/downloads/INFO2.pdf
892b6cee71dSXin LI0	lelong		0x00000004
893b6cee71dSXin LI>12	lelong		0x00000118	Windows Recycle Bin INFO2 file (Win98 or below)
894b6cee71dSXin LI
895b6cee71dSXin LI0	lelong		0x00000005
896b6cee71dSXin LI>12	lelong		0x00000320	Windows Recycle Bin INFO2 file (Win2k - WinXP)
897b6cee71dSXin LI
898b6cee71dSXin LI# From Doug Lee via a FreeBSD pr
899b6cee71dSXin LI9	string		GERBILDOC	First Choice document
900b6cee71dSXin LI9	string		GERBILDB	First Choice database
901b6cee71dSXin LI9	string		GERBILCLIP	First Choice database
902b6cee71dSXin LI0	string		GERBIL		First Choice device file
903b6cee71dSXin LI9	string		RABBITGRAPH	RabbitGraph file
904b6cee71dSXin LI0	string		DCU1		Borland Delphi .DCU file
905b6cee71dSXin LI0	string		=!<spell>	MKS Spell hash list (old format)
906b6cee71dSXin LI0	string		=!<spell2>	MKS Spell hash list
907b6cee71dSXin LI# Too simple - MPi
908b6cee71dSXin LI#0	string		AH		Halo(TM) bitmapped font file
909b6cee71dSXin LI0	lelong		0x08086b70	TurboC BGI file
910b6cee71dSXin LI0	lelong		0x08084b50	TurboC Font file
911b6cee71dSXin LI
912b6cee71dSXin LI# Debian#712046: The magic below identifies "Delphi compiled form data".
913b6cee71dSXin LI# An additional source of information is available at:
914b6cee71dSXin LI# http://www.woodmann.com/fravia/dafix_t1.htm
915b6cee71dSXin LI0	string		TPF0
916b6cee71dSXin LI>4	pstring		>\0		Delphi compiled form '%s'
917b6cee71dSXin LI
918b6cee71dSXin LI# tests for DBase files moved, updated and merged to database
919b6cee71dSXin LI
920b6cee71dSXin LI0	string		PMCC		Windows 3.x .GRP file
921b6cee71dSXin LI1	string		RDC-meg		MegaDots
922b6cee71dSXin LI>8	byte		>0x2F		version %c
923b6cee71dSXin LI>9	byte		>0x2F		\b.%c file
924b6cee71dSXin LI0	lelong		0x4C
925b6cee71dSXin LI>4	lelong		0x00021401	Windows shortcut file
926b6cee71dSXin LI
927b6cee71dSXin LI# .PIF files added by Joerg Jenderek from http://smsoft.ru/en/pifdoc.htm
928b6cee71dSXin LI# only for windows versions equal or greater 3.0
929b6cee71dSXin LI0x171	string	MICROSOFT\ PIFEX\0	Windows Program Information File
930b6cee71dSXin LI!:mime	application/x-dosexec
931b6cee71dSXin LI#>2	string	 	>\0		\b, Title:%.30s
932b6cee71dSXin LI>0x24	string		>\0		\b for %.63s
933b6cee71dSXin LI>0x65	string		>\0		\b, directory=%.64s
934b6cee71dSXin LI>0xA5	string		>\0		\b, parameters=%.64s
935b6cee71dSXin LI#>0x181	leshort	x	\b, offset %x
936b6cee71dSXin LI#>0x183	leshort	x	\b, offsetdata %x
937b6cee71dSXin LI#>0x185	leshort	x	\b, section length %x
938b6cee71dSXin LI>0x187	search/0xB55	WINDOWS\ VMM\ 4.0\0
939b6cee71dSXin LI>>&0x5e		ubyte	>0
940b6cee71dSXin LI>>>&-1		string	<PIFMGR.DLL		\b, icon=%s
941b6cee71dSXin LI#>>>&-1		string	PIFMGR.DLL		\b, icon=%s
942b6cee71dSXin LI>>>&-1		string	>PIFMGR.DLL		\b, icon=%s
943b6cee71dSXin LI>>&0xF0		ubyte	>0
944b6cee71dSXin LI>>>&-1		string	<Terminal		\b, font=%.32s
945b6cee71dSXin LI#>>>&-1		string	=Terminal		\b, font=%.32s
946b6cee71dSXin LI>>>&-1		string	>Terminal		\b, font=%.32s
947b6cee71dSXin LI>>&0x110	ubyte	>0
948b6cee71dSXin LI>>>&-1		string	<Lucida\ Console	\b, TrueTypeFont=%.32s
949b6cee71dSXin LI#>>>&-1		string	=Lucida\ Console	\b, TrueTypeFont=%.32s
950b6cee71dSXin LI>>>&-1		string	>Lucida\ Console	\b, TrueTypeFont=%.32s
951b6cee71dSXin LI#>0x187	search/0xB55	WINDOWS\ 286\ 3.0\0	\b, Windows 3.X standard mode-style
952b6cee71dSXin LI#>0x187	search/0xB55	WINDOWS\ 386\ 3.0\0	\b, Windows 3.X enhanced mode-style
953b6cee71dSXin LI>0x187	search/0xB55	WINDOWS\ NT\ \ 3.1\0	\b, Windows NT-style
954b6cee71dSXin LI#>0x187	search/0xB55	WINDOWS\ NT\ \ 4.0\0	\b, Windows NT-style
955b6cee71dSXin LI>0x187	search/0xB55	CONFIG\ \ SYS\ 4.0\0	\b +CONFIG.SYS
956b6cee71dSXin LI#>>&06		string	x			\b:%s
957b6cee71dSXin LI>0x187	search/0xB55	AUTOEXECBAT\ 4.0\0	\b +AUTOEXEC.BAT
958b6cee71dSXin LI#>>&06		string	x			\b:%s
959b6cee71dSXin LI
960b6cee71dSXin LI# DOS EPS Binary File Header
961b6cee71dSXin LI# From: Ed Sznyter <ews@Black.Market.NET>
962b6cee71dSXin LI0	belong		0xC5D0D3C6	DOS EPS Binary File
963b6cee71dSXin LI>4	long		>0		Postscript starts at byte %d
964b6cee71dSXin LI>>8	long		>0		length %d
965b6cee71dSXin LI>>>12	long		>0		Metafile starts at byte %d
966b6cee71dSXin LI>>>>16	long		>0		length %d
967b6cee71dSXin LI>>>20	long		>0		TIFF starts at byte %d
968b6cee71dSXin LI>>>>24	long		>0		length %d
969b6cee71dSXin LI
970b6cee71dSXin LI# TNEF magic From "Joomy" <joomy@se-ed.net>
971b6cee71dSXin LI# Microsoft Outlook's Transport Neutral Encapsulation Format (TNEF)
972b6cee71dSXin LI0	leshort		0x223e9f78	TNEF
973b6cee71dSXin LI!:mime	application/vnd.ms-tnef
974b6cee71dSXin LI
975b6cee71dSXin LI# Norton Guide (.NG , .HLP) files added by Joerg Jenderek from source NG2HTML.C
976b6cee71dSXin LI# of http://www.davep.org/norton-guides/ng2h-105.tgz
977b6cee71dSXin LI# http://en.wikipedia.org/wiki/Norton_Guides
978b6cee71dSXin LI0	string		NG\0\001
979b6cee71dSXin LI# only value 0x100 found at offset 2
980b6cee71dSXin LI>2	ulelong		0x00000100	Norton Guide
981b6cee71dSXin LI# Title[40]
982b6cee71dSXin LI>>8	string		>\0		"%-.40s"
983b6cee71dSXin LI#>>6	uleshort	x		\b, MenuCount=%u
984b6cee71dSXin LI# szCredits[5][66]
985b6cee71dSXin LI>>48	string		>\0		\b, %-.66s
986b6cee71dSXin LI>>114	string		>\0		%-.66s
987b6cee71dSXin LI
988b6cee71dSXin LI# 4DOS help (.HLP) files added by Joerg Jenderek from source TPHELP.PAS
989b6cee71dSXin LI# of http://www.4dos.info/
990b6cee71dSXin LI# pointer,HelpID[8]=4DHnnnmm
991b6cee71dSXin LI0	ulelong	0x48443408		4DOS help file
992b6cee71dSXin LI>4	string	x			\b, version %-4.4s
993b6cee71dSXin LI
994b6cee71dSXin LI# old binary Microsoft (.HLP) files added by Joerg Jenderek from http://file-extension.net/seeker/file_extension_hlp
995b6cee71dSXin LI0	ulequad	0x3a000000024e4c	MS Advisor help file
996b6cee71dSXin LI
997b6cee71dSXin LI# HtmlHelp files (.chm)
9989ce06829SXin LI0	string/b	ITSF\003\000\000\000\x60\000\000\000	MS Windows HtmlHelp Data
999b6cee71dSXin LI
1000b6cee71dSXin LI# GFA-BASIC (Wolfram Kleff)
1001b6cee71dSXin LI2	string/b	GFA-BASIC3	GFA-BASIC 3 data
1002b6cee71dSXin LI
1003b6cee71dSXin LI#------------------------------------------------------------------------------
1004b6cee71dSXin LI# From Stuart Caie <kyzer@4u.net> (developer of cabextract)
1005b6cee71dSXin LI# Microsoft Cabinet files
1006b6cee71dSXin LI0	string/b	MSCF\0\0\0\0	Microsoft Cabinet archive data
1007b6cee71dSXin LI!:mime application/vnd.ms-cab-compressed
1008b6cee71dSXin LI>8	lelong		x		\b, %u bytes
1009b6cee71dSXin LI>28	leshort		1		\b, 1 file
1010b6cee71dSXin LI>28	leshort		>1		\b, %u files
1011b6cee71dSXin LI
1012b6cee71dSXin LI# InstallShield Cabinet files
1013b6cee71dSXin LI0	string/b	ISc(		InstallShield Cabinet archive data
1014b6cee71dSXin LI>5	byte&0xf0	=0x60		version 6,
1015b6cee71dSXin LI>5	byte&0xf0	!0x60		version 4/5,
1016b6cee71dSXin LI>(12.l+40)	lelong	x		%u files
1017b6cee71dSXin LI
1018b6cee71dSXin LI# Windows CE package files
1019b6cee71dSXin LI0	string/b	MSCE\0\0\0\0	Microsoft WinCE install header
1020b6cee71dSXin LI>20	lelong		0		\b, architecture-independent
1021b6cee71dSXin LI>20	lelong		103		\b, Hitachi SH3
1022b6cee71dSXin LI>20	lelong		104		\b, Hitachi SH4
1023b6cee71dSXin LI>20	lelong		0xA11		\b, StrongARM
1024b6cee71dSXin LI>20	lelong		4000		\b, MIPS R4000
1025b6cee71dSXin LI>20	lelong		10003		\b, Hitachi SH3
1026b6cee71dSXin LI>20	lelong		10004		\b, Hitachi SH3E
1027b6cee71dSXin LI>20	lelong		10005		\b, Hitachi SH4
1028b6cee71dSXin LI>20	lelong		70001		\b, ARM 7TDMI
1029b6cee71dSXin LI>52	leshort		1		\b, 1 file
1030b6cee71dSXin LI>52	leshort		>1		\b, %u files
1031b6cee71dSXin LI>56	leshort		1		\b, 1 registry entry
1032b6cee71dSXin LI>56	leshort		>1		\b, %u registry entries
1033b6cee71dSXin LI
1034b6cee71dSXin LI
1035b6cee71dSXin LI# Windows Enhanced Metafile (EMF)
1036b6cee71dSXin LI# See msdn.microsoft.com/archive/en-us/dnargdi/html/msdn_enhmeta.asp
1037b6cee71dSXin LI# for further information.
1038b6cee71dSXin LI0	ulelong 1
1039b6cee71dSXin LI>40	string	\ EMF		Windows Enhanced Metafile (EMF) image data
1040b6cee71dSXin LI>>44	ulelong x		version 0x%x
1041b6cee71dSXin LI
1042b6cee71dSXin LI# from http://filext.com by Derek M Jones <derek@knosof.co.uk>
1043b6cee71dSXin LI# False positive with PPT (also currently this string is too long)
1044b6cee71dSXin LI#0	string/b	\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3E\x00\x03\x00\xFE\xFF\x09\x00\x06	Microsoft Installer
1045b6cee71dSXin LI0	string/b	\320\317\021\340\241\261\032\341	Microsoft Office Document
1046b6cee71dSXin LI#>48	byte	0x1B					Excel Document
1047b6cee71dSXin LI#!:mime application/vnd.ms-excel
1048b6cee71dSXin LI>546	string	bjbj			Microsoft Word Document
1049b6cee71dSXin LI!:mime	application/msword
1050b6cee71dSXin LI>546	string	jbjb			Microsoft Word Document
1051b6cee71dSXin LI!:mime	application/msword
1052b6cee71dSXin LI
1053b6cee71dSXin LI0	string/b	\224\246\056		Microsoft Word Document
1054b6cee71dSXin LI!:mime	application/msword
1055b6cee71dSXin LI
1056b6cee71dSXin LI512	string	R\0o\0o\0t\0\ \0E\0n\0t\0r\0y	Microsoft Word Document
1057b6cee71dSXin LI!:mime	application/msword
1058b6cee71dSXin LI
1059b6cee71dSXin LI# From: "Nelson A. de Oliveira" <naoliv@gmail.com>
1060b6cee71dSXin LI# Magic type for Dell's BIOS .hdr files
1061b6cee71dSXin LI# Dell's .hdr
1062b6cee71dSXin LI0	string/b $RBU
1063b6cee71dSXin LI>23	string Dell			%s system BIOS
1064b6cee71dSXin LI>5	byte   2
1065b6cee71dSXin LI>>48	byte   x			version %d.
1066b6cee71dSXin LI>>49	byte   x			\b%d.
1067b6cee71dSXin LI>>50	byte   x			\b%d
1068b6cee71dSXin LI>5	byte   <2
1069b6cee71dSXin LI>>48	string x			version %.3s
1070b6cee71dSXin LI
1071b6cee71dSXin LI# Type: Microsoft DirectDraw Surface
1072b6cee71dSXin LI# URL:	http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
1073b6cee71dSXin LI# From: Morten Hustveit <morten@debian.org>
1074b6cee71dSXin LI0	string/b	DDS\040\174\000\000\000 Microsoft DirectDraw Surface (DDS),
1075b6cee71dSXin LI>16	lelong	>0			%d x
1076b6cee71dSXin LI>12	lelong	>0			%d,
1077b6cee71dSXin LI>84	string	x			%.4s
1078b6cee71dSXin LI
1079b6cee71dSXin LI# Type: Microsoft Document Imaging Format (.mdi)
1080b6cee71dSXin LI# URL:	http://en.wikipedia.org/wiki/Microsoft_Document_Imaging_Format
1081b6cee71dSXin LI# From: Daniele Sempione <scrows@oziosi.org>
1082*a5d223e6SXin LI# Too weak (EP)
1083*a5d223e6SXin LI#0	short	0x5045			Microsoft Document Imaging Format
1084b6cee71dSXin LI
1085b6cee71dSXin LI# MS eBook format (.lit)
1086b6cee71dSXin LI0	string/b	ITOLITLS		Microsoft Reader eBook Data
1087b6cee71dSXin LI>8	lelong	x			\b, version %u
1088b6cee71dSXin LI!:mime					application/x-ms-reader
1089b6cee71dSXin LI
1090b6cee71dSXin LI# Windows CE Binary Image Data Format
1091b6cee71dSXin LI# From: Dr. Jesus <j@hug.gs>
1092b6cee71dSXin LI0	string/b	B000FF\n	Windows Embedded CE binary image
1093b6cee71dSXin LI
1094b6cee71dSXin LI# Windows Imaging (WIM) Image
1095b6cee71dSXin LI0	string/b	MSWIM\000\000\000	Windows imaging (WIM) image
10963e41d09dSXin LI0	string/b	WLPWM\000\000\000	Windows imaging (WIM) image, wimlib pipable format
1097b6cee71dSXin LI
1098b6cee71dSXin LI# The second byte of these signatures is a file version; I don't know what,
1099b6cee71dSXin LI# if anything, produced files with version numbers 0-2.
1100b6cee71dSXin LI# From: John Elliott <johne@seasip.demon.co.uk>
1101b6cee71dSXin LI0	string	\xfc\x03\x00	Mallard BASIC program data (v1.11)
1102b6cee71dSXin LI0	string	\xfc\x04\x00	Mallard BASIC program data (v1.29+)
1103b6cee71dSXin LI0	string	\xfc\x03\x01	Mallard BASIC protected program data (v1.11)
1104b6cee71dSXin LI0	string	\xfc\x04\x01	Mallard BASIC protected program data (v1.29+)
1105b6cee71dSXin LI
1106b6cee71dSXin LI0	string	MIOPEN		Mallard BASIC Jetsam data
1107b6cee71dSXin LI0	string	Jetsam0		Mallard BASIC Jetsam index data
1108b6cee71dSXin LI
1109