Imported Upstream version 1.2.2-1
[packages/binwalk.git] / magic / executables
1
2 #------------------Standard file formats------------------------------------
3
4 #------------------------------------------------------------------------------
5 # elf:  file(1) magic for ELF executables
6 #
7 # We have to check the byte order flag to see what byte order all the
8 # other stuff in the header is in.
9 #
10 # What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
11 #
12 # updated by Daniel Quinlan (quinlan@yggdrasil.com)
13 0       string          \177ELF         ELF
14 >4      byte            0               invalid class
15 >4      byte            1               32-bit
16 # only for MIPS - in the future, the ABI field of e_flags should be used.
17 >>18    leshort         8
18 >>>36   lelong          &0x20           N32
19 >>18    leshort         10
20 >>>36   lelong          &0x20           N32
21 >>18    beshort         8
22 >>>36   belong          &0x20           N32
23 >>18    beshort         10
24 >>>36   belong          &0x20           N32
25 >4      byte            2               64-bit
26 >5      byte            0               invalid byte order
27 >5      byte            1               LSB
28 # The official e_machine number for MIPS is now #8, regardless of endianness.
29 # The second number (#10) will be deprecated later. For now, we still
30 # say something if #10 is encountered, but only gory details for #8.
31 >>18    leshort         8
32 # only for 32-bit
33 >>>4    byte            1
34 >>>>36  lelong&0xf0000000       0x00000000      MIPS-I
35 >>>>36  lelong&0xf0000000       0x10000000      MIPS-II
36 >>>>36  lelong&0xf0000000       0x20000000      MIPS-III
37 >>>>36  lelong&0xf0000000       0x30000000      MIPS-IV
38 >>>>36  lelong&0xf0000000       0x40000000      MIPS-V
39 >>>>36  lelong&0xf0000000       0x60000000      MIPS32
40 >>>>36  lelong&0xf0000000       0x70000000      MIPS64
41 >>>>36  lelong&0xf0000000       0x80000000      MIPS32 rel2
42 >>>>36  lelong&0xf0000000       0x90000000      MIPS64 rel2
43 # only for 64-bit
44 >>>4    byte            2
45 >>>>48  lelong&0xf0000000       0x00000000      MIPS-I
46 >>>>48  lelong&0xf0000000       0x10000000      MIPS-II
47 >>>>48  lelong&0xf0000000       0x20000000      MIPS-III
48 >>>>48  lelong&0xf0000000       0x30000000      MIPS-IV
49 >>>>48  lelong&0xf0000000       0x40000000      MIPS-V
50 >>>>48  lelong&0xf0000000       0x60000000      MIPS32
51 >>>>48  lelong&0xf0000000       0x70000000      MIPS64 
52 >>>>48  lelong&0xf0000000       0x80000000      MIPS32 rel2
53 >>>>48  lelong&0xf0000000       0x90000000      MIPS64 rel2
54 >>16    leshort         0               no file type,
55 >>16    leshort         1               relocatable,
56 >>16    leshort         2               executable,
57 >>16    leshort         3               shared object,
58 # Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
59 # corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
60 >>16    leshort         4               core file
61 # Core file detection is not reliable.
62 #>>>(0x38+0xcc) string  >\0             of '%s'
63 #>>>(0x38+0x10) lelong  >0              (signal %d),
64 >>16    leshort         &0xff00         processor-specific,
65 >>18    leshort         0               no machine,
66 >>18    leshort         1               AT&T WE32100 - invalid byte order,
67 >>18    leshort         2               SPARC - invalid byte order,
68 >>18    leshort         3               Intel 80386,
69 >>18    leshort         4               Motorola
70 >>>36   lelong          &0x01000000     68000 - invalid byte order,
71 >>>36   lelong          &0x00810000     CPU32 - invalid byte order,
72 >>>36   lelong          0               68020 - invalid byte order,
73 >>18    leshort         5               Motorola 88000 - invalid byte order,
74 >>18    leshort         6               Intel 80486,
75 >>18    leshort         7               Intel 80860,
76 >>18    leshort         8               MIPS,
77 >>18    leshort         9               Amdahl - invalid byte order,
78 >>18    leshort         10              MIPS (deprecated),
79 >>18    leshort         11              RS6000 - invalid byte order,
80 >>18    leshort         15              PA-RISC - invalid byte order,
81 >>>50   leshort         0x0214          2.0
82 >>>48   leshort         &0x0008         (LP64),
83 >>18    leshort         16              nCUBE,
84 >>18    leshort         17              Fujitsu VPP500,
85 >>18    leshort         18              SPARC32PLUS,
86 >>18    leshort         20              PowerPC,
87 >>18    leshort         22              IBM S/390,
88 >>18    leshort         36              NEC V800,
89 >>18    leshort         37              Fujitsu FR20,
90 >>18    leshort         38              TRW RH-32,
91 >>18    leshort         39              Motorola RCE,
92 >>18    leshort         40              ARM,
93 >>18    leshort         41              Alpha,
94 >>18    leshort         0xa390          IBM S/390 (obsolete),
95 >>18    leshort         42              Hitachi SH,
96 >>18    leshort         43              SPARC V9 - invalid byte order,
97 >>18    leshort         44              Siemens Tricore Embedded Processor,
98 >>18    leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
99 >>18    leshort         46              Hitachi H8/300,
100 >>18    leshort         47              Hitachi H8/300H,
101 >>18    leshort         48              Hitachi H8S,
102 >>18    leshort         49              Hitachi H8/500,
103 >>18    leshort         50              IA-64 (Intel 64 bit architecture)
104 >>18    leshort         51              Stanford MIPS-X,
105 >>18    leshort         52              Motorola Coldfire,
106 >>18    leshort         53              Motorola M68HC12,
107 >>18    leshort         62              AMD x86-64,
108 >>18    leshort         75              Digital VAX,
109 >>18    leshort         97              NatSemi 32k,
110 >>18    leshort         0x9026          Alpha (unofficial),
111 >>20    lelong          0               invalid version
112 >>20    lelong          1               version 1
113 >>36    lelong          1               MathCoPro/FPU/MAU Required
114 >5      byte            2               MSB
115 # only for MIPS - see comment in little-endian section above.
116 >>18    beshort         8
117 # only for 32-bit
118 >>>4    byte            1
119 >>>>36  belong&0xf0000000       0x00000000      MIPS-I
120 >>>>36  belong&0xf0000000       0x10000000      MIPS-II
121 >>>>36  belong&0xf0000000       0x20000000      MIPS-III
122 >>>>36  belong&0xf0000000       0x30000000      MIPS-IV
123 >>>>36  belong&0xf0000000       0x40000000      MIPS-V
124 >>>>36  belong&0xf0000000       0x60000000      MIPS32
125 >>>>36  belong&0xf0000000       0x70000000      MIPS64
126 >>>>36  belong&0xf0000000       0x80000000      MIPS32 rel2
127 >>>>36  belong&0xf0000000       0x90000000      MIPS64 rel2
128 # only for 64-bit
129 >>>4    byte            2
130 >>>>48  belong&0xf0000000       0x00000000      MIPS-I
131 >>>>48  belong&0xf0000000       0x10000000      MIPS-II
132 >>>>48  belong&0xf0000000       0x20000000      MIPS-III
133 >>>>48  belong&0xf0000000       0x30000000      MIPS-IV
134 >>>>48  belong&0xf0000000       0x40000000      MIPS-V
135 >>>>48  belong&0xf0000000       0x60000000      MIPS32
136 >>>>48  belong&0xf0000000       0x70000000      MIPS64 
137 >>>>48  belong&0xf0000000       0x80000000      MIPS32 rel2
138 >>>>48  belong&0xf0000000       0x90000000      MIPS64 rel2
139 >>16    beshort         0               no file type,
140 >>16    beshort         1               relocatable,
141 >>16    beshort         2               executable,
142 >>16    beshort         3               shared object,
143 >>16    beshort         4               core file,
144 #>>>(0x38+0xcc) string  >\0             of '%s'
145 #>>>(0x38+0x10) belong  >0              (signal %d),
146 >>16    beshort         &0xff00         processor-specific,
147 >>18    beshort         0               no machine,
148 >>18    beshort         1               AT&T WE32100,
149 >>18    beshort         2               SPARC,
150 >>18    beshort         3               Intel 80386 - invalid byte order,
151 >>18    beshort         4               Motorola
152 >>>36   belong          &0x01000000     68000,
153 >>>36   belong          &0x00810000     CPU32,
154 >>>36   belong          0               68020,
155 >>18    beshort         5               Motorola 88000,
156 >>18    beshort         6               Intel 80486 - invalid byte order,
157 >>18    beshort         7               Intel 80860,
158 >>18    beshort         8               MIPS,
159 >>18    beshort         9               Amdahl,
160 >>18    beshort         10              MIPS (deprecated),
161 >>18    beshort         11              RS6000,
162 >>18    beshort         15              PA-RISC
163 >>>50   beshort         0x0214          2.0
164 >>>48   beshort         &0x0008         (LP64)
165 >>18    beshort         16              nCUBE,
166 >>18    beshort         17              Fujitsu VPP500,
167 >>18    beshort         18              SPARC32PLUS,
168 >>>36   belong&0xffff00 &0x000100       V8+ Required,
169 >>>36   belong&0xffff00 &0x000200       Sun UltraSPARC1 Extensions Required,
170 >>>36   belong&0xffff00 &0x000400       HaL R1 Extensions Required,
171 >>>36   belong&0xffff00 &0x000800       Sun UltraSPARC3 Extensions Required,
172 >>18    beshort         20              PowerPC or cisco 4500,
173 >>18    beshort         21              cisco 7500,
174 >>18    beshort         22              IBM S/390,
175 >>18    beshort         24              cisco SVIP,
176 >>18    beshort         25              cisco 7200,
177 >>18    beshort         36              NEC V800 or cisco 12000,
178 >>18    beshort         37              Fujitsu FR20,
179 >>18    beshort         38              TRW RH-32,
180 >>18    beshort         39              Motorola RCE,
181 >>18    beshort         40              ARM,
182 >>18    beshort         41              Alpha,
183 >>18    beshort         42              Hitachi SH,
184 >>18    beshort         43              SPARC V9,
185 >>18    beshort         44              Siemens Tricore Embedded Processor,
186 >>18    beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
187 >>18    beshort         46              Hitachi H8/300,
188 >>18    beshort         47              Hitachi H8/300H,
189 >>18    beshort         48              Hitachi H8S,
190 >>18    beshort         49              Hitachi H8/500,
191 >>18    beshort         50              Intel Merced Processor,
192 >>18    beshort         51              Stanford MIPS-X,
193 >>18    beshort         52              Motorola Coldfire,
194 >>18    beshort         53              Motorola M68HC12,
195 >>18    beshort         73              Cray NV1,
196 >>18    beshort         75              Digital VAX,
197 >>18    beshort         97              NatSemi 32k,
198 >>18    beshort         0x9026          Alpha (unofficial),
199 >>18    beshort         0xa390          IBM S/390 (obsolete),
200 >>18    beshort         0xde3d          Ubicom32,
201 >>20    belong          0               invalid version
202 >>20    belong          1               version 1
203 >>36    belong          1               MathCoPro/FPU/MAU Required
204 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
205 # like proper ELF, but extracting the string had bad results.
206 >4      byte            <0x80
207 >>8     string          >\0             ("%s")
208 >8      string          \0
209 >>7     byte            0               (SYSV)
210 >>7     byte            1               (HP-UX)
211 >>7     byte            2               (NetBSD)
212 >>7     byte            3               (GNU/Linux)
213 >>7     byte            4               (GNU/Hurd)
214 >>7     byte            5               (86Open)
215 >>7     byte            6               (Solaris)
216 >>7     byte            7               (Monterey)
217 >>7     byte            8               (IRIX)
218 >>7     byte            9               (FreeBSD)
219 >>7     byte            10              (Tru64)
220 >>7     byte            11              (Novell Modesto)
221 >>7     byte            12              (OpenBSD)
222 >>7     byte            97              (ARM)
223 >>7     byte            255             (embedded)
224
225 # XXX - according to Microsoft's spec, at an offset of 0x3c in a
226 # PE-format executable is the offset in the file of the PE header;
227 # unfortunately, that's a little-endian offset, and there's no way
228 # to specify an indirect offset with a specified byte order.
229 # So, for now, we assume the standard MS-DOS stub, which puts the
230 # PE header at 0x80 = 128.
231 #
232 # Required OS version and subsystem version were 4.0 on some NT 3.51
233 # executables built with Visual C++ 4.0, so it's not clear that
234 # they're interesting.  The user version was 0.0, but there's
235 # probably some linker directive to set it.  The linker version was
236 # 3.0, except for one ".exe" which had it as 4.20 (same damn linker!).
237 #
238 # many of the compressed formats were extraced from IDARC 1.23 source code
239 #
240
241 # Not a very useful signature...
242 #0       string  MZ     Microsoft
243 #>0x18  leshort <0x40 MS-DOS executable
244
245 0       string          MZ\0\0\0\0\0\0\0\0\0\0
246 >12     string          PE\0\0  Microsoft PE
247 >0x18   leshort         <0x40   MS-DOS executable
248 >>&18   leshort&0x2000  >0      (DLL)
249 >>&88   leshort         0       (unknown subsystem)
250 >>&88   leshort         1       (native)
251 >>&88   leshort         2       (GUI)
252 >>&88   leshort         3       (console)
253 >>&88   leshort         7       (POSIX)
254 >>&0    leshort         0x0     unknown processor
255 >>&0    leshort         0x14c   Intel 80386
256 >>&0    leshort         0x166   MIPS R4000
257 >>&0    leshort         0x184   Alpha
258 >>&0    leshort         0x268   Motorola 68000
259 >>&0    leshort         0x1f0   PowerPC
260 >>&0    leshort         0x290   PA-RISC
261 >>&18   leshort&0x0100  >0      32-bit
262 >>&18   leshort&0x1000  >0      system file
263 >>&228  lelong          >0      \b, Mono/.Net assembly
264 >>&0xf4 search/0x140 \x0\x40\x1\x0
265 >>>(&0.l+(4)) string MSCF \b, WinHKI CAB self-extracting archive
266 >30             string  Copyright\x201989-1990\x20PKWARE\x20Inc.      Self-extracting PKZIP archive
267 # Is next line correct? One might expect "Corp." not "Copr." If it is right, add a note to that effect.
268 >30             string  PKLITE\x20Copr.   Self-extracting PKZIP archive
269
270 >0x18  leshort >0x3f
271 >>(0x3c.l) string PE\0\0 PE
272 >>>(0x3c.l+25) byte             1 \b32 executable
273 >>>(0x3c.l+25) byte             2 \b32+ executable
274 # hooray, there's a DOS extender using the PE format, with a valid PE
275 # executable inside (which just prints a message and exits if run in win)
276 >>>(0x3c.l+92)  leshort         <10
277 >>>>(8.s*16) string 32STUB for MS-DOS, 32rtm DOS extender
278 >>>>(8.s*16) string !32STUB for MS Windows
279 >>>>>(0x3c.l+22)        leshort&0x2000  >0      (DLL)
280 >>>>>(0x3c.l+92)        leshort         0       (unknown subsystem)
281 >>>>>(0x3c.l+92)        leshort         1       (native)
282 >>>>>(0x3c.l+92)        leshort         2       (GUI)
283 >>>>>(0x3c.l+92)        leshort         3       (console)
284 >>>>>(0x3c.l+92)        leshort         7       (POSIX)
285 >>>(0x3c.l+92)  leshort         10      (EFI application)
286 >>>(0x3c.l+92)  leshort         11      (EFI boot service driver)
287 >>>(0x3c.l+92)  leshort         12      (EFI runtime driver)
288 >>>(0x3c.l+92)  leshort         13      (XBOX)
289 >>>(0x3c.l+4)   leshort         0x0     unknown processor
290 >>>(0x3c.l+4)   leshort         0x14c   Intel 80386
291 >>>(0x3c.l+4)   leshort         0x166   MIPS R4000
292 >>>(0x3c.l+4)   leshort         0x184   Alpha
293 >>>(0x3c.l+4)   leshort         0x268   Motorola 68000
294 >>>(0x3c.l+4)   leshort         0x1f0   PowerPC
295 >>>(0x3c.l+4)   leshort         0x290   PA-RISC
296 >>>(0x3c.l+4)   leshort         0x200   Intel Itanium
297 >>>(0x3c.l+22)  leshort&0x0100  >0      32-bit
298 >>>(0x3c.l+22)  leshort&0x1000  >0      system file
299 >>>(0x3c.l+232) lelong  >0      Mono/.Net assembly
300 >>>>(0x3c.l+0xf8)       string          UPX0 \b, UPX compressed
301 >>>>(0x3c.l+0xf8)       search/0x140    PEC2 \b, PECompact2 compressed
302 >>>>(0x3c.l+0xf8)       search/0x140    UPX2
303 >>>>>(&0x10.l+(-4))     string          PK\3\4 \b, ZIP self-extracting archive (Info-Zip)
304 >>>>(0x3c.l+0xf8)       search/0x140    .idata
305 >>>>>(&0xe.l+(-4))      string          PK\3\4 \b, ZIP self-extracting archive (Info-Zip)
306 >>>>>(&0xe.l+(-4))      string          ZZ0 \b, ZZip self-extracting archive
307 >>>>>(&0xe.l+(-4))      string          ZZ1 \b, ZZip self-extracting archive
308 >>>>(0x3c.l+0xf8)       search/0x140    .rsrc
309 >>>>>(&0x0f.l+(-4))     string          a\\\4\5 \b, WinHKI self-extracting archive
310 >>>>>(&0x0f.l+(-4))     string          Rar! \b, RAR self-extracting archive
311 >>>>>(&0x0f.l+(-4))     search/0x3000   MSCF \b, InstallShield self-extracting archive
312 >>>>>(&0x0f.l+(-4))     search/32       Nullsoft \b, Nullsoft Installer self-extracting archive
313 >>>>(0x3c.l+0xf8)       search/0x140    .data
314 >>>>>(&0x0f.l)          string          WEXTRACT \b, MS CAB-Installer self-extracting archive
315 >>>>(0x3c.l+0xf8)       search/0x140    .petite\0 \b, Petite compressed
316 >>>>>(0x3c.l+0xf7)      byte            x
317 >>>>>>(&0x104.l+(-4))   string          =!sfx! \b, ACE self-extracting archive
318 >>>>(0x3c.l+0xf8)       search/0x140    .WISE \b, WISE installer self-extracting archive
319 >>>>(0x3c.l+0xf8)       search/0x140    .dz\0\0\0 \b, Dzip self-extracting archive
320 >>>>(0x3c.l+0xf8)       search/0x140    .reloc
321 >>>>>(&0xe.l+(-4))      search/0x180    PK\3\4 \b, ZIP self-extracting archive (WinZip)
322
323 >>>>&(0x3c.l+0xf8)      search/0x100    _winzip_ \b, ZIP self-extracting archive (WinZip)
324 >>>>&(0x3c.l+0xf8)      search/0x100    SharedD \b, Microsoft Installer self-extracting archive
325 >>>>0x30                string          Inno \b, InnoSetup self-extracting archive
326
327 >>(0x3c.l) string !PE\0\0 MS-DOS executable
328
329 >>(0x3c.l)              string          NE \b, NE
330 >>>(0x3c.l+0x36)        byte            0 (unknown OS)
331 >>>(0x3c.l+0x36)        byte            1 for OS/2 1.x
332 >>>(0x3c.l+0x36)        byte            2 for MS Windows 3.x
333 >>>(0x3c.l+0x36)        byte            3 for MS-DOS
334 >>>(0x3c.l+0x36)        byte            >3 (unknown OS)
335 >>>(0x3c.l+0x36)        byte            0x81 for MS-DOS, Phar Lap DOS extender
336 >>>(0x3c.l+0x0c)        leshort&0x8003  0x8002 (DLL)
337 >>>(0x3c.l+0x0c)        leshort&0x8003  0x8001 (driver)
338 >>>&(&0x24.s-1)         string          ARJSFX \b, ARJ self-extracting archive
339 >>>(0x3c.l+0x70)        search/0x80     WinZip(R)\x20Self-Extractor \b, ZIP self-extracting archive (WinZip)
340
341 >>(0x3c.l)              string          LX\0\0 \b, LX
342 >>>(0x3c.l+0x0a)        leshort         <1 (unknown OS)
343 >>>(0x3c.l+0x0a)        leshort         1 for OS/2
344 >>>(0x3c.l+0x0a)        leshort         2 for MS Windows
345 >>>(0x3c.l+0x0a)        leshort         3 for DOS
346 >>>(0x3c.l+0x0a)        leshort         >3 (unknown OS)
347 >>>(0x3c.l+0x10)        lelong&0x28000  =0x8000 (DLL)
348 >>>(0x3c.l+0x10)        lelong&0x20000  >0 (device driver)
349 >>>(0x3c.l+0x10)        lelong&0x300    0x300 (GUI)
350 >>>(0x3c.l+0x10)        lelong&0x28300  <0x300 (console)
351 >>>(0x3c.l+0x08)        leshort         1 i80286
352 >>>(0x3c.l+0x08)        leshort         2 i80386
353 >>>(0x3c.l+0x08)        leshort         3 i80486
354 >>>(8.s*16)             string          emx \b, emx
355 >>>>&1                  string          x "%s"
356 >>>&(&0x54.l-3)         string          arjsfx \b, ARJ self-extracting archive
357
358
359
360 #------------------------------------------------------------------------------
361 # bFLT: file(1) magic for BFLT uclinux binary files
362 #
363 # From Philippe De Muyter <phdm@macqel.be>
364
365 # Additional fields added by Craig Heffner
366 #
367 0       string          bFLT            BFLT executable
368 >4      belong          <1              invalid
369 >4      belong          >4              invalid
370 >4      belong          x               version %ld, 
371 >4      belong          4
372 >8      belong          x               code offset: 0x%.8X, 
373 >12     belong          x               data segment starts at: 0x%.8X, 
374 >16     belong          x               bss segment starts at: 0x%.8X, 
375 >20     belong          x               bss segment ends at: 0x%.8X, 
376 >24     belong          x               stack size: %d bytes, 
377 >28     belong          x               relocation records start at: 0x%.8X, 
378 >32     belong          x               number of reolcation records: %d, 
379 >>36    belong&0x1      0x1             ram
380 >>36    belong&0x2      0x2             gotpic
381 >>36    belong&0x4      0x4             gzip
382 >>36    belong&0x8      0x8             gzdata
383
384
385 # Windows CE package files
386 0       string          MSCE\0\0\0\0    Microsoft WinCE installer
387 >20     lelong          0               \b, architecture-independent
388 >20     lelong          103             \b, Hitachi SH3
389 >20     lelong          104             \b, Hitachi SH4
390 >20     lelong          0xA11           \b, StrongARM
391 >20     lelong          4000            \b, MIPS R4000
392 >20     lelong          10003           \b, Hitachi SH3
393 >20     lelong          10004           \b, Hitachi SH3E
394 >20     lelong          10005           \b, Hitachi SH4
395 >20     lelong          70001           \b, ARM 7TDMI
396 >52     leshort         1               \b, 1 file
397 >52     leshort         >1              \b, %u files
398 >56     leshort         1               \b, 1 registry entry
399 >56     leshort         >1              \b, %u registry entries
400
401 #------------------------------------------------------------------------------
402 # Microsoft Xbox executables .xbe (Esa Hyytiä <ehyytia@cc.hut.fi>)
403 0       string          XBEH            XBE, Microsoft Xbox executable
404 # probabilistic checks whether signed or not
405 >0x0004 ulelong =0x0
406 >>&2    ulelong =0x0
407 >>>&2   ulelong =0x0  \b, not signed
408 >0x0004 ulelong >0
409 >>&2    ulelong >0
410 >>>&2   ulelong >0    \b, signed
411 # expect base address of 0x10000
412 >0x0104               ulelong =0x10000
413 >>(0x0118-0x0FF60)    ulelong&0x80000007  0x80000007 \b, all regions
414 >>(0x0118-0x0FF60)    ulelong&0x80000007  !0x80000007
415 >>>(0x0118-0x0FF60)   ulelong >0           (regions:
416 >>>>(0x0118-0x0FF60)  ulelong &0x00000001  NA
417 >>>>(0x0118-0x0FF60)  ulelong &0x00000002  Japan
418 >>>>(0x0118-0x0FF60)  ulelong &0x00000004  Rest_of_World
419 >>>>(0x0118-0x0FF60)  ulelong &0x80000000  Manufacturer
420 >>>(0x0118-0x0FF60)   ulelong >0           \b)
421
422 #------------------------------------------------------------------------------
423 # motorola:  file(1) magic for Motorola 68K and 88K binaries
424 #
425 # 68K
426 #
427 # These signatures are useless without further sanity checking. Disable them until 
428 # that can be implemented.
429 #0       beshort         0x0208          mc68k COFF
430 #>18     beshort         ^00000020       object
431 #>18     beshort         &00000020       executable
432 #>12     belong          >0              not stripped
433 #>168    string          .lowmem         Apple toolbox
434 #>20     beshort         0407            (impure)
435 #>20     beshort         0410            (pure)
436 #>20     beshort         0413            (demand paged)
437 #>20     beshort         0421            (standalone)
438 #0       beshort         0x0209          mc68k executable (shared)
439 #>12     belong          >0              not stripped
440 #0       beshort         0x020A          mc68k executable (shared demand paged)
441 #>12     belong          >0              not stripped
442
443
444 #------------------------------------------------------------------------------
445 # Sony Playstation executables (Adam Sjoegren <asjo@diku.dk>) :
446 0       string  PS-X\x20EXE       Sony Playstation executable
447 #  Area:
448 >113    string  x               ("%s")
449
450 #------------------------------------------------------------------------------
451 # cisco:  file(1) magic for cisco Systems routers
452 #
453 # Most cisco file-formats are covered by the generic elf code
454 0       string                  \x85\x01\x14    Cisco IOS microcode
455 >7      string                  >\0             
456 >>7     string                  x               for "%s"
457 0       string                  \x85\x01\xcb    Cisco IOS experimental microcode
458 >7      string                  >\0             
459 >>7     string                  x               for "%s"
460
461 # EST flat binary format (which isn't, but anyway)
462 # From: Mark Brown <broonie@sirena.org.uk>
463 0       string  ESTFBINR        EST flat binary
464
465 # These are not the binaries themselves, but string references to them
466 # are a strong indication that they exist elsewhere...
467 #0      string  /bin/busybox    Busybox string reference: "%s"{one-of-many}
468 #0      string /bin/sh          Shell string reference: "%s"{one-of-many}
469