Imported Upstream version 2.0.1+dfsg
[packages/binwalk.git] / src / 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 >4      byte            >2
27 >>4     byte            x               unknown ELF class: 0x%X
28 >5      byte            !1
29 >>5     byte            !2              invalid byte order
30 >5      byte            1               LSB
31 # The official e_machine number for MIPS is now #8, regardless of endianness.
32 # The second number (#10) will be deprecated later. For now, we still
33 # say something if #10 is encountered, but only gory details for #8.
34 >>18    leshort         8
35 # only for 32-bit
36 >>>4    byte            1
37 >>>>36  lelong&0xf0000000       0x00000000      MIPS-I
38 >>>>36  lelong&0xf0000000       0x10000000      MIPS-II
39 >>>>36  lelong&0xf0000000       0x20000000      MIPS-III
40 >>>>36  lelong&0xf0000000       0x30000000      MIPS-IV
41 >>>>36  lelong&0xf0000000       0x40000000      MIPS-V
42 >>>>36  lelong&0xf0000000       0x60000000      MIPS32
43 >>>>36  lelong&0xf0000000       0x70000000      MIPS64
44 >>>>36  lelong&0xf0000000       0x80000000      MIPS32 rel2
45 >>>>36  lelong&0xf0000000       0x90000000      MIPS64 rel2
46 # only for 64-bit
47 >>>4    byte            2
48 >>>>48  lelong&0xf0000000       0x00000000      MIPS-I
49 >>>>48  lelong&0xf0000000       0x10000000      MIPS-II
50 >>>>48  lelong&0xf0000000       0x20000000      MIPS-III
51 >>>>48  lelong&0xf0000000       0x30000000      MIPS-IV
52 >>>>48  lelong&0xf0000000       0x40000000      MIPS-V
53 >>>>48  lelong&0xf0000000       0x60000000      MIPS32
54 >>>>48  lelong&0xf0000000       0x70000000      MIPS64 
55 >>>>48  lelong&0xf0000000       0x80000000      MIPS32 rel2
56 >>>>48  lelong&0xf0000000       0x90000000      MIPS64 rel2
57 >>16    leshort         0               no file type,
58 >>16    leshort         1               relocatable,
59 >>16    leshort         2               executable,
60 >>16    leshort         3               shared object,
61 # Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
62 # corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
63 >>16    leshort         4               core file
64 # Core file detection is not reliable.
65 #>>>(0x38+0xcc) string  >\0             of '%s'
66 #>>>(0x38+0x10) lelong  >0              (signal %d),
67 >>16    leshort         &0xff00         processor-specific,
68 >>18    leshort         0               no machine,
69 >>18    leshort         1               AT&T WE32100 - invalid byte order,
70 >>18    leshort         2               SPARC - invalid byte order,
71 >>18    leshort         3               Intel 80386,
72 >>18    leshort         4               Motorola
73 >>>36   lelong          &0x01000000     68000 - invalid byte order,
74 >>>36   lelong          &0x00810000     CPU32 - invalid byte order,
75 >>>36   lelong          0               68020 - invalid byte order,
76 >>18    leshort         5               Motorola 88000 - invalid byte order,
77 >>18    leshort         6               Intel 80486,
78 >>18    leshort         7               Intel 80860,
79 >>18    leshort         8               MIPS,
80 >>18    leshort         9               Amdahl - invalid byte order,
81 >>18    leshort         10              MIPS (deprecated),
82 >>18    leshort         11              RS6000 - invalid byte order,
83 >>18    leshort         15              PA-RISC - invalid byte order,
84 >>>50   leshort         0x0214          2.0
85 >>>48   leshort         &0x0008         (LP64),
86 >>18    leshort         16              nCUBE,
87 >>18    leshort         17              Fujitsu VPP500,
88 >>18    leshort         18              SPARC32PLUS,
89 >>18    leshort         20              PowerPC,
90 >>18    leshort         22              IBM S/390,
91 >>18    leshort         36              NEC V800,
92 >>18    leshort         37              Fujitsu FR20,
93 >>18    leshort         38              TRW RH-32,
94 >>18    leshort         39              Motorola RCE,
95 >>18    leshort         40              ARM,
96 >>18    leshort         41              Alpha,
97 >>18    leshort         0xa390          IBM S/390 (obsolete),
98 >>18    leshort         42              Hitachi SH,
99 >>18    leshort         43              SPARC V9 - invalid byte order,
100 >>18    leshort         44              Siemens Tricore Embedded Processor,
101 >>18    leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
102 >>18    leshort         46              Hitachi H8/300,
103 >>18    leshort         47              Hitachi H8/300H,
104 >>18    leshort         48              Hitachi H8S,
105 >>18    leshort         49              Hitachi H8/500,
106 >>18    leshort         50              IA-64 (Intel 64 bit architecture)
107 >>18    leshort         51              Stanford MIPS-X,
108 >>18    leshort         52              Motorola Coldfire,
109 >>18    leshort         53              Motorola M68HC12,
110 >>18    leshort         62              AMD x86-64,
111 >>18    leshort         75              Digital VAX,
112 >>18    leshort         97              NatSemi 32k,
113 >>18    leshort         0x9026          Alpha (unofficial),
114 >>20    lelong          0               invalid version
115 >>20    lelong          1               version 1
116 >>36    lelong          1               MathCoPro/FPU/MAU Required
117 >5      byte            2               MSB
118 # only for MIPS - see comment in little-endian section above.
119 >>18    beshort         8
120 # only for 32-bit
121 >>>4    byte            1
122 >>>>36  belong&0xf0000000       0x00000000      MIPS-I
123 >>>>36  belong&0xf0000000       0x10000000      MIPS-II
124 >>>>36  belong&0xf0000000       0x20000000      MIPS-III
125 >>>>36  belong&0xf0000000       0x30000000      MIPS-IV
126 >>>>36  belong&0xf0000000       0x40000000      MIPS-V
127 >>>>36  belong&0xf0000000       0x60000000      MIPS32
128 >>>>36  belong&0xf0000000       0x70000000      MIPS64
129 >>>>36  belong&0xf0000000       0x80000000      MIPS32 rel2
130 >>>>36  belong&0xf0000000       0x90000000      MIPS64 rel2
131 # only for 64-bit
132 >>>4    byte            2
133 >>>>48  belong&0xf0000000       0x00000000      MIPS-I
134 >>>>48  belong&0xf0000000       0x10000000      MIPS-II
135 >>>>48  belong&0xf0000000       0x20000000      MIPS-III
136 >>>>48  belong&0xf0000000       0x30000000      MIPS-IV
137 >>>>48  belong&0xf0000000       0x40000000      MIPS-V
138 >>>>48  belong&0xf0000000       0x60000000      MIPS32
139 >>>>48  belong&0xf0000000       0x70000000      MIPS64 
140 >>>>48  belong&0xf0000000       0x80000000      MIPS32 rel2
141 >>>>48  belong&0xf0000000       0x90000000      MIPS64 rel2
142 >>16    beshort         0               no file type,
143 >>16    beshort         1               relocatable,
144 >>16    beshort         2               executable,
145 >>16    beshort         3               shared object,
146 >>16    beshort         4               core file,
147 #>>>(0x38+0xcc) string  >\0             of '%s'
148 #>>>(0x38+0x10) belong  >0              (signal %d),
149 >>16    beshort         &0xff00         processor-specific,
150 >>18    beshort         0               no machine,
151 >>18    beshort         1               AT&T WE32100,
152 >>18    beshort         2               SPARC,
153 >>18    beshort         3               Intel 80386 - invalid byte order,
154 >>18    beshort         4               Motorola
155 >>>36   belong          &0x01000000     68000,
156 >>>36   belong          &0x00810000     CPU32,
157 >>>36   belong          0               68020,
158 >>18    beshort         5               Motorola 88000,
159 >>18    beshort         6               Intel 80486 - invalid byte order,
160 >>18    beshort         7               Intel 80860,
161 >>18    beshort         8               MIPS,
162 >>18    beshort         9               Amdahl,
163 >>18    beshort         10              MIPS (deprecated),
164 >>18    beshort         11              RS6000,
165 >>18    beshort         15              PA-RISC
166 >>>50   beshort         0x0214          2.0
167 >>>48   beshort         &0x0008         (LP64)
168 >>18    beshort         16              nCUBE,
169 >>18    beshort         17              Fujitsu VPP500,
170 >>18    beshort         18              SPARC32PLUS,
171 >>>36   belong&0xffff00 &0x000100       V8+ Required,
172 >>>36   belong&0xffff00 &0x000200       Sun UltraSPARC1 Extensions Required,
173 >>>36   belong&0xffff00 &0x000400       HaL R1 Extensions Required,
174 >>>36   belong&0xffff00 &0x000800       Sun UltraSPARC3 Extensions Required,
175 >>18    beshort         20              PowerPC or cisco 4500,
176 >>18    beshort         21              cisco 7500,
177 >>18    beshort         22              IBM S/390,
178 >>18    beshort         24              cisco SVIP,
179 >>18    beshort         25              cisco 7200,
180 >>18    beshort         36              NEC V800 or cisco 12000,
181 >>18    beshort         37              Fujitsu FR20,
182 >>18    beshort         38              TRW RH-32,
183 >>18    beshort         39              Motorola RCE,
184 >>18    beshort         40              ARM,
185 >>18    beshort         41              Alpha,
186 >>18    beshort         42              Hitachi SH,
187 >>18    beshort         43              SPARC V9,
188 >>18    beshort         44              Siemens Tricore Embedded Processor,
189 >>18    beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
190 >>18    beshort         46              Hitachi H8/300,
191 >>18    beshort         47              Hitachi H8/300H,
192 >>18    beshort         48              Hitachi H8S,
193 >>18    beshort         49              Hitachi H8/500,
194 >>18    beshort         50              Intel Merced Processor,
195 >>18    beshort         51              Stanford MIPS-X,
196 >>18    beshort         52              Motorola Coldfire,
197 >>18    beshort         53              Motorola M68HC12,
198 >>18    beshort         73              Cray NV1,
199 >>18    beshort         75              Digital VAX,
200 >>18    beshort         97              NatSemi 32k,
201 >>18    beshort         0x9026          Alpha (unofficial),
202 >>18    beshort         0xa390          IBM S/390 (obsolete),
203 >>18    beshort         0xde3d          Ubicom32,
204 >>20    belong          0               invalid version
205 >>20    belong          1               version 1
206 >>36    belong          1               MathCoPro/FPU/MAU Required
207 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
208 # like proper ELF, but extracting the string had bad results.
209 >4      byte            <0x80
210 >>8     string          >\0             ("%s")
211 >8      string          \0
212 >>7     byte            0               (SYSV)
213 >>7     byte            1               (HP-UX)
214 >>7     byte            2               (NetBSD)
215 >>7     byte            3               (GNU/Linux)
216 >>7     byte            4               (GNU/Hurd)
217 >>7     byte            5               (86Open)
218 >>7     byte            6               (Solaris)
219 >>7     byte            7               (Monterey)
220 >>7     byte            8               (IRIX)
221 >>7     byte            9               (FreeBSD)
222 >>7     byte            10              (Tru64)
223 >>7     byte            11              (Novell Modesto)
224 >>7     byte            12              (OpenBSD)
225 >>7     byte            97              (ARM)
226 >>7     byte            255             (embedded)
227
228 # Some simple Microsoft executable signatures
229 0                   string              MZ\0\0\0\0\0\0          Microsoft
230 >0x3c           lelong          <4                              invalid
231 >(0x3c.l)   string      !PE\0\0                 MS-DOS executable
232 >(0x3c.l)   string      PE\0\0                  portable executable
233
234 0           string      MZ                  Microsoft
235 >0x3c           lelong          <4                              invalid
236 >(0x3c.l)   string      !PE\0\0             invalid
237 >(0x3c.l)   string      PE\0\0              portable executable
238
239
240 #------------------------------------------------------------------------------
241 # bFLT: file(1) magic for BFLT uclinux binary files
242 #
243 # From Philippe De Muyter <phdm@macqel.be>
244
245 # Additional fields added by Craig Heffner
246 #
247 0       string          bFLT            BFLT executable
248 >4      belong          <1              invalid
249 >4      belong          >4              invalid
250 >4      belong          x               version %d, 
251 >4      belong          4
252 >8      belong          x               code offset: 0x%.8X, 
253 >12     belong          x               data segment starts at: 0x%.8X, 
254 >16     belong          x               bss segment starts at: 0x%.8X, 
255 >20     belong          x               bss segment ends at: 0x%.8X, 
256 >24     belong          x               stack size: %d bytes, 
257 >28     belong          x               relocation records start at: 0x%.8X, 
258 >32     belong          x               number of reolcation records: %d, 
259 >>36    belong&0x1      0x1             ram
260 >>36    belong&0x2      0x2             gotpic
261 >>36    belong&0x4      0x4             gzip
262 >>36    belong&0x8      0x8             gzdata
263
264
265 # Windows CE package files
266 0       string          MSCE\0\0\0\0    Microsoft WinCE installer
267 >20     lelong          0               \b, architecture-independent
268 >20     lelong          103             \b, Hitachi SH3
269 >20     lelong          104             \b, Hitachi SH4
270 >20     lelong          0xA11           \b, StrongARM
271 >20     lelong          4000            \b, MIPS R4000
272 >20     lelong          10003           \b, Hitachi SH3
273 >20     lelong          10004           \b, Hitachi SH3E
274 >20     lelong          10005           \b, Hitachi SH4
275 >20     lelong          70001           \b, ARM 7TDMI
276 >52     leshort         1               \b, 1 file
277 >52     leshort         >1              \b, %u files
278 >56     leshort         1               \b, 1 registry entry
279 >56     leshort         >1              \b, %u registry entries
280
281 #------------------------------------------------------------------------------
282 # Microsoft Xbox executables .xbe (Esa Hyytiä <ehyytia@cc.hut.fi>)
283 0       string          XBEH            XBE, Microsoft Xbox executable
284 # probabilistic checks whether signed or not
285 >0x0004 ulelong =0x0
286 >>&2    ulelong !0x0  \b, invalid
287 >>&2    ulelong =0x0
288 >>>&2   ulelong !0x0  \b, invalid
289 >>>&2   ulelong =0x0  \b, not signed
290 >0x0004 ulelong >0
291 >>&2    ulelong =0x0  \b, invalid
292 >>&2    ulelong >0
293 >>>&2   ulelong =0x0  \b, invalid
294 >>>&2   ulelong >0    \b, signed
295 >0x0104 lelong  <0    \b, invalid base address
296 # expect base address of 0x10000
297 >0x0104               ulelong =0x10000
298 >>(0x0118-0x0FF60)    ulelong&0x80000007  0x80000007 \b, all regions
299 >>(0x0118-0x0FF60)    ulelong&0x80000007  !0x80000007
300 >>>(0x0118-0x0FF60)   ulelong >0           (regions:
301 >>>>(0x0118-0x0FF60)  ulelong &0x00000001  NA
302 >>>>(0x0118-0x0FF60)  ulelong &0x00000002  Japan
303 >>>>(0x0118-0x0FF60)  ulelong &0x00000004  Rest_of_World
304 >>>>(0x0118-0x0FF60)  ulelong &0x80000000  Manufacturer
305 >>>(0x0118-0x0FF60)   ulelong >0           \b)
306
307
308 #------------------------------------------------------------------------------
309 # motorola:  file(1) magic for Motorola 68K and 88K binaries
310 #
311 # 68K
312 #
313 # These signatures are useless without further sanity checking. Disable them until 
314 # that can be implemented.
315 #0       beshort         0x0208          mc68k COFF
316 #>18     beshort         ^00000020       object
317 #>18     beshort         &00000020       executable
318 #>12     belong          >0              not stripped
319 #>168    string          .lowmem         Apple toolbox
320 #>20     beshort         0407            (impure)
321 #>20     beshort         0410            (pure)
322 #>20     beshort         0413            (demand paged)
323 #>20     beshort         0421            (standalone)
324 #0       beshort         0x0209          mc68k executable (shared)
325 #>12     belong          >0              not stripped
326 #0       beshort         0x020A          mc68k executable (shared demand paged)
327 #>12     belong          >0              not stripped
328
329
330 #------------------------------------------------------------------------------
331 # Sony Playstation executables (Adam Sjoegren <asjo@diku.dk>) :
332 0       string  PS-X\x20EXE       Sony Playstation executable
333 #  Area:
334 >113    string  x               ("%s")
335
336 #------------------------------------------------------------------------------
337 # cisco:  file(1) magic for cisco Systems routers
338 #
339 # Most cisco file-formats are covered by the generic elf code
340 0       string                  \x85\x01\x14    Cisco IOS microcode
341 >7      string                  >\0             
342 >>7     string                  x               for "%s"
343 0       string                  \x85\x01\xcb    Cisco IOS experimental microcode
344 >7      string                  >\0             
345 >>7     string                  x               for "%s"
346
347 # EST flat binary format (which isn't, but anyway)
348 # From: Mark Brown <broonie@sirena.org.uk>
349 0       string  ESTFBINR        EST flat binary
350
351 # These are not the binaries themselves, but string references to them
352 # are a strong indication that they exist elsewhere...
353 #0      string  /bin/busybox    Busybox string reference: "%s"{one-of-many}
354 #0      string /bin/sh          Shell string reference: "%s"{one-of-many}
355
356 # Mach-O's
357 0       string \xca\xfe\xba\xbe\x00\x00\x00\x01 Mach-O universal binary with 1 architecture
358 0       string \xca\xfe\xba\xbe\x00\x00\x00\x02 Mach-O universal binary with 2 architectures
359 0       string \xca\xfe\xba\xbe\x00\x00\x00\x03 Mach-O universal binary with 3 architectures
360 0       string \xca\xfe\xba\xbe\x00\x00\x00\x04 Mach-O universal binary with 4 architectures
361 0       string \xca\xfe\xba\xbe\x00\x00\x00\x05 Mach-O universal binary with 5 architectures
362 0       string \xca\xfe\xba\xbe\x00\x00\x00\x06 Mach-O universal binary with 6 architectures
363 0       string \xca\xfe\xba\xbe\x00\x00\x00\x07 Mach-O universal binary with 7 architectures
364 0       string \xca\xfe\xba\xbe\x00\x00\x00\x08 Mach-O universal binary with 8 architectures
365 0       string \xca\xfe\xba\xbe\x00\x00\x00\x0a Mach-O universal binary with 9 architectures
366 0       string \xca\xfe\xba\xbe\x00\x00\x00\x0b Mach-O universal binary with 10 architectures
367 0       string \xca\xfe\xba\xbe\x00\x00\x00\x0c Mach-O universal binary with 11 architectures
368 0       string \xca\xfe\xba\xbe\x00\x00\x00\x0d Mach-O universal binary with 12 architectures
369 0       string \xca\xfe\xba\xbe\x00\x00\x00\x0e Mach-O universal binary with 13 architectures
370 0       string \xca\xfe\xba\xbe\x00\x00\x00\x0f Mach-O universal binary with 14 architectures
371 0       string \xca\xfe\xba\xbe\x00\x00\x00\x10 Mach-O universal binary with 15 architectures
372 0       string \xca\xfe\xba\xbe\x00\x00\x00\x11 Mach-O universal binary with 16 architectures
373 0       string \xca\xfe\xba\xbe\x00\x00\x00\x12 Mach-O universal binary with 17 architectures
374 0       string \xca\xfe\xba\xbe\x00\x00\x00\x13 Mach-O universal binary with 18 architectures
375
376 # The magic bytes for Java .class files is 0xcafebabe, but AFAIK all major version numbers are less than 255
377 # and all minor version numbers are 0. This gives us three more bytes we can signature on.
378 0       string          \xca\xfe\xba\xbe\x00\x00\x00    Compiled Java class data,
379 >6      beshort         x                               version %d.
380 >4      beshort         x                               \b%d
381 # Which is which?
382 >4      belong          0x032d                          (Java 1.0/1.1)
383 #>4     belong          0x032d                          (Java 1.1)
384 >4      belong          0x002e                          (Java 1.2)
385 >4      belong          0x002f                          (Java 1.3)
386 >4      belong          0x0030                          (Java 1.4)
387 >4      belong          0x0031                          (Java 1.5)
388 >4      belong          0x0032                          (Java 1.6)
389 >4      belong          >0x0050                         invalid
390
391 # Summary: HP-38/39 calculator
392 0       string          HP38Bin         HP 38 binary
393 >7      string          A               (Directory List)
394 >7      string          B               (Zaplet)
395 >7      string          C               (Note)
396 >7      string          D               (Program)
397 >7      string          E               (Variable)
398 >7      string          F               (List)
399 >7      string          G               (Matrix)
400 >7      string          H               (Library)
401 >7      string          I               (Target List)
402 >7      string          J               (ASCII Vector specification)
403 >7      string          K               (wildcard)
404 >7      byte            <0x41           invalid
405 >7      byte            >0x4B           invalid
406
407 0       string          HP39Bin         HP 39 binary
408 >7      string          A               (Directory List)
409 >7      string          B               (Zaplet)
410 >7      string          C               (Note)
411 >7      string          D               (Program)
412 >7      string          E               (Variable)
413 >7      string          F               (List)
414 >7      string          G               (Matrix)
415 >7      string          H               (Library)
416 >7      string          I               (Target List)
417 >7      string          J               (ASCII Vector specification)
418 >7      string          K               (wildcard)
419 >7      byte            <0x41           invalid
420 >7      byte            >0x4B           invalid
421
422 0       string          HP38Asc         HP 38 ASCII
423 >7      string          A               (Directory List)
424 >7      string          B               (Zaplet)
425 >7      string          C               (Note)
426 >7      string          D               (Program)
427 >7      string          E               (Variable)
428 >7      string          F               (List)
429 >7      string          G               (Matrix)
430 >7      string          H               (Library)
431 >7      string          I               (Target List)
432 >7      string          J               (ASCII Vector specification)
433 >7      string          K               (wildcard)
434 >7      byte            <0x41           invalid
435 >7      byte            >0x4B           invalid
436
437 0       string          HP39Asc         HP 39 ASCII
438 >7      string          A               (Directory List)
439 >7      string          B               (Zaplet)
440 >7      string          C               (Note)
441 >7      string          D               (Program)
442 >7      string          E               (Variable)
443 >7      string          F               (List)
444 >7      string          G               (Matrix)
445 >7      string          H               (Library)
446 >7      string          I               (Target List)
447 >7      string          J               (ASCII Vector specification)
448 >7      string          K               (wildcard)
449 >7      byte            <0x41           invalid
450 >7      byte            >0x4B           invalid
451
452 # Summary: HP-48/49 calculator
453 0       string          HPHP48          HP 48 binary
454 >8      leshort         0x2911          (ADR)
455 >8      leshort         0x2933          (REAL)
456 >8      leshort         0x2955          (LREAL)
457 >8      leshort         0x2977          (COMPLX)
458 >8      leshort         0x299d          (LCOMPLX)
459 >8      leshort         0x29bf          (CHAR)
460 >8      leshort         0x29e8          (ARRAY)
461 >8      leshort         0x2a0a          (LNKARRAY)
462 >8      leshort         0x2a2c          (STRING)
463 >8      leshort         0x2a4e          (HXS)
464 >8      leshort         0x2a74          (LIST)
465 >8      leshort         0x2a96          (DIR)
466 >8      leshort         0x2ab8          (ALG)
467 >8      leshort         0x2ada          (UNIT)
468 >8      leshort         0x2afc          (TAGGED)
469 >8      leshort         0x2b1e          (GROB)
470 >8      leshort         0x2b40          (LIB)
471 >8      leshort         0x2b62          (BACKUP)
472 >8      leshort         0x2b88          (LIBDATA)
473 >8      leshort         0x2d9d          (PROG)
474 >8      leshort         0x2dcc          (CODE)
475 >8      leshort         0x2e48          (GNAME)
476 >8      leshort         0x2e6d          (LNAME)
477 >8      leshort         0x2e92          (XLIB)
478 >8      leshort         <0x2911         (invalid)
479 >8      leshort         >0x2e92         (invalid)
480
481 0       string          HPHP49          HP 49 binary
482 >8      leshort         0x2911          (ADR)
483 >8      leshort         0x2933          (REAL)
484 >8      leshort         0x2955          (LREAL)
485 >8      leshort         0x2977          (COMPLX)
486 >8      leshort         0x299d          (LCOMPLX)
487 >8      leshort         0x29bf          (CHAR)
488 >8      leshort         0x29e8          (ARRAY)
489 >8      leshort         0x2a0a          (LNKARRAY)
490 >8      leshort         0x2a2c          (STRING)
491 >8      leshort         0x2a4e          (HXS)
492 >8      leshort         0x2a74          (LIST)
493 >8      leshort         0x2a96          (DIR)
494 >8      leshort         0x2ab8          (ALG)
495 >8      leshort         0x2ada          (UNIT)
496 >8      leshort         0x2afc          (TAGGED)
497 >8      leshort         0x2b1e          (GROB)
498 >8      leshort         0x2b40          (LIB)
499 >8      leshort         0x2b62          (BACKUP)
500 >8      leshort         0x2b88          (LIBDATA)
501 >8      leshort         0x2d9d          (PROG)
502 >8      leshort         0x2dcc          (CODE)
503 >8      leshort         0x2e48          (GNAME)
504 >8      leshort         0x2e6d          (LNAME)
505 >8      leshort         0x2e92          (XLIB)
506 >8      leshort         <0x2911         (invalid)
507 >8      leshort         >0x2e92         (invalid)
508
509 0       string          \x23!/          Executable script,
510 >6      byte            !0x2F
511 >>7     byte            !0x2F           invalid
512 >2      string          x               shebang: "%s"
513
514 0       string          \x23!\x20/      Executable script,
515 >7      byte            !0x2F
516 >>8     byte            !0x2F           invalid
517 >3      string          x               shebang: "%s"
518