1b6cee71dSXin LI 2b6cee71dSXin LI#------------------------------------------------------------------------------ 3*58a0f0d0SEitan Adler# $File: msdos,v 1.121 2017/10/27 21:43:23 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 33140427ccaSGordon Tetlow# DOS device driver updated by Joerg Jenderek at May 2011,Mar 2017 33240427ccaSGordon Tetlow# https://amaus.net/static/S100/IBM/software/DOS/DOS%20techref/CHAPTER.009 33340427ccaSGordon Tetlow0 ulequad&0x07a0ffffffff 0xffffffff 33440427ccaSGordon Tetlow>0 use msdos-driver 33540427ccaSGordon Tetlow0 name msdos-driver DOS executable ( 33640427ccaSGordon Tetlow#!:mime application/octet-stream 33740427ccaSGordon Tetlow!:mime application/x-dosdriver 33840427ccaSGordon Tetlow# also found FreeDOS print driver SPOOL.DEV and disc compression driver STACLOAD.BIN 33940427ccaSGordon Tetlow!:ext sys/dev/bin 340b6cee71dSXin LI>40 search/7 UPX! \bUPX compressed 341b6cee71dSXin LI# DOS device driver attributes 342b6cee71dSXin LI>4 uleshort&0x8000 0x0000 \bblock device driver 343b6cee71dSXin LI# character device 344b6cee71dSXin LI>4 uleshort&0x8000 0x8000 \b 345b6cee71dSXin LI>>4 uleshort&0x0008 0x0008 \bclock 346b6cee71dSXin LI# fast video output by int 29h 347b6cee71dSXin LI>>4 uleshort&0x0010 0x0010 \bfast 348b6cee71dSXin LI# standard input/output device 349b6cee71dSXin LI>>4 uleshort&0x0003 >0 \bstandard 350b6cee71dSXin LI>>>4 uleshort&0x0001 0x0001 \binput 351b6cee71dSXin LI>>>4 uleshort&0x0003 0x0003 \b/ 352b6cee71dSXin LI>>>4 uleshort&0x0002 0x0002 \boutput 353b6cee71dSXin LI>>4 uleshort&0x8000 0x8000 \bcharacter device driver 354b6cee71dSXin LI>0 ubyte x 355b6cee71dSXin LI# upx compressed device driver has garbage instead of real in name field of header 356b6cee71dSXin LI>>40 search/7 UPX! 357b6cee71dSXin LI>>40 default x 358b6cee71dSXin LI# leading/trailing nulls, zeros or non ASCII characters in 8-byte name field at offset 10 are skipped 35940427ccaSGordon Tetlow>>>12 ubyte >0x2E \b 360b6cee71dSXin LI>>>>10 ubyte >0x20 361b6cee71dSXin LI>>>>>10 ubyte !0x2E 362b6cee71dSXin LI>>>>>>10 ubyte !0x2A \b%c 363b6cee71dSXin LI>>>>11 ubyte >0x20 364b6cee71dSXin LI>>>>>11 ubyte !0x2E \b%c 365b6cee71dSXin LI>>>>12 ubyte >0x20 366b6cee71dSXin LI>>>>>12 ubyte !0x39 367b6cee71dSXin LI>>>>>>12 ubyte !0x2E \b%c 368b6cee71dSXin LI>>>13 ubyte >0x20 369b6cee71dSXin LI>>>>13 ubyte !0x2E \b%c 370b6cee71dSXin LI>>>>14 ubyte >0x20 371b6cee71dSXin LI>>>>>14 ubyte !0x2E \b%c 372b6cee71dSXin LI>>>>15 ubyte >0x20 373b6cee71dSXin LI>>>>>15 ubyte !0x2E \b%c 374b6cee71dSXin LI>>>>16 ubyte >0x20 375b6cee71dSXin LI>>>>>16 ubyte !0x2E 376b6cee71dSXin LI>>>>>>16 ubyte <0xCB \b%c 377b6cee71dSXin LI>>>>17 ubyte >0x20 378b6cee71dSXin LI>>>>>17 ubyte !0x2E 379b6cee71dSXin LI>>>>>>17 ubyte <0x90 \b%c 380b6cee71dSXin LI# some character device drivers like ASPICD.SYS, btcdrom.sys and Cr_atapi.sys contain only spaces or points in name field 38140427ccaSGordon Tetlow>>>12 ubyte <0x2F 382b6cee71dSXin LI# they have their real name at offset 22 38340427ccaSGordon Tetlow# also block device drivers like DUMBDRV.SYS 38440427ccaSGordon Tetlow>>>>22 string >\056 %-.6s 385b6cee71dSXin LI>4 uleshort&0x8000 0x0000 386b6cee71dSXin LI# 32 bit sector addressing ( > 32 MB) for block devices 387b6cee71dSXin LI>>4 uleshort&0x0002 0x0002 \b,32-bit sector- 388b6cee71dSXin LI# support by driver functions 13h, 17h, 18h 389b6cee71dSXin LI>4 uleshort&0x0040 0x0040 \b,IOCTL- 390b6cee71dSXin LI# open, close, removable media support by driver functions 0Dh, 0Eh, 0Fh 391b6cee71dSXin LI>4 uleshort&0x0800 0x0800 \b,close media- 392b6cee71dSXin LI# output until busy support by int 10h for character device driver 393b6cee71dSXin LI>4 uleshort&0x8000 0x8000 394b6cee71dSXin LI>>4 uleshort&0x2000 0x2000 \b,until busy- 395b6cee71dSXin LI# direct read/write support by driver functions 03h,0Ch 396b6cee71dSXin LI>4 uleshort&0x4000 0x4000 \b,control strings- 397b6cee71dSXin LI>4 uleshort&0x8000 0x8000 398b6cee71dSXin LI>>4 uleshort&0x6840 >0 \bsupport 399b6cee71dSXin LI>4 uleshort&0x8000 0x0000 400b6cee71dSXin LI>>4 uleshort&0x4842 >0 \bsupport 401b6cee71dSXin LI>0 ubyte x \b) 402b6cee71dSXin LI# DOS driver cmd640x.sys has 0x12 instead of 0xffffffff for pointer field to next device header 40340427ccaSGordon Tetlow0 ulequad 0x0513c00000000012 40440427ccaSGordon Tetlow>0 use msdos-driver 40540427ccaSGordon Tetlow# DOS drivers DC2975.SYS, DUMBDRV.SYS, ECHO.SYS has also none 0xffffffff for pointer field 40640427ccaSGordon Tetlow0 ulequad 0x32f28000ffff0016 40740427ccaSGordon Tetlow>0 use msdos-driver 40840427ccaSGordon Tetlow0 ulequad 0x007f00000000ffff 40940427ccaSGordon Tetlow>0 use msdos-driver 41040427ccaSGordon Tetlow0 ulequad 0x001600000000ffff 41140427ccaSGordon Tetlow>0 use msdos-driver 41240427ccaSGordon Tetlow# DOS drivers LS120.SYS, MKELS120.SYS use reserved bits of attribute field 41340427ccaSGordon Tetlow0 ulequad 0x0bf708c2ffffffff 41440427ccaSGordon Tetlow>0 use msdos-driver 41540427ccaSGordon Tetlow0 ulequad 0x07bd08c2ffffffff 41640427ccaSGordon Tetlow>0 use msdos-driver 417b6cee71dSXin LI 4183e41d09dSXin LI# updated by Joerg Jenderek 4193e41d09dSXin LI# GRR: line below too general as it catches also 4203e41d09dSXin LI# rt.lib DYADISKS.PIC and many more 4213e41d09dSXin LI# start with assembler instruction MOV 4223e41d09dSXin LI0 ubyte 0x8c 4233e41d09dSXin LI# skip "AppleWorks word processor data" like ARTICLE.1 ./apple 4243e41d09dSXin LI>4 string !O==== 4253e41d09dSXin LI# skip some unknown basic binaries like RocketRnger.SHR 4263e41d09dSXin LI>>5 string !MAIN 4273e41d09dSXin LI# skip "GPG symmetrically encrypted data" ./gnu 4283e41d09dSXin LI# skip "PGP symmetric key encrypted data" ./pgp 4293e41d09dSXin LI# openpgpdefs.h: fourth byte < 14 indicate cipher algorithm type 4303e41d09dSXin LI>>>4 ubyte >13 DOS executable (COM, 0x8C-variant) 4313e41d09dSXin LI# the remaining files should be DOS *.COM executables 4323e41d09dSXin LI# dosshell.COM 8cc0 2ea35f07 e85211 e88a11 b80058 cd 4333e41d09dSXin LI# hmload.COM 8cc8 8ec0 bbc02b 89dc 83c30f c1eb04 b4 4343e41d09dSXin LI# UNDELETE.COM 8cca 2e8916 6503 b430 cd21 8b 2e0200 8b 4353e41d09dSXin LI# BOOTFIX.COM 8cca 2e8916 9603 b430 cd21 8b 2e0200 8b 4363e41d09dSXin LI# RAWRITE3.COM 8cca 2e8916 d602 b430 cd21 8b 2e0200 8b 4373e41d09dSXin LI# SHARE.COM 8cca 2e8916 d602 b430 cd21 8b 2e0200 8b 4383e41d09dSXin LI# validchr.COM 8cca 2e8916 9603 b430 cd21 8b 2e028b1e 4393e41d09dSXin LI# devload.COM 8cca 8916ad01 b430 cd21 8b2e0200 892e 4403e41d09dSXin LI!:mime application/x-dosexec 4413e41d09dSXin LI!:ext com 4423e41d09dSXin LI 443b6cee71dSXin LI# updated by Joerg Jenderek at Oct 2008 444b6cee71dSXin LI0 ulelong 0xffff10eb DR-DOS executable (COM) 445b6cee71dSXin LI# byte 0xeb conflicts with "sequent" magic leshort 0xn2eb 446b6cee71dSXin LI0 ubeshort&0xeb8d >0xeb00 447b6cee71dSXin LI# DR-DOS STACKER.COM SCREATE.SYS missed 448a5d223e6SXin LI 449a5d223e6SXin LI0 name msdos-com 450a5d223e6SXin LI>0 byte x DOS executable (COM) 451a5d223e6SXin LI>6 string SFX\ of\ LHarc \b, %s 452a5d223e6SXin LI>0x1FE leshort 0xAA55 \b, boot code 453a5d223e6SXin LI>85 string UPX \b, UPX compressed 454a5d223e6SXin LI>4 string \ $ARX \b, ARX self-extracting archive 455a5d223e6SXin LI>4 string \ $LHarc \b, LHarc self-extracting archive 456a5d223e6SXin LI>0x20e string SFX\ by\ LARC \b, LARC self-extracting archive 457a5d223e6SXin LI 458a5d223e6SXin LI# JMP 8bit 459a5d223e6SXin LI0 byte 0xeb 460a5d223e6SXin LI# allow forward jumps only 461a5d223e6SXin LI>1 byte >-1 462a5d223e6SXin LI# that offset must be accessible 463a5d223e6SXin LI>>(1.b+2) byte x 464a5d223e6SXin LI>>>0 use msdos-com 465a5d223e6SXin LI 466a5d223e6SXin LI# JMP 16bit 467a5d223e6SXin LI0 byte 0xe9 468a5d223e6SXin LI# forward jumps 469a5d223e6SXin LI>1 short >-1 470a5d223e6SXin LI# that offset must be accessible 471a5d223e6SXin LI>>(1.s+3) byte x 472a5d223e6SXin LI>>>0 use msdos-com 473a5d223e6SXin LI# negative offset, must not lead into PSP 474a5d223e6SXin LI>1 short <-259 475a5d223e6SXin LI# that offset must be accessible 476a5d223e6SXin LI>>(1,s+65539) byte x 477a5d223e6SXin LI>>>0 use msdos-com 478a5d223e6SXin LI 4793e41d09dSXin LI# updated by Joerg Jenderek at Oct 2008,2015 4803e41d09dSXin LI# following line is too general 4813e41d09dSXin LI0 ubyte 0xb8 4823e41d09dSXin LI# skip 2 linux kernels like memtest.bin with "\xb8\xc0\x07\x8e" in ./linux 4833e41d09dSXin LI>0 string !\xb8\xc0\x07\x8e 484b6cee71dSXin LI# modified by Joerg Jenderek 4853e41d09dSXin LI# syslinux COM32 or COM32R executable 4863e41d09dSXin LI>>1 lelong&0xFFFFFFFe 0x21CD4CFe COM executable (32-bit COMBOOT 4873e41d09dSXin LI# http://www.syslinux.org/wiki/index.php/Comboot_API 4883e41d09dSXin LI# Since version 5.00 c32 modules switched from the COM32 object format to ELF 4893e41d09dSXin LI!:mime application/x-c32-comboot-syslinux-exec 4903e41d09dSXin LI!:ext c32 491b6cee71dSXin LI# http://syslinux.zytor.com/comboot.php 4923e41d09dSXin LI# older syslinux version ( <4 ) 493b6cee71dSXin LI# (32-bit COMBOOT) programs *.C32 contain 32-bit code and run in flat-memory 32-bit protected mode 494b6cee71dSXin LI# start with assembler instructions mov eax,21cd4cffh 4953e41d09dSXin LI>>>1 lelong 0x21CD4CFf \b) 496b6cee71dSXin LI# syslinux:doc/comboot.txt 497b6cee71dSXin LI# A COM32R program must start with the byte sequence B8 FE 4C CD 21 (mov 498b6cee71dSXin LI# eax,21cd4cfeh) as a magic number. 4993e41d09dSXin LI# syslinux version (4.x) 5003e41d09dSXin LI# "COM executable (COM32R)" or "Syslinux COM32 module" by TrID 5013e41d09dSXin LI>>>1 lelong 0x21CD4CFe \b, relocatable) 5023e41d09dSXin LI# remaining are DOS COM executables starting with assembler instruction MOV 5033e41d09dSXin LI# like FreeDOS BANNER*.COM FINDDISK.COM GIF2RAW.COM WINCHK.COM 5043e41d09dSXin LI# MS-DOS SYS.COM RESTART.COM 5053e41d09dSXin LI# SYSLINUX.COM (version 1.40 - 2.13) 5063e41d09dSXin LI# GFXBOOT.COM (version 3.75) 5073e41d09dSXin LI# COPYBS.COM POWEROFF.COM INT18.COM 5083e41d09dSXin LI>>1 default x COM executable for DOS 5093e41d09dSXin LI!:mime application/x-dosexec 5103e41d09dSXin LI#!:mime application/x-ms-dos-executable 5113e41d09dSXin LI#!:mime application/x-msdos-program 5123e41d09dSXin LI!:ext com 5133e41d09dSXin LI 514b6cee71dSXin LI0 string/b \x81\xfc 515b6cee71dSXin LI>4 string \x77\x02\xcd\x20\xb9 516b6cee71dSXin LI>>36 string UPX! FREE-DOS executable (COM), UPX compressed 517b6cee71dSXin LI252 string Must\ have\ DOS\ version DR-DOS executable (COM) 518b6cee71dSXin LI# added by Joerg Jenderek at Oct 2008 519b6cee71dSXin LI# GRR search is not working 520b6cee71dSXin LI#34 search/2 UPX! FREE-DOS executable (COM), UPX compressed 521b6cee71dSXin LI34 string UPX! FREE-DOS executable (COM), UPX compressed 522b6cee71dSXin LI35 string UPX! FREE-DOS executable (COM), UPX compressed 523b6cee71dSXin LI# GRR search is not working 524b6cee71dSXin LI#2 search/28 \xcd\x21 COM executable for MS-DOS 525b6cee71dSXin LI#WHICHFAT.cOM 526b6cee71dSXin LI2 string \xcd\x21 COM executable for DOS 527b6cee71dSXin LI#DELTREE.cOM DELTREE2.cOM 528b6cee71dSXin LI4 string \xcd\x21 COM executable for DOS 529b6cee71dSXin LI#IFMEMDSK.cOM ASSIGN.cOM COMP.cOM 530b6cee71dSXin LI5 string \xcd\x21 COM executable for DOS 531b6cee71dSXin LI#DELTMP.COm HASFAT32.cOM 532b6cee71dSXin LI7 string \xcd\x21 533b6cee71dSXin LI>0 byte !0xb8 COM executable for DOS 534b6cee71dSXin LI#COMP.cOM MORE.COm 535b6cee71dSXin LI10 string \xcd\x21 536b6cee71dSXin LI>5 string !\xcd\x21 COM executable for DOS 537b6cee71dSXin LI#comecho.com 538b6cee71dSXin LI13 string \xcd\x21 COM executable for DOS 539b6cee71dSXin LI#HELP.COm EDIT.coM 540b6cee71dSXin LI18 string \xcd\x21 COM executable for MS-DOS 541b6cee71dSXin LI#NWRPLTRM.COm 542b6cee71dSXin LI23 string \xcd\x21 COM executable for MS-DOS 543b6cee71dSXin LI#LOADFIX.cOm LOADFIX.cOm 544b6cee71dSXin LI30 string \xcd\x21 COM executable for MS-DOS 545b6cee71dSXin LI#syslinux.com 3.11 546b6cee71dSXin LI70 string \xcd\x21 COM executable for DOS 547b6cee71dSXin LI# many compressed/converted COMs start with a copy loop instead of a jump 548b6cee71dSXin LI0x6 search/0xa \xfc\x57\xf3\xa5\xc3 COM executable for MS-DOS 549b6cee71dSXin LI0x6 search/0xa \xfc\x57\xf3\xa4\xc3 COM executable for DOS 550b6cee71dSXin LI>0x18 search/0x10 \x50\xa4\xff\xd5\x73 \b, aPack compressed 551b6cee71dSXin LI0x3c string W\ Collis\0\0 COM executable for MS-DOS, Compack compressed 552b6cee71dSXin LI# FIXME: missing diet .com compression 553b6cee71dSXin LI 554b6cee71dSXin LI# miscellaneous formats 555b6cee71dSXin LI0 string/b LZ MS-DOS executable (built-in) 556b6cee71dSXin LI#0 byte 0xf0 MS-DOS program library data 557b6cee71dSXin LI# 558b6cee71dSXin LI 559b6cee71dSXin LI# AAF files: 560b6cee71dSXin LI# <stuartc@rd.bbc.co.uk> Stuart Cunningham 561b6cee71dSXin 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 562b6cee71dSXin LI>30 byte 9 (512B sectors) 563b6cee71dSXin LI>30 byte 12 (4kB sectors) 564b6cee71dSXin 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 565b6cee71dSXin LI>30 byte 9 (512B sectors) 566b6cee71dSXin LI>30 byte 12 (4kB sectors) 567b6cee71dSXin LI 568b6cee71dSXin LI# Popular applications 569b6cee71dSXin LI2080 string Microsoft\ Word\ 6.0\ Document %s 570b6cee71dSXin LI!:mime application/msword 571b6cee71dSXin LI2080 string Documento\ Microsoft\ Word\ 6 Spanish Microsoft Word 6 document data 572b6cee71dSXin LI!:mime application/msword 573b6cee71dSXin LI# Pawel Wiecek <coven@i17linuxb.ists.pwr.wroc.pl> (for polish Word) 574b6cee71dSXin LI2112 string MSWordDoc Microsoft Word document data 575b6cee71dSXin LI!:mime application/msword 576b6cee71dSXin LI# 577b6cee71dSXin LI0 belong 0x31be0000 Microsoft Word Document 578b6cee71dSXin LI!:mime application/msword 579b6cee71dSXin LI# 580b6cee71dSXin LI0 string/b PO^Q` Microsoft Word 6.0 Document 581b6cee71dSXin LI!:mime application/msword 582b6cee71dSXin LI# 58340427ccaSGordon Tetlow4 long 0 58440427ccaSGordon Tetlow>0 belong 0xfe320000 Microsoft Word for Macintosh 1.0 585b6cee71dSXin LI!:mime application/msword 58640427ccaSGordon Tetlow!:ext mcw 58740427ccaSGordon Tetlow>0 belong 0xfe340000 Microsoft Word for Macintosh 3.0 588b6cee71dSXin LI!:mime application/msword 58940427ccaSGordon Tetlow!:ext mcw 59040427ccaSGordon Tetlow>0 belong 0xfe37001c Microsoft Word for Macintosh 4.0 59140427ccaSGordon Tetlow!:mime application/msword 59240427ccaSGordon Tetlow!:ext mcw 59340427ccaSGordon Tetlow>0 belong 0xfe370023 Microsoft Word for Macintosh 5.0 59440427ccaSGordon Tetlow!:mime application/msword 59540427ccaSGordon Tetlow!:ext mcw 59640427ccaSGordon Tetlow 59740427ccaSGordon Tetlow0 string/b \333\245-\0\0\0 Microsoft Word 2.0 Document 59840427ccaSGordon Tetlow!:mime application/msword 59940427ccaSGordon Tetlow!:ext doc 600*58a0f0d0SEitan Adler# Note: seems already recognized as "OLE 2 Compound Document" in ./ole2compounddocs 601*58a0f0d0SEitan Adler#512 string/b \354\245\301 Microsoft Word Document 602*58a0f0d0SEitan Adler#!:mime application/msword 603b6cee71dSXin LI 604b6cee71dSXin LI# 605b6cee71dSXin LI0 string/b \xDB\xA5\x2D\x00 Microsoft WinWord 2.0 Document 606b6cee71dSXin LI!:mime application/msword 607b6cee71dSXin LI# 608b6cee71dSXin LI2080 string Microsoft\ Excel\ 5.0\ Worksheet %s 609b6cee71dSXin LI!:mime application/vnd.ms-excel 610b6cee71dSXin LI# 611b6cee71dSXin LI0 string/b \xDB\xA5\x2D\x00 Microsoft WinWord 2.0 Document 612b6cee71dSXin LI!:mime application/msword 613b6cee71dSXin LI 614b6cee71dSXin LI2080 string Foglio\ di\ lavoro\ Microsoft\ Exce %s 615b6cee71dSXin LI!:mime application/vnd.ms-excel 616b6cee71dSXin LI# 617b6cee71dSXin LI# Pawel Wiecek <coven@i17linuxb.ists.pwr.wroc.pl> (for polish Excel) 618b6cee71dSXin LI2114 string Biff5 Microsoft Excel 5.0 Worksheet 619b6cee71dSXin LI!:mime application/vnd.ms-excel 620b6cee71dSXin LI# Italian MS-Excel 621b6cee71dSXin LI2121 string Biff5 Microsoft Excel 5.0 Worksheet 622b6cee71dSXin LI!:mime application/vnd.ms-excel 623b6cee71dSXin LI0 string/b \x09\x04\x06\x00\x00\x00\x10\x00 Microsoft Excel Worksheet 624b6cee71dSXin LI!:mime application/vnd.ms-excel 625b6cee71dSXin LI# 626a5d223e6SXin LI# Update: Joerg Jenderek 627a5d223e6SXin LI# URL: https://en.wikipedia.org/wiki/Lotus_1-2-3 628a5d223e6SXin LI# Reference: http://www.aboutvb.de/bas/formate/pdf/wk3.pdf 629a5d223e6SXin LI# Note: newer Lotus versions >2 use longer BOF record 630a5d223e6SXin LI# record type (BeginningOfFile=0000h) + length (001Ah) 631a5d223e6SXin LI0 belong 0x00001a00 632a5d223e6SXin LI# reserved should be 0h but 8c0dh for TUTMAC.WK3, 5h for SAMPADNS.WK3, 1h for a_readme.wk3, 1eh for K&G86.WK3 633a5d223e6SXin LI#>18 uleshort&0x73E0 0 634a5d223e6SXin LI# Lotus Multi Byte Character Set (LMBCS=1-31) 635a5d223e6SXin LI>20 ubyte >0 636a5d223e6SXin LI>>20 ubyte <32 Lotus 1-2-3 637a5d223e6SXin LI#!:mime application/x-123 638a5d223e6SXin LI!:mime application/vnd.lotus-1-2-3 639a5d223e6SXin LI!:apple ????L123 640a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 wk3 document data" 641a5d223e6SXin LI>>>4 uleshort 0x1000 WorKsheet, version 3 642a5d223e6SXin LI!:ext wk3 643a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 wk4 document data" 644a5d223e6SXin LI>>>4 uleshort 0x1002 WorKsheet, version 4 645a5d223e6SXin LI# also worksheet template 4 (.wt4) 646a5d223e6SXin LI!:ext wk4/wt4 647a5d223e6SXin LI# no example or documentation for wk5 648a5d223e6SXin LI#>>4 uleshort 0x???? WorKsheet, version 4 649a5d223e6SXin LI#!:ext wk5 650a5d223e6SXin LI# only MacrotoScript.123 example 651a5d223e6SXin LI>>>4 uleshort 0x1003 WorKsheet, version 97 652a5d223e6SXin LI# also worksheet template Smartmaster (.12M)? 653a5d223e6SXin LI!:ext 123 654a5d223e6SXin LI# only Set_Y2K.123 example 655a5d223e6SXin LI>>>4 uleshort 0x1005 WorKsheet, version 9.8 Millennium 656a5d223e6SXin LI!:ext 123 657a5d223e6SXin LI# no example for this version 658a5d223e6SXin LI>>>4 uleshort 0x8001 FoRMatting data 659a5d223e6SXin LI!:ext frm 660a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 fm3 or fmb document data" 661a5d223e6SXin LI# TrID labeles the entry as "Formatting Data for Lotus 1-2-3 worksheet" 662a5d223e6SXin LI>>>4 uleshort 0x8007 ForMatting data, version 3 663a5d223e6SXin LI!:ext fm3 664a5d223e6SXin LI>>>4 default x unknown 665a5d223e6SXin LI# file revision sub code 0004h for worksheets 666a5d223e6SXin LI>>>>6 uleshort =0x0004 worksheet 667a5d223e6SXin LI!:ext wXX 668a5d223e6SXin LI>>>>6 uleshort !0x0004 formatting data 669a5d223e6SXin LI!:ext fXX 670a5d223e6SXin LI# main revision number 671a5d223e6SXin LI>>>>4 uleshort x \b, revision 0x%x 672a5d223e6SXin LI>>>6 uleshort =0x0004 \b, cell range 673a5d223e6SXin LI# active cellcoord range (start row, page,column ; end row, page, column) 674a5d223e6SXin LI# start values normally 0~1st sheet A1 675a5d223e6SXin LI>>>>8 ulelong !0 676a5d223e6SXin LI>>>>>10 ubyte >0 \b%d* 677a5d223e6SXin LI>>>>>8 uleshort x \b%d, 678a5d223e6SXin LI>>>>>11 ubyte x \b%d- 679a5d223e6SXin LI# end page mostly 0 680a5d223e6SXin LI>>>>14 ubyte >0 \b%d* 681a5d223e6SXin LI# end raw, column normally not 0 682a5d223e6SXin LI>>>>12 uleshort x \b%d, 683a5d223e6SXin LI>>>>15 ubyte x \b%d 684a5d223e6SXin LI# Lotus Multi Byte Character Set (1~cp850,2~cp851,...,16~japan,...,31~??) 685a5d223e6SXin LI>>>>20 ubyte >1 \b, character set 0x%x 686a5d223e6SXin LI# flags 687a5d223e6SXin LI>>>>21 ubyte x \b, flags 0x%x 688a5d223e6SXin LI>>>6 uleshort !0x0004 689a5d223e6SXin LI# record type (FONTNAME=00AEh) 690a5d223e6SXin LI>>>>30 search/29 \0\xAE 691a5d223e6SXin LI# variable length m (2) + entries (1) + ?? (1) + LCMBS string (n) 692a5d223e6SXin LI>>>>>&4 string >\0 \b, 1st font "%s" 693b6cee71dSXin LI# 694a5d223e6SXin LI# Update: Joerg Jenderek 695a5d223e6SXin LI# URL: http://fileformats.archiveteam.org/wiki/Lotus_1-2-3 696a5d223e6SXin LI# Reference: http://www.schnarff.com/file-formats/lotus-1-2-3/WSFF2.TXT 697a5d223e6SXin LI# Note: Used by both old Lotus 1-2-3 and Lotus Symphony (DOS) til version 2.x 698a5d223e6SXin LI# record type (BeginningOfFile=0000h) + length (0002h) 699a5d223e6SXin LI0 belong 0x00000200 700a5d223e6SXin LI# GRR: line above is too general as it catches also MS Windows CURsor 701a5d223e6SXin LI# to display MS Windows cursor (strength=70) before Lotus 1-2-3 (strength=70-1) 702a5d223e6SXin LI!:strength -1 703a5d223e6SXin LI# skip Windows cursors with image height <256 and keep Lotus with low opcode 0001-0083h 704a5d223e6SXin LI>7 ubyte 0 705a5d223e6SXin LI# skip Windows cursors with image width 256 and keep Lotus with positiv opcode 706a5d223e6SXin LI>>6 ubyte >0 Lotus 707a5d223e6SXin LI# !:mime application/x-123 708a5d223e6SXin LI!:mime application/vnd.lotus-1-2-3 709a5d223e6SXin LI!:apple ????L123 710a5d223e6SXin LI# revision number (0404h = 123 1A, 0405h = Lotus Symphony , 0406h = 123 2.x wk1 , 8006h = fmt , ...) 711a5d223e6SXin LI# undocumented; (version 5.26) labeled the configurations as "Lotus 1-2-3" 712a5d223e6SXin LI>>>4 uleshort 0x0007 1-2-3 CoNFiguration, version 2.x (PGRAPH.CNF) 713a5d223e6SXin LI!:ext cnf 714a5d223e6SXin LI>>>4 uleshort 0x0C05 1-2-3 CoNFiguration, version 2.4J 715a5d223e6SXin LI!:ext cnf 716a5d223e6SXin LI>>>4 uleshort 0x0801 1-2-3 CoNFiguration, version 1-2.1 717a5d223e6SXin LI!:ext cnf 718a5d223e6SXin LI>>>4 uleshort 0x0802 Symphony CoNFiguration 719a5d223e6SXin LI!:ext cnf 720a5d223e6SXin LI>>>4 uleshort 0x0804 1-2-3 CoNFiguration, version 2.2 721a5d223e6SXin LI!:ext cnf 722a5d223e6SXin LI>>>4 uleshort 0x080A 1-2-3 CoNFiguration, version 2.3-2.4 723a5d223e6SXin LI!:ext cnf 724a5d223e6SXin LI>>>4 uleshort 0x1402 1-2-3 CoNFiguration, version 3.x 725a5d223e6SXin LI!:ext cnf 726a5d223e6SXin LI>>>4 uleshort 0x1450 1-2-3 CoNFiguration, version 4.x 727a5d223e6SXin LI!:ext cnf 728a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 123" 729a5d223e6SXin LI# TrID labeles the entry as "Lotus 123 Worksheet (generic)" 730a5d223e6SXin LI>>>4 uleshort 0x0404 1-2-3 WorKSheet, version 1 731a5d223e6SXin LI# extension "wks" also for Microsoft Works document 732a5d223e6SXin LI!:ext wks 733a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 123" 734a5d223e6SXin LI# TrID labeles the entry as "Lotus 123 Worksheet (generic)" 735a5d223e6SXin LI>>>4 uleshort 0x0405 Symphony WoRksheet, version 1.0 736a5d223e6SXin LI!:ext wrk/wr1 737a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 wk1 document data" 738a5d223e6SXin LI# TrID labeles the entry as "Lotus 123 Worksheet (V2)" 739a5d223e6SXin LI>>>4 uleshort 0x0406 1-2-3/Symphony worksheet, version 2 740a5d223e6SXin LI# Symphony (.wr1) 741a5d223e6SXin LI!:ext wk1/wr1 742a5d223e6SXin LI# no example for this japan version 743a5d223e6SXin LI>>>4 uleshort 0x0600 1-2-3 WorKsheet, version 1.xJ 744a5d223e6SXin LI!:ext wj1 745a5d223e6SXin LI# no example or documentation for wk2 746a5d223e6SXin LI#>>>4 uleshort 0x???? 1-2-3 WorKsheet, version 2 747a5d223e6SXin LI#!:ext wk2 748a5d223e6SXin LI# undocumented japan version 749a5d223e6SXin LI>>>4 uleshort 0x0602 1-2-3 worksheet, version 2.4J 750a5d223e6SXin LI!:ext wj3 751a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3 fmt document data" 752a5d223e6SXin LI>>>4 uleshort 0x8006 1-2-3 ForMaTting data, version 2.x 753a5d223e6SXin LI# japan version 2.4J (fj3) 754a5d223e6SXin LI!:ext fmt/fj3 755a5d223e6SXin LI# no example for this version 756a5d223e6SXin LI>>>4 uleshort 0x8007 1-2-3 FoRMatting data, version 2.0 757a5d223e6SXin LI!:ext frm 758a5d223e6SXin LI# (version 5.26) labeled the entry as "Lotus 1-2-3" 759a5d223e6SXin LI>>>4 default x unknown worksheet or configuration 760a5d223e6SXin LI!:ext cnf 761a5d223e6SXin LI>>>>4 uleshort x \b, revision 0x%x 762a5d223e6SXin LI# 2nd record for most worksheets describes cells range 763a5d223e6SXin LI>>>6 use lotus-cells 764a5d223e6SXin LI# 3nd record for most japan worksheets describes cells range 765a5d223e6SXin LI>>>(8.s+10) use lotus-cells 766a5d223e6SXin LI# check and then display Lotus worksheet cells range 767a5d223e6SXin LI0 name lotus-cells 768a5d223e6SXin LI# look for type (RANGE=0006h) + length (0008h) at record begin 769a5d223e6SXin LI>0 ubelong 0x06000800 \b, cell range 770a5d223e6SXin LI# cell range (start column, row, end column, row) start values normally 0,0~A1 cell 771a5d223e6SXin LI>>4 ulong !0 772a5d223e6SXin LI>>>4 uleshort x \b%d, 773a5d223e6SXin LI>>>6 uleshort x \b%d- 774a5d223e6SXin LI# end of cell range 775a5d223e6SXin LI>>8 uleshort x \b%d, 776a5d223e6SXin LI>>10 uleshort x \b%d 777a5d223e6SXin LI# EndOfLotus123 778b6cee71dSXin LI0 string/b WordPro\0 Lotus WordPro 779b6cee71dSXin LI!:mime application/vnd.lotus-wordpro 780b6cee71dSXin LI0 string/b WordPro\r\373 Lotus WordPro 781b6cee71dSXin LI!:mime application/vnd.lotus-wordpro 782b6cee71dSXin LI 783b6cee71dSXin LI 784b6cee71dSXin LI# Summary: Script used by InstallScield to uninstall applications 785b6cee71dSXin LI# Extension: .isu 786b6cee71dSXin LI# Submitted by: unknown 787b6cee71dSXin LI# Modified by (1): Abel Cheung <abelcheung@gmail.com> (replace useless entry) 788b6cee71dSXin LI0 string \x71\xa8\x00\x00\x01\x02 789b6cee71dSXin LI>12 string Stirling\ Technologies, InstallShield Uninstall Script 790b6cee71dSXin LI 791b6cee71dSXin LI# Winamp .avs 792b6cee71dSXin LI#0 string Nullsoft\ AVS\ Preset\ \060\056\061\032 A plug in for Winamp ms-windows Freeware media player 793b6cee71dSXin LI0 string/b Nullsoft\ AVS\ Preset\ Winamp plug in 794b6cee71dSXin LI 795b6cee71dSXin LI# Windows Metafont .WMF 796b6cee71dSXin LI0 string/b \327\315\306\232 ms-windows metafont .wmf 797b6cee71dSXin LI0 string/b \002\000\011\000 ms-windows metafont .wmf 798b6cee71dSXin LI0 string/b \001\000\011\000 ms-windows metafont .wmf 799b6cee71dSXin LI 800b6cee71dSXin LI#tz3 files whatever that is (MS Works files) 801b6cee71dSXin LI0 string/b \003\001\001\004\070\001\000\000 tz3 ms-works file 802b6cee71dSXin LI0 string/b \003\002\001\004\070\001\000\000 tz3 ms-works file 803b6cee71dSXin LI0 string/b \003\003\001\004\070\001\000\000 tz3 ms-works file 804b6cee71dSXin LI 805b6cee71dSXin LI# PGP sig files .sig 806b6cee71dSXin 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 807b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\065\027\266\151\064\005\045\101\233\021\002 PGP sig 808b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\066\027\266\151\064\005\045\101\233\021\002 PGP sig 809b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\067\027\266\151\064\005\045\101\233\021\002 PGP sig 810b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\070\027\266\151\064\005\045\101\233\021\002 PGP sig 811b6cee71dSXin LI0 string \211\000\077\003\005\000\063\237\127\071\027\266\151\064\005\045\101\233\021\002 PGP sig 812b6cee71dSXin LI0 string \211\000\225\003\005\000\062\122\207\304\100\345\042 PGP sig 813b6cee71dSXin LI 814b6cee71dSXin LI# windows zips files .dmf 815b6cee71dSXin 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 816b6cee71dSXin LI 817b6cee71dSXin LI 818b6cee71dSXin LI#ico files 819b6cee71dSXin LI0 string/b \102\101\050\000\000\000\056\000\000\000\000\000\000\000 Icon for MS Windows 820b6cee71dSXin LI 821b6cee71dSXin LI# Windows icons 822282e23f0SXin LI# Update: Joerg Jenderek 823282e23f0SXin LI# URL: https://en.wikipedia.org/wiki/CUR_(file_format) 82440427ccaSGordon Tetlow# Note: similar to Windows CURsor. container for BMP (only DIB part) or PNG 825b6cee71dSXin LI0 belong 0x00000100 826b6cee71dSXin LI>9 byte 0 827282e23f0SXin LI>>0 byte x 828282e23f0SXin LI>>0 use cur-ico-dir 829b6cee71dSXin LI>9 ubyte 0xff 830282e23f0SXin LI>>0 byte x 831282e23f0SXin LI>>0 use cur-ico-dir 832282e23f0SXin LI# displays number of icons and information for icon or cursor 833282e23f0SXin LI0 name cur-ico-dir 834282e23f0SXin LI# skip some Lotus 1-2-3 worksheets, CYCLE.PIC and keep Windows cursors with 835282e23f0SXin LI# 1st data offset = dir header size + n * dir entry size = 6 + n * 10h = ?6h 836282e23f0SXin LI>18 ulelong &0x00000006 837282e23f0SXin LI# skip remaining worksheets, because valid only for DIB image (40) or PNG image (\x89PNG) 838282e23f0SXin LI>>(18.l) ulelong x MS Windows 839282e23f0SXin LI>>>0 ubelong 0x00000100 icon resource 840282e23f0SXin LI#!:mime image/vnd.microsoft.icon 841b6cee71dSXin LI!:mime image/x-icon 842282e23f0SXin LI!:ext ico 843282e23f0SXin LI>>>>4 uleshort x - %d icon 844282e23f0SXin LI# plural s 845282e23f0SXin LI>>>>4 uleshort >1 \bs 846282e23f0SXin LI# 1st icon 847282e23f0SXin LI>>>>0x06 use ico-entry 848282e23f0SXin LI# 2nd icon 849282e23f0SXin LI>>>>4 uleshort >1 850282e23f0SXin LI>>>>>0x16 use ico-entry 851282e23f0SXin LI>>>0 ubelong 0x00000200 cursor resource 852282e23f0SXin LI#!:mime image/x-cur 853282e23f0SXin LI!:mime image/x-win-bitmap 854282e23f0SXin LI!:ext cur 855282e23f0SXin LI>>>>4 uleshort x - %d icon 856282e23f0SXin LI>>>>4 uleshort >1 \bs 857282e23f0SXin LI# 1st cursor 858282e23f0SXin LI>>>>0x06 use cur-entry 859282e23f0SXin LI#>>>>0x16 use cur-entry 860282e23f0SXin LI# display information of one cursor entry 861282e23f0SXin LI0 name cur-entry 862282e23f0SXin LI>0 use cur-ico-entry 863282e23f0SXin LI>4 uleshort x \b, hotspot @%dx 864282e23f0SXin LI>6 uleshort x \b%d 865282e23f0SXin LI# display information of one icon entry 866282e23f0SXin LI0 name ico-entry 867282e23f0SXin LI>0 use cur-ico-entry 868282e23f0SXin LI# normally 0 1 but also found 14 869282e23f0SXin LI>4 uleshort >1 \b, %d planes 870282e23f0SXin LI# normally 0 1 but also found some 3, 4, some 6, 8, 24, many 32, two 256 871282e23f0SXin LI>6 uleshort >1 \b, %d bits/pixel 872282e23f0SXin LI# display shared information of cursor or icon entry 873282e23f0SXin LI0 name cur-ico-entry 874282e23f0SXin LI>0 byte =0 \b, 256x 875282e23f0SXin LI>0 byte !0 \b, %dx 876282e23f0SXin LI>1 byte =0 \b256 877282e23f0SXin LI>1 byte !0 \b%d 878282e23f0SXin LI# number of colors in palette 879282e23f0SXin LI>2 ubyte !0 \b, %d colors 880282e23f0SXin LI# reserved 0 FFh 881282e23f0SXin LI#>3 ubyte x \b, reserved %x 882282e23f0SXin LI#>8 ulelong x \b, image size %d 883282e23f0SXin LI# offset of PNG or DIB image 884282e23f0SXin LI#>12 ulelong x \b, offset 0x%x 885282e23f0SXin LI# PNG header (\x89PNG) 886282e23f0SXin LI>(12.l) ubelong =0x89504e47 887282e23f0SXin LI>>&-4 indirect x \b with 888282e23f0SXin LI# DIB image 889282e23f0SXin LI>(12.l) ubelong !0x89504e47 890282e23f0SXin LI#>>&-4 use dib-image 891b6cee71dSXin LI 892b6cee71dSXin LI# Windows non-animated cursors 893282e23f0SXin LI# Update: Joerg Jenderek 894282e23f0SXin LI# URL: https://en.wikipedia.org/wiki/CUR_(file_format) 89540427ccaSGordon Tetlow# Note: similar to Windows ICOn. container for BMP ( only DIB part) 896282e23f0SXin LI# GRR: line below is too general as it catches also Lotus 1-2-3 files 897b6cee71dSXin LI0 belong 0x00000200 898b6cee71dSXin LI>9 byte 0 899282e23f0SXin LI>>0 use cur-ico-dir 900b6cee71dSXin LI>9 ubyte 0xff 901282e23f0SXin LI>>0 use cur-ico-dir 902b6cee71dSXin LI 903b6cee71dSXin LI# .chr files 904b6cee71dSXin LI0 string/b PK\010\010BGI Borland font 905b6cee71dSXin LI>4 string >\0 %s 906b6cee71dSXin LI# then there is a copyright notice 907b6cee71dSXin LI 908b6cee71dSXin LI 909b6cee71dSXin LI# .bgi files 910b6cee71dSXin LI0 string/b pk\010\010BGI Borland device 911b6cee71dSXin LI>4 string >\0 %s 912b6cee71dSXin LI# then there is a copyright notice 913b6cee71dSXin LI 914b6cee71dSXin LI 915b6cee71dSXin LI# Windows Recycle Bin record file (named INFO2) 916b6cee71dSXin LI# By Abel Cheung (abelcheung AT gmail dot com) 917b6cee71dSXin LI# Version 4 always has 280 bytes (0x118) per record, version 5 has 800 bytes 918b6cee71dSXin LI# Since Vista uses another structure, INFO2 structure probably won't change 919b6cee71dSXin LI# anymore. Detailed analysis in: 920b6cee71dSXin LI# http://www.cybersecurityinstitute.biz/downloads/INFO2.pdf 921b6cee71dSXin LI0 lelong 0x00000004 922b6cee71dSXin LI>12 lelong 0x00000118 Windows Recycle Bin INFO2 file (Win98 or below) 923b6cee71dSXin LI 924b6cee71dSXin LI0 lelong 0x00000005 925b6cee71dSXin LI>12 lelong 0x00000320 Windows Recycle Bin INFO2 file (Win2k - WinXP) 926b6cee71dSXin LI 927b6cee71dSXin LI# From Doug Lee via a FreeBSD pr 928b6cee71dSXin LI9 string GERBILDOC First Choice document 929b6cee71dSXin LI9 string GERBILDB First Choice database 930b6cee71dSXin LI9 string GERBILCLIP First Choice database 931b6cee71dSXin LI0 string GERBIL First Choice device file 932b6cee71dSXin LI9 string RABBITGRAPH RabbitGraph file 933b6cee71dSXin LI0 string DCU1 Borland Delphi .DCU file 934b6cee71dSXin LI0 string =!<spell> MKS Spell hash list (old format) 935b6cee71dSXin LI0 string =!<spell2> MKS Spell hash list 936b6cee71dSXin LI# Too simple - MPi 937b6cee71dSXin LI#0 string AH Halo(TM) bitmapped font file 938b6cee71dSXin LI0 lelong 0x08086b70 TurboC BGI file 939b6cee71dSXin LI0 lelong 0x08084b50 TurboC Font file 940b6cee71dSXin LI 941b6cee71dSXin LI# Debian#712046: The magic below identifies "Delphi compiled form data". 942b6cee71dSXin LI# An additional source of information is available at: 943b6cee71dSXin LI# http://www.woodmann.com/fravia/dafix_t1.htm 944b6cee71dSXin LI0 string TPF0 945b6cee71dSXin LI>4 pstring >\0 Delphi compiled form '%s' 946b6cee71dSXin LI 947b6cee71dSXin LI# tests for DBase files moved, updated and merged to database 948b6cee71dSXin LI 949b6cee71dSXin LI0 string PMCC Windows 3.x .GRP file 950b6cee71dSXin LI1 string RDC-meg MegaDots 951b6cee71dSXin LI>8 byte >0x2F version %c 952b6cee71dSXin LI>9 byte >0x2F \b.%c file 953b6cee71dSXin LI0 lelong 0x4C 954b6cee71dSXin LI>4 lelong 0x00021401 Windows shortcut file 955b6cee71dSXin LI 956b6cee71dSXin LI# .PIF files added by Joerg Jenderek from http://smsoft.ru/en/pifdoc.htm 957b6cee71dSXin LI# only for windows versions equal or greater 3.0 958b6cee71dSXin LI0x171 string MICROSOFT\ PIFEX\0 Windows Program Information File 959b6cee71dSXin LI!:mime application/x-dosexec 960b6cee71dSXin LI#>2 string >\0 \b, Title:%.30s 961b6cee71dSXin LI>0x24 string >\0 \b for %.63s 962b6cee71dSXin LI>0x65 string >\0 \b, directory=%.64s 963b6cee71dSXin LI>0xA5 string >\0 \b, parameters=%.64s 964b6cee71dSXin LI#>0x181 leshort x \b, offset %x 965b6cee71dSXin LI#>0x183 leshort x \b, offsetdata %x 966b6cee71dSXin LI#>0x185 leshort x \b, section length %x 967b6cee71dSXin LI>0x187 search/0xB55 WINDOWS\ VMM\ 4.0\0 968b6cee71dSXin LI>>&0x5e ubyte >0 969b6cee71dSXin LI>>>&-1 string <PIFMGR.DLL \b, icon=%s 970b6cee71dSXin LI#>>>&-1 string PIFMGR.DLL \b, icon=%s 971b6cee71dSXin LI>>>&-1 string >PIFMGR.DLL \b, icon=%s 972b6cee71dSXin LI>>&0xF0 ubyte >0 973b6cee71dSXin LI>>>&-1 string <Terminal \b, font=%.32s 974b6cee71dSXin LI#>>>&-1 string =Terminal \b, font=%.32s 975b6cee71dSXin LI>>>&-1 string >Terminal \b, font=%.32s 976b6cee71dSXin LI>>&0x110 ubyte >0 977b6cee71dSXin LI>>>&-1 string <Lucida\ Console \b, TrueTypeFont=%.32s 978b6cee71dSXin LI#>>>&-1 string =Lucida\ Console \b, TrueTypeFont=%.32s 979b6cee71dSXin LI>>>&-1 string >Lucida\ Console \b, TrueTypeFont=%.32s 980b6cee71dSXin LI#>0x187 search/0xB55 WINDOWS\ 286\ 3.0\0 \b, Windows 3.X standard mode-style 981b6cee71dSXin LI#>0x187 search/0xB55 WINDOWS\ 386\ 3.0\0 \b, Windows 3.X enhanced mode-style 982b6cee71dSXin LI>0x187 search/0xB55 WINDOWS\ NT\ \ 3.1\0 \b, Windows NT-style 983b6cee71dSXin LI#>0x187 search/0xB55 WINDOWS\ NT\ \ 4.0\0 \b, Windows NT-style 984b6cee71dSXin LI>0x187 search/0xB55 CONFIG\ \ SYS\ 4.0\0 \b +CONFIG.SYS 985b6cee71dSXin LI#>>&06 string x \b:%s 986b6cee71dSXin LI>0x187 search/0xB55 AUTOEXECBAT\ 4.0\0 \b +AUTOEXEC.BAT 987b6cee71dSXin LI#>>&06 string x \b:%s 988b6cee71dSXin LI 989b6cee71dSXin LI# DOS EPS Binary File Header 990b6cee71dSXin LI# From: Ed Sznyter <ews@Black.Market.NET> 991b6cee71dSXin LI0 belong 0xC5D0D3C6 DOS EPS Binary File 99240427ccaSGordon Tetlow!:mime image/x-eps 993b6cee71dSXin LI>4 long >0 Postscript starts at byte %d 994b6cee71dSXin LI>>8 long >0 length %d 995b6cee71dSXin LI>>>12 long >0 Metafile starts at byte %d 996b6cee71dSXin LI>>>>16 long >0 length %d 997b6cee71dSXin LI>>>20 long >0 TIFF starts at byte %d 998b6cee71dSXin LI>>>>24 long >0 length %d 999b6cee71dSXin LI 1000b6cee71dSXin LI# TNEF magic From "Joomy" <joomy@se-ed.net> 1001b6cee71dSXin LI# Microsoft Outlook's Transport Neutral Encapsulation Format (TNEF) 100240427ccaSGordon Tetlow0 lelong 0x223e9f78 TNEF 1003b6cee71dSXin LI!:mime application/vnd.ms-tnef 1004b6cee71dSXin LI 1005b6cee71dSXin LI# Norton Guide (.NG , .HLP) files added by Joerg Jenderek from source NG2HTML.C 1006b6cee71dSXin LI# of http://www.davep.org/norton-guides/ng2h-105.tgz 1007b6cee71dSXin LI# http://en.wikipedia.org/wiki/Norton_Guides 1008b6cee71dSXin LI0 string NG\0\001 1009b6cee71dSXin LI# only value 0x100 found at offset 2 1010b6cee71dSXin LI>2 ulelong 0x00000100 Norton Guide 1011b6cee71dSXin LI# Title[40] 1012b6cee71dSXin LI>>8 string >\0 "%-.40s" 1013b6cee71dSXin LI#>>6 uleshort x \b, MenuCount=%u 1014b6cee71dSXin LI# szCredits[5][66] 1015b6cee71dSXin LI>>48 string >\0 \b, %-.66s 1016b6cee71dSXin LI>>114 string >\0 %-.66s 1017b6cee71dSXin LI 1018b6cee71dSXin LI# 4DOS help (.HLP) files added by Joerg Jenderek from source TPHELP.PAS 1019b6cee71dSXin LI# of http://www.4dos.info/ 1020b6cee71dSXin LI# pointer,HelpID[8]=4DHnnnmm 1021b6cee71dSXin LI0 ulelong 0x48443408 4DOS help file 1022b6cee71dSXin LI>4 string x \b, version %-4.4s 1023b6cee71dSXin LI 1024b6cee71dSXin LI# old binary Microsoft (.HLP) files added by Joerg Jenderek from http://file-extension.net/seeker/file_extension_hlp 1025b6cee71dSXin LI0 ulequad 0x3a000000024e4c MS Advisor help file 1026b6cee71dSXin LI 1027b6cee71dSXin LI# HtmlHelp files (.chm) 10289ce06829SXin LI0 string/b ITSF\003\000\000\000\x60\000\000\000 MS Windows HtmlHelp Data 1029b6cee71dSXin LI 1030b6cee71dSXin LI# GFA-BASIC (Wolfram Kleff) 1031b6cee71dSXin LI2 string/b GFA-BASIC3 GFA-BASIC 3 data 1032b6cee71dSXin LI 1033b6cee71dSXin LI#------------------------------------------------------------------------------ 1034b6cee71dSXin LI# From Stuart Caie <kyzer@4u.net> (developer of cabextract) 1035b6cee71dSXin LI# Microsoft Cabinet files 1036b6cee71dSXin LI0 string/b MSCF\0\0\0\0 Microsoft Cabinet archive data 1037b6cee71dSXin LI!:mime application/vnd.ms-cab-compressed 1038b6cee71dSXin LI>8 lelong x \b, %u bytes 1039b6cee71dSXin LI>28 leshort 1 \b, 1 file 1040b6cee71dSXin LI>28 leshort >1 \b, %u files 1041b6cee71dSXin LI 1042b6cee71dSXin LI# InstallShield Cabinet files 1043b6cee71dSXin LI0 string/b ISc( InstallShield Cabinet archive data 1044b6cee71dSXin LI>5 byte&0xf0 =0x60 version 6, 1045b6cee71dSXin LI>5 byte&0xf0 !0x60 version 4/5, 1046b6cee71dSXin LI>(12.l+40) lelong x %u files 1047b6cee71dSXin LI 1048b6cee71dSXin LI# Windows CE package files 1049b6cee71dSXin LI0 string/b MSCE\0\0\0\0 Microsoft WinCE install header 1050b6cee71dSXin LI>20 lelong 0 \b, architecture-independent 1051b6cee71dSXin LI>20 lelong 103 \b, Hitachi SH3 1052b6cee71dSXin LI>20 lelong 104 \b, Hitachi SH4 1053b6cee71dSXin LI>20 lelong 0xA11 \b, StrongARM 1054b6cee71dSXin LI>20 lelong 4000 \b, MIPS R4000 1055b6cee71dSXin LI>20 lelong 10003 \b, Hitachi SH3 1056b6cee71dSXin LI>20 lelong 10004 \b, Hitachi SH3E 1057b6cee71dSXin LI>20 lelong 10005 \b, Hitachi SH4 1058b6cee71dSXin LI>20 lelong 70001 \b, ARM 7TDMI 1059b6cee71dSXin LI>52 leshort 1 \b, 1 file 1060b6cee71dSXin LI>52 leshort >1 \b, %u files 1061b6cee71dSXin LI>56 leshort 1 \b, 1 registry entry 1062b6cee71dSXin LI>56 leshort >1 \b, %u registry entries 1063b6cee71dSXin LI 1064b6cee71dSXin LI 1065b6cee71dSXin LI# Windows Enhanced Metafile (EMF) 1066b6cee71dSXin LI# See msdn.microsoft.com/archive/en-us/dnargdi/html/msdn_enhmeta.asp 1067b6cee71dSXin LI# for further information. 1068b6cee71dSXin LI0 ulelong 1 1069b6cee71dSXin LI>40 string \ EMF Windows Enhanced Metafile (EMF) image data 1070b6cee71dSXin LI>>44 ulelong x version 0x%x 1071b6cee71dSXin LI 1072b6cee71dSXin LI 1073b6cee71dSXin LI0 string/b \224\246\056 Microsoft Word Document 1074b6cee71dSXin LI!:mime application/msword 1075b6cee71dSXin LI 1076b6cee71dSXin LI512 string R\0o\0o\0t\0\ \0E\0n\0t\0r\0y Microsoft Word Document 1077b6cee71dSXin LI!:mime application/msword 1078b6cee71dSXin LI 1079b6cee71dSXin LI# From: "Nelson A. de Oliveira" <naoliv@gmail.com> 1080b6cee71dSXin LI# Magic type for Dell's BIOS .hdr files 1081b6cee71dSXin LI# Dell's .hdr 1082b6cee71dSXin LI0 string/b $RBU 1083b6cee71dSXin LI>23 string Dell %s system BIOS 1084b6cee71dSXin LI>5 byte 2 1085b6cee71dSXin LI>>48 byte x version %d. 1086b6cee71dSXin LI>>49 byte x \b%d. 1087b6cee71dSXin LI>>50 byte x \b%d 1088b6cee71dSXin LI>5 byte <2 1089b6cee71dSXin LI>>48 string x version %.3s 1090b6cee71dSXin LI 1091b6cee71dSXin LI# Type: Microsoft DirectDraw Surface 1092b6cee71dSXin LI# URL: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp 1093b6cee71dSXin LI# From: Morten Hustveit <morten@debian.org> 1094b6cee71dSXin LI0 string/b DDS\040\174\000\000\000 Microsoft DirectDraw Surface (DDS), 1095b6cee71dSXin LI>16 lelong >0 %d x 1096b6cee71dSXin LI>12 lelong >0 %d, 1097b6cee71dSXin LI>84 string x %.4s 1098b6cee71dSXin LI 1099b6cee71dSXin LI# Type: Microsoft Document Imaging Format (.mdi) 1100b6cee71dSXin LI# URL: http://en.wikipedia.org/wiki/Microsoft_Document_Imaging_Format 1101b6cee71dSXin LI# From: Daniele Sempione <scrows@oziosi.org> 1102a5d223e6SXin LI# Too weak (EP) 1103a5d223e6SXin LI#0 short 0x5045 Microsoft Document Imaging Format 1104b6cee71dSXin LI 1105b6cee71dSXin LI# MS eBook format (.lit) 1106b6cee71dSXin LI0 string/b ITOLITLS Microsoft Reader eBook Data 1107b6cee71dSXin LI>8 lelong x \b, version %u 1108b6cee71dSXin LI!:mime application/x-ms-reader 1109b6cee71dSXin LI 1110b6cee71dSXin LI# Windows CE Binary Image Data Format 1111b6cee71dSXin LI# From: Dr. Jesus <j@hug.gs> 1112b6cee71dSXin LI0 string/b B000FF\n Windows Embedded CE binary image 1113b6cee71dSXin LI 1114b6cee71dSXin LI# Windows Imaging (WIM) Image 1115b6cee71dSXin LI0 string/b MSWIM\000\000\000 Windows imaging (WIM) image 11163e41d09dSXin LI0 string/b WLPWM\000\000\000 Windows imaging (WIM) image, wimlib pipable format 1117b6cee71dSXin LI 1118b6cee71dSXin LI# The second byte of these signatures is a file version; I don't know what, 1119b6cee71dSXin LI# if anything, produced files with version numbers 0-2. 1120b6cee71dSXin LI# From: John Elliott <johne@seasip.demon.co.uk> 1121b6cee71dSXin LI0 string \xfc\x03\x00 Mallard BASIC program data (v1.11) 1122b6cee71dSXin LI0 string \xfc\x04\x00 Mallard BASIC program data (v1.29+) 1123b6cee71dSXin LI0 string \xfc\x03\x01 Mallard BASIC protected program data (v1.11) 1124b6cee71dSXin LI0 string \xfc\x04\x01 Mallard BASIC protected program data (v1.29+) 1125b6cee71dSXin LI 1126b6cee71dSXin LI0 string MIOPEN Mallard BASIC Jetsam data 1127b6cee71dSXin LI0 string Jetsam0 Mallard BASIC Jetsam index data 1128b6cee71dSXin LI 112940427ccaSGordon Tetlow# DOS backup 2.0 to 3.2 113040427ccaSGordon Tetlow 113140427ccaSGordon Tetlow# backupid.@@@ 113240427ccaSGordon Tetlow 113340427ccaSGordon Tetlow# plausibility check for date 113440427ccaSGordon Tetlow0x3 ushort >1979 113540427ccaSGordon Tetlow>0x5 ubyte-1 <31 113640427ccaSGordon Tetlow>>0x6 ubyte-1 <12 113740427ccaSGordon Tetlow# actually 121 nul bytes 113840427ccaSGordon Tetlow>>>0x7 string \0\0\0\0\0\0\0\0 113940427ccaSGordon Tetlow>>>>0x1 ubyte x DOS 2.0 backup id file, sequence %d 114040427ccaSGordon Tetlow!:ext @@@ 114140427ccaSGordon Tetlow>>>>0x0 ubyte 0xff \b, last disk 114240427ccaSGordon Tetlow 114340427ccaSGordon Tetlow# backed up file 114440427ccaSGordon Tetlow 114540427ccaSGordon Tetlow# skip some AppleWorks word like Tomahawk.Awp, WIN98SE-DE.vhd 114640427ccaSGordon Tetlow# by looking for trailing nul of maximal file name string 114740427ccaSGordon Tetlow0x52 ubyte 0 114840427ccaSGordon Tetlow# test for flag byte: FFh~complete file, 00h~split file 114940427ccaSGordon Tetlow# FFh -127 = -1 -127 = -128 115040427ccaSGordon Tetlow# 00h -127 = 0 -127 = -127 115140427ccaSGordon Tetlow>0 byte-127 <-126 115240427ccaSGordon Tetlow# plausibility check for file name length 115340427ccaSGordon Tetlow>>0x53 ubyte-1 <78 115440427ccaSGordon Tetlow# looking for terminating nul of file name string 115540427ccaSGordon Tetlow>>>(0x53.b+4) ubyte 0 115640427ccaSGordon Tetlow# looking if last char of string is valid DOS file name 115740427ccaSGordon Tetlow>>>>(0x53.b+3) ubyte >0x1F 115840427ccaSGordon Tetlow# actually 44 nul bytes 115940427ccaSGordon Tetlow# but sometimes garbage according to Ralf Quint. So can not be used as test 116040427ccaSGordon Tetlow#>0x54 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 116140427ccaSGordon Tetlow# first char of full file name is DOS (5Ch) or UNIX (2Fh) path separator 116240427ccaSGordon Tetlow# only DOS variant found. UNIX variant according to V32SLASH.TXT in archive PD0315.EXE 116340427ccaSGordon Tetlow>>>>>5 ubyte&0x8C 0x0C 116440427ccaSGordon Tetlow# ./msdos (version 5.30) labeled the entry as 116540427ccaSGordon Tetlow# "DOS 2.0 backed up file %s, split file, sequence %d" or 116640427ccaSGordon Tetlow# "DOS 2.0 backed up file %s, complete file" 116740427ccaSGordon Tetlow>>>>>>0 ubyte x DOS 2.0-3.2 backed up 116840427ccaSGordon Tetlow#>>>>>>0 ubyte 0xff complete 116940427ccaSGordon Tetlow>>>>>>0 ubyte 0 117040427ccaSGordon Tetlow>>>>>>>1 uleshort x sequence %d of 117140427ccaSGordon Tetlow# full file name with path but without drive letter and colon stored from 0x05 til 0x52 117240427ccaSGordon Tetlow>>>>>>0x5 string x file %s 117340427ccaSGordon Tetlow# backup name is original filename 117440427ccaSGordon Tetlow#!:ext * 117540427ccaSGordon Tetlow# magic/Magdir/msdos, 1169: Warning: EXTENSION type ` *' has bad char '*' 117640427ccaSGordon Tetlow# file: line 1169: Bad magic entry ' *' 117740427ccaSGordon Tetlow# after header original file content 117840427ccaSGordon Tetlow>>>>>>128 indirect x \b; 117940427ccaSGordon Tetlow 118040427ccaSGordon Tetlow 118140427ccaSGordon Tetlow# DOS backup 3.3 to 5.x 118240427ccaSGordon Tetlow 118340427ccaSGordon Tetlow# CONTROL.nnn files 118440427ccaSGordon Tetlow0 string \x8bBACKUP\x20 118540427ccaSGordon Tetlow# actually 128 nul bytes 118640427ccaSGordon Tetlow>0xa string \0\0\0\0\0\0\0\0 118740427ccaSGordon Tetlow>>0x9 ubyte x DOS 3.3 backup control file, sequence %d 118840427ccaSGordon Tetlow>>0x8a ubyte 0xff \b, last disk 118940427ccaSGordon Tetlow 119040427ccaSGordon Tetlow# NB: The BACKUP.nnn files consist of the files backed up, 119140427ccaSGordon Tetlow# concatenated. 1192