Imported Upstream version 0.4.5
[packages/binwalk.git] / src / magic.binwalk
1 # ----------------------------Archive Formats--------------------------------------
2
3 # POSIX tar archives
4 257     string          ustar\000         POSIX tar archive
5 !:mime  application/x-tar # encoding: posix
6 257     string          ustar\040\040\000 GNU tar archive
7 !:mime  application/x-tar # encoding: gnu
8
9 # MIPS archive (needs to go before regular portable archives)
10 #
11 0       string  =!<arch>\n__________E   MIPS archive
12 >20     string  U                       with MIPS Ucode members
13 >21     string  L                       with MIPSEL members
14 >21     string  B                       with MIPSEB members
15 >19     string  L                       and an EL hash table
16 >19     string  B                       and an EB hash table
17 >22     string  X                       -- out of date
18
19 # JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP)
20 0xe     string  \x1aJar\x1b JAR (ARJ Software, Inc.) archive data
21 0       string  JARCS JAR (ARJ Software, Inc.) archive data
22
23
24 # ARJ archiver (jason@jarthur.Claremont.EDU)
25 0       leshort         0xea60          ARJ archive data
26 !:mime  application/x-arj
27 >5      byte            x               \b, v%d,
28 >8      byte            &0x04           multi-volume,
29 >8      byte            &0x10           slash-switched,
30 >8      byte            &0x20           backup,
31 >34     string          x               original name: %s,
32 >7      byte            0               os: MS-DOS 
33 >7      byte            1               os: PRIMOS
34 >7      byte            2               os: Unix
35 >7      byte            3               os: Amiga
36 >7      byte            4               os: Macintosh
37 >7      byte            5               os: OS/2
38 >7      byte            6               os: Apple ][ GS
39 >7      byte            7               os: Atari ST
40 >7      byte            8               os: NeXT
41 >7      byte            9               os: VAX/VMS
42 >3      byte            >0              %d]
43 # [JW] idarc says this is also possible
44 2       leshort         0xea60          ARJ archive data
45 >5      byte            x               \b, v%d,
46 >8      byte            &0x04           multi-volume,
47 >8      byte            &0x10           slash-switched,
48 >8      byte            &0x20           backup,
49 >34     string          x               original name: %s,
50 >7      byte            0               os: MS-DOS
51 >7      byte            1               os: PRIMOS
52 >7      byte            2               os: Unix
53 >7      byte            3               os: Amiga
54 >7      byte            4               os: Macintosh
55 >7      byte            5               os: OS/2
56 >7      byte            6               os: Apple ][ GS
57 >7      byte            7               os: Atari ST
58 >7      byte            8               os: NeXT
59 >7      byte            9               os: VAX/VMS
60 >3      byte            >0              %d]
61
62 # RAR archiver (Greg Roelofs, newt@uchicago.edu)
63 0       string          Rar!            RAR archive data [NSRL|RAR]
64
65 # HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz)
66 0       string          HPAK            HPACK archive data [NSRL|HPAK]
67
68 # JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net
69 0       string          \351,\001JAM\           JAM archive, [NSRL|JAM]
70
71 # LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
72 2       string          -lh0-           LHarc 1.x archive data [lh0] [NSRL|LHA1]
73 2       string          -lh1-           LHarc 1.x archive data [lh1] [NSRL|LHA1]
74 2       string          -lz4-           LHarc 1.x archive data [lz4] [NSRL|LHA1]
75 2       string          -lz5-           LHarc 1.x archive data [lz5] [NSRL|LHA1]
76 #       [never seen any but the last; -lh4- reported in comp.compression:]
77 2       string          -lzs-           LHa 2.x? archive data [lzs] [NSRL|LHA2]
78 2       string          -lh\40-         LHa 2.x? archive data [lh ] [NSRL|LHA2]
79 2       string          -lhd-           LHa 2.x? archive data [lhd] [NSRL|LHA2]
80 2       string          -lh2-           LHa 2.x? archive data [lh2] [NSRL|LHA2]
81 2       string          -lh3-           LHa 2.x? archive data [lh3] [NSRL|LHA2]
82 2       string          -lh4-           LHa (2.x) archive data [lh4] [NSRL|LHA2]
83 2       string          -lh5-           LHa (2.x) archive data [lh5] [NSRL|LHA2]
84 2       string          -lh6-           LHa (2.x) archive data [lh6] [NSRL|LHA2]
85 2       string          -lh7-           LHa (2.x) archive data [lh7] [NSRL|LHA2]
86
87 # SQUISH archiver (Greg Roelofs, newt@uchicago.edu)
88 0       string          SQSH            squished archive data (Acorn RISCOS) [NSRL|SQSH]
89
90 # UC2 archiver (Greg Roelofs, newt@uchicago.edu)
91 # I can't figure out the self-extracting form of these buggers...
92 0       string          UC2\x1a         UC2 archive data [NSRL|UC2]
93
94 # Zoo archiver
95 20      lelong          0xfdc4a7dc      Zoo archive data [NSRL|ZOO]
96
97 # Shell archives
98 # JT, 2004-03-17: The "#" in the middle of the line makes it look like the
99 # rest of the line is commented out - I guess it's OK? Beware if parsing!
100 10      string          #\x20This\x20is\x20a\x20shell\x20archive        shell archive text [NSRL|SH]
101
102 #
103 # LBR. NB: May conflict with the questionable 
104 #          "binary Computer Graphics Metafile" format.
105 #
106 0       string  \0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\0\0    LBR archive data [NSRL|LBR]
107 #
108 # PMA (CP/M derivative of LHA)
109 #
110 2       string          -pm0-           PMarc archive data [pm0] [NSRL|PMA]
111 2       string          -pm1-           PMarc archive data [pm1] [NSRL|PMA]
112 2       string          -pm2-           PMarc archive data [pm2] [NSRL|PMA]
113 2       string          -pms-           PMarc SFX archive (CP/M, DOS) [NSRL|PMA-SFX]
114 5       string          -pc1-           PopCom compressed executable archive (CP/M) [NSRL|PPC-SFX]
115
116 # From rafael@icp.inpg.fr (Rafael Laboissiere) 
117 # The Project Revision Control System (see
118 # http://www.XCF.Berkeley.EDU/~jmacd/prcs.html) generates a packaged project
119 # file which is recognized by the following entry:
120 0       leshort         0xeb81  PRCS packaged project archive [NSRL|PRCS]
121
122 # GTKtalog catalogs 
123 # by David Necas (Yeti) <yeti@physics.muni.cz>
124 4       string  gtktalog\x20    GTKtalog catalog data archive, [NSRL|GTK]
125 >>14    beshort 0x677a          (gzipped)
126
127
128 #---------------------------Bootloaders--------------------------------
129
130 # CFE bootloader
131 0       string  CFE1CFE1        CFE boot loader, little endian
132 0       string  1EFC1EFC        CFE boot loader, big endian
133
134
135 #------------------Compression Formats-----------------------------
136
137 # bzip2
138 0       string          BZh
139 >4      string          1AY&SY          bzip2 compressed data
140 !:mime  application/x-bzip2
141 >>3      byte            >47            \b, block size = %c00k
142
143 # lzip  
144 0       string          LZIP            lzip compressed data
145 !:mime application/x-lzip
146 >4      byte            x               \b, version: %d
147
148 # LZO
149 0       string          \211LZO\000\015\012\032\012     LZO compressed data
150
151 # 7-zip archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
152 # http://www.7-zip.org or DOC/7zFormat.txt 
153 #
154 0       string          7z\274\257\047\034      7-zip archive data,
155 >6      byte            x                       version %d
156 >7      byte            x                       \b.%d
157
158 # standard unix compress
159 0       beshort         0x1f9d          compress'd data
160 >2      byte&0x80       >0              block compressed
161 >2      byte&0x1f       x               %d bits
162
163 # gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
164 #   Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
165 #       * Original filename is only at offset 10 if "extra field" absent
166 #       * Produce shorter output - notably, only report compression methods
167 #         other than 8 ("deflate", the only method defined in RFC 1952).
168 0       string          \037\213        gzip compressed data
169 !:mime  application/x-gzip
170 >2      byte            <8              \b, reserved (invalid) method
171 >2      byte            >8              \b, unknown (invalid) method
172 >3      byte            &0x01           \b, ASCII
173 >3      byte            &0x02           \b, has CRC
174 >3      byte            &0x04           \b, extra field
175 >3      byte&0xC        =0x08
176 >>10    string          x               \b, was "%s"
177 >3      byte            &0x10           \b, has comment
178 >9      byte            =0x00           \b, from FAT filesystem (MS-DOS, OS/2, NT)
179 >9      byte            =0x01           \b, from Amiga
180 >9      byte            =0x02           \b, from VMS
181 >9      byte            =0x03           \b, from Unix
182 >9      byte            =0x04           \b, from VM/CMS
183 >9      byte            =0x05           \b, from Atari
184 >9      byte            =0x06           \b, from HPFS filesystem (OS/2, NT)
185 >9      byte            =0x07           \b, from MacOS
186 >9      byte            =0x08           \b, from Z-System
187 >9      byte            =0x09           \b, from CP/M
188 >9      byte            =0x0A           \b, from TOPS/20
189 >9      byte            =0x0B           \b, from NTFS filesystem (NT)
190 >9      byte            =0x0C           \b, from QDOS
191 >9      byte            =0x0D           \b, from Acorn RISCOS
192 >9      byte            >0x0D           \b, invalid source
193 >3      byte            &0x10           \b, comment
194 >3      byte            &0x20           \b, encrypted
195 # Dates before 1992 are invalid, unless of course you're DD-WRT in which
196 # case you don't know how to set a date in your gzip files. Brilliant.
197 >4      lelong          =0              \b, NULL date:
198 >4      lelong          <0              \b, invalid date:
199 >4      lelong          >0              
200 >>4     lelong          <694224000      \b, invalid date:
201 >>4     lelong          =694224000      \b, invalid date:
202 >>4     lelong          >694224000      \b, last modified:
203 >4      ledate          x               %s
204 >8      byte            2               \b, max compression
205 >8      byte            4               \b, max speed
206
207 # Zlib signatures
208 0       beshort         0x789C          zlib compressed data
209 0       beshort         0x78DA          zlib compressed data
210 0       beshort         0x7801          zlib compressed data
211
212 # Supplementary magic data for the file(1) command to support
213 # rzip(1).  The format is described in magic(5).
214 #
215 # Copyright (C) 2003 by Andrew Tridgell.  You may do whatever you want with
216 # this file.
217 #
218 0       string          RZIP            rzip compressed data
219 >4      byte            x               - version %d
220 >5      byte            x               \b.%d
221 >6      belong          x               (%d bytes)
222
223 # ZIP compression (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
224 0       string          PK\003\004      Zip archive data, 
225 >4      byte            0x00            v0.0
226 !:mime  application/zip 
227 >4      byte            0x09            at least v0.9 to extract
228 !:mime  application/zip 
229 >4      byte            0x0a            at least v1.0 to extract
230 !:mime  application/zip 
231 >4      byte            0x0b            at least v1.1 to extract
232 !:mime  application/zip
233 >0x161  string          WINZIP          WinZIP self-extracting
234 !:mime  application/zip
235 >4      byte            0x14
236 >>30    ubelong         !0x6d696d65     at least v2.0 to extract
237 !:mime  application/zip
238
239 # Alternate ZIP string (amc@arwen.cs.berkeley.edu)
240 0       string          PK00PK\003\004  Zip archive data [NSRL|ZIP]
241
242 # Type: LZMA            
243 # URL:  http://www.7-zip.org/sdk.html   
244 #
245 # Added additional parsing to help verify LZMA matches and weed out false positives.
246 # Added improved signature checking.
247 # Added checks for possibly (probably) invalid matches.
248 # From: Craig Heffner
249
250 #First LZMA signature
251 0       string                  \x5d\x00\x00            LZMA compressed data,
252 >0      leshort                 >0xE0                   invalid
253 >0      byte                    x                       properties: 0x%.2X,
254 >1      lelong                  <1                      invalid
255 >1      lelong                  x                       dictionary size: %d bytes,
256 >5      lequad                  0                       invalid
257 >5      lequad                  <0                      invalid
258 >5      lequad                  >0x40000000             invalid
259 >5      lequad                  x                       uncompressed size: %lld bytes
260
261 #An alternative common LZMA signature
262 1       belong                  0x00008000              LZMA compressed data,
263 >0      byte                    0                       invalid
264 >0      leshort                 >0xE0                   invalid
265 >0      byte                    x                       properties: 0x%.2X,
266 >1      lelong                  <1                      invalid
267 >1      lelong                  x                       dictionary size: %d bytes,
268 >5      lequad                  0                       invalid
269 >5      lequad                  <0                      invalid
270 >5      lequad                  >0x40000000             invalid
271 >5      lequad                  x                       uncompressed size: %lld bytes
272
273 #Signature for less common LZMA flag/dictionary values. Results in lots of false positives, but usually marked as invalid.
274 1       beshort                 0x0000                  LZMA compressed data,
275 >0      byte                    0                       invalid
276 >0      byte                    >0xE0                   invalid
277 >0      byte                    x                       properties: 0x%.2X,
278 >1      lelong                  <1                      invalid
279 >1      lelong                  x                       dictionary size: %d bytes,
280 >5      lequad                  0                       invalid
281 >5      lequad                  <0                      invalid
282 >5      lequad                  >0x40000000             invalid
283 >5      lequad                  x                       uncompressed size: %lld bytes
284
285
286 # Type: OpenSSL certificates/key files
287 # From: Nicolas Collignon <tsointsoin@gmail.com>
288
289 0       string  -----BEGIN\x20CERTIFICATE-----    PEM certificate
290 0       string  -----BEGIN\x20CERTIFICATE\x20REQ    PEM certificate request
291 0       string  -----BEGIN\x20RSA\x20PRIVATE        PEM RSA private key
292 0       string  -----BEGIN\x20DSA\x20PRIVATE        PEM DSA private key
293
294 # Type: OpenSSH key files
295 # From: Nicolas Collignon <tsointsoin@gmail.com>
296
297 0       string  SSH\x20PRIVATE\x20KEY       OpenSSH RSA1 private key,
298 >28     string  >\0                     version %s
299
300 0       string  ssh-dss\x20               OpenSSH DSA public key
301 0       string  ssh-rsa\x20               OpenSSH RSA public key
302
303 #------------------Standard file formats------------------------------------
304
305 # elf:  file(1) magic for ELF executables
306 #
307 # We have to check the byte order flag to see what byte order all the
308 # other stuff in the header is in.
309 #
310 # What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
311 #
312 # Created by: unknown
313 # Modified by (1): Daniel Quinlan <quinlan@yggdrasil.com>
314 # Modified by (2): Peter Tobias <tobias@server.et-inf.fho-emden.de> (core support)
315 # Modified by (3): Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de> (fix of core support)
316 # Modified by (4): <gerardo.cacciari@gmail.com> (VMS Itanium)
317 # Modified by (5): Matthias Urlichs <smurf@debian.org> (Listing of many architectures)
318 0       string          \177ELF         ELF
319 >4      byte            0               invalid class
320 >4      byte            1               32-bit
321 >4      byte            2               64-bit
322 >5      byte            0               invalid byte order
323 >5      byte            1               LSB
324 >>16    leshort         0               no file type,
325 !:strength *2
326 !:mime  application/octet-stream
327 >>16    leshort         1               relocatable,
328 !:mime  application/x-object
329 >>16    leshort         2               executable,
330 !:mime  application/x-executable
331 >>16    leshort         3               shared object,
332 !:mime  application/x-sharedlib
333 >>16    leshort         4               core file
334 !:mime  application/x-coredump
335 # Core file detection is not reliable.
336 #>>>(0x38+0xcc) string  >\0             of '%s'
337 #>>>(0x38+0x10) lelong  >0              (signal %d),
338 >>16    leshort         &0xff00         processor-specific,
339 >>18    leshort         0               no machine,
340 >>18    leshort         1               AT&T WE32100 - invalid byte order,
341 >>18    leshort         2               SPARC - invalid byte order,
342 >>18    leshort         3               Intel 80386,
343 >>18    leshort         4               Motorola
344 >>>36   lelong          &0x01000000     68000 - invalid byte order,
345 >>>36   lelong          &0x00810000     CPU32 - invalid byte order,
346 >>>36   lelong          0               68020 - invalid byte order,
347 >>18    leshort         5               Motorola 88000 - invalid byte order,
348 >>18    leshort         6               Intel 80486,
349 >>18    leshort         7               Intel 80860,
350 # The official e_machine number for MIPS is now #8, regardless of endianness.
351 # The second number (#10) will be deprecated later. For now, we still
352 # say something if #10 is encountered, but only gory details for #8.
353 >>18    leshort         8               MIPS,
354 >>>36   lelong          &0x20           N32
355 >>18    leshort         10              MIPS,
356 >>>36   lelong          &0x20           N32
357 >>18    leshort         8
358 # only for 32-bit
359 >>>4    byte            1
360 >>>>36  lelong&0xf0000000       0x00000000      MIPS-I
361 >>>>36  lelong&0xf0000000       0x10000000      MIPS-II
362 >>>>36  lelong&0xf0000000       0x20000000      MIPS-III
363 >>>>36  lelong&0xf0000000       0x30000000      MIPS-IV
364 >>>>36  lelong&0xf0000000       0x40000000      MIPS-V
365 >>>>36  lelong&0xf0000000       0x50000000      MIPS32
366 >>>>36  lelong&0xf0000000       0x60000000      MIPS64
367 >>>>36  lelong&0xf0000000       0x70000000      MIPS32 rel2
368 >>>>36  lelong&0xf0000000       0x80000000      MIPS64 rel2
369 # only for 64-bit
370 >>>4    byte            2
371 >>>>48  lelong&0xf0000000       0x00000000      MIPS-I
372 >>>>48  lelong&0xf0000000       0x10000000      MIPS-II
373 >>>>48  lelong&0xf0000000       0x20000000      MIPS-III
374 >>>>48  lelong&0xf0000000       0x30000000      MIPS-IV
375 >>>>48  lelong&0xf0000000       0x40000000      MIPS-V
376 >>>>48  lelong&0xf0000000       0x50000000      MIPS32
377 >>>>48  lelong&0xf0000000       0x60000000      MIPS64
378 >>>>48  lelong&0xf0000000       0x70000000      MIPS32 rel2
379 >>>>48  lelong&0xf0000000       0x80000000      MIPS64 rel2
380 >>18    leshort         9               Amdahl - invalid byte order,
381 >>18    leshort         10              MIPS (deprecated),
382 >>18    leshort         11              RS6000 - invalid byte order,
383 >>18    leshort         15              PA-RISC - invalid byte order,
384 >>>50   leshort         0x0214          2.0
385 >>>48   leshort         &0x0008         (LP64),
386 >>18    leshort         16              nCUBE,
387 >>18    leshort         17              Fujitsu VPP500,
388 >>18    leshort         18              SPARC32PLUS - invalid byte order,
389 >>18    leshort         20              PowerPC,
390 >>18    leshort         22              IBM S/390,
391 >>18    leshort         36              NEC V800,
392 >>18    leshort         37              Fujitsu FR20,
393 >>18    leshort         38              TRW RH-32,
394 >>18    leshort         39              Motorola RCE,
395 >>18    leshort         40              ARM,
396 >>18    leshort         41              Alpha,
397 >>18    leshort         0xa390          IBM S/390 (obsolete),
398 >>18    leshort         42              Renesas SH,
399 >>18    leshort         43              SPARC V9 - invalid byte order,
400 >>18    leshort         44              Siemens Tricore Embedded Processor,
401 >>18    leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
402 >>18    leshort         46              Renesas H8/300,
403 >>18    leshort         47              Renesas H8/300H,
404 >>18    leshort         48              Renesas H8S,
405 >>18    leshort         49              Renesas H8/500,
406 >>18    leshort         50              IA-64,
407 >>18    leshort         51              Stanford MIPS-X,
408 >>18    leshort         52              Motorola Coldfire,
409 >>18    leshort         53              Motorola M68HC12,
410 >>18    leshort         54              Fujitsu MMA,
411 >>18    leshort         55              Siemens PCP,
412 >>18    leshort         56              Sony nCPU,
413 >>18    leshort         57              Denso NDR1,
414 >>18    leshort         58              Start*Core,
415 >>18    leshort         59              Toyota ME16,
416 >>18    leshort         60              ST100,
417 >>18    leshort         61              Tinyj emb.,
418 >>18    leshort         62              x86-64,
419 >>18    leshort         63              Sony DSP,
420 >>18    leshort         66              FX66,
421 >>18    leshort         67              ST9+ 8/16 bit,
422 >>18    leshort         68              ST7 8 bit,
423 >>18    leshort         69              MC68HC16,
424 >>18    leshort         70              MC68HC11,
425 >>18    leshort         71              MC68HC08,
426 >>18    leshort         72              MC68HC05,
427 >>18    leshort         73              SGI SVx,
428 >>18    leshort         74              ST19 8 bit,
429 >>18    leshort         75              Digital VAX,
430 >>18    leshort         76              Axis cris,
431 >>18    leshort         77              Infineon 32-bit embedded,
432 >>18    leshort         78              Element 14 64-bit DSP,
433 >>18    leshort         79              LSI Logic 16-bit DSP,
434 >>18    leshort         80              MMIX,
435 >>18    leshort         81              Harvard machine-independent,
436 >>18    leshort         82              SiTera Prism,
437 >>18    leshort         83              Atmel AVR 8-bit,
438 >>18    leshort         84              Fujitsu FR30,
439 >>18    leshort         85              Mitsubishi D10V,
440 >>18    leshort         86              Mitsubishi D30V,
441 >>18    leshort         87              NEC v850,
442 >>18    leshort         88              Renesas M32R,
443 >>18    leshort         89              Matsushita MN10300,
444 >>18    leshort         90              Matsushita MN10200,
445 >>18    leshort         91              picoJava,
446 >>18    leshort         92              OpenRISC,
447 >>18    leshort         93              ARC Cores Tangent-A5,
448 >>18    leshort         94              Tensilica Xtensa,
449 >>18    leshort         97              NatSemi 32k,
450 >>18    leshort         106             Analog Devices Blackfin,
451 >>18    leshort         113             Altera Nios II,
452 >>18    leshort         0xae            META,
453 >>18    leshort         0x3426          OpenRISC (obsolete),
454 >>18    leshort         0x8472          OpenRISC (obsolete),
455 >>18    leshort         0x9026          Alpha (unofficial),
456 >>20    lelong          0               invalid version
457 >>20    lelong          1               version 1
458 >>36    lelong          1               MathCoPro/FPU/MAU Required
459 >5      byte            2               MSB
460 >>16    beshort         0               no file type,
461 !:mime  application/octet-stream
462 >>16    beshort         1               relocatable,
463 !:mime  application/x-object
464 >>16    beshort         2               executable,
465 !:mime  application/x-executable
466 >>16    beshort         3               shared object,
467 !:mime  application/x-sharedlib
468 >>16    beshort         4               core file,
469 !:mime  application/x-coredump
470 #>>>(0x38+0xcc) string  >\0             of '%s'
471 #>>>(0x38+0x10) belong  >0              (signal %d),
472 >>16    beshort         &0xff00         processor-specific,
473 >>18    beshort         0               no machine,
474 >>18    beshort         1               AT&T WE32100,
475 >>18    beshort         2               SPARC,
476 >>18    beshort         3               Intel 80386 - invalid byte order,
477 >>18    beshort         4               Motorola
478 >>>36   belong          &0x01000000     68000,
479 >>>36   belong          &0x00810000     CPU32,
480 >>>36   belong          0               68020,
481 >>18    beshort         5               Motorola 88000,
482 >>18    beshort         6               Intel 80486 - invalid byte order,
483 >>18    beshort         7               Intel 80860,
484 # only for MIPS - see comment in little-endian section above.
485 >>18    beshort         8               MIPS,
486 >>>36   belong          &0x20           N32
487 >>18    beshort         10              MIPS,
488 >>>36   belong          &0x20           N32
489 >>18    beshort         8
490 # only for 32-bit
491 >>>4    byte            1
492 >>>>36  belong&0xf0000000       0x00000000      MIPS-I
493 >>>>36  belong&0xf0000000       0x10000000      MIPS-II
494 >>>>36  belong&0xf0000000       0x20000000      MIPS-III
495 >>>>36  belong&0xf0000000       0x30000000      MIPS-IV
496 >>>>36  belong&0xf0000000       0x40000000      MIPS-V
497 >>>>36  belong&0xf0000000       0x50000000      MIPS32
498 >>>>36  belong&0xf0000000       0x60000000      MIPS64
499 >>>>36  belong&0xf0000000       0x70000000      MIPS32 rel2
500 >>>>36  belong&0xf0000000       0x80000000      MIPS64 rel2
501 # only for 64-bit
502 >>>4    byte            2
503 >>>>48  belong&0xf0000000       0x00000000      MIPS-I
504 >>>>48  belong&0xf0000000       0x10000000      MIPS-II
505 >>>>48  belong&0xf0000000       0x20000000      MIPS-III
506 >>>>48  belong&0xf0000000       0x30000000      MIPS-IV
507 >>>>48  belong&0xf0000000       0x40000000      MIPS-V
508 >>>>48  belong&0xf0000000       0x50000000      MIPS32
509 >>>>48  belong&0xf0000000       0x60000000      MIPS64
510 >>>>48  belong&0xf0000000       0x70000000      MIPS32 rel2
511 >>>>48  belong&0xf0000000       0x80000000      MIPS64 rel2
512 >>18    beshort         9               Amdahl,
513 >>18    beshort         10              MIPS (deprecated),
514 >>18    beshort         11              RS6000,
515 >>18    beshort         15              PA-RISC
516 >>>50   beshort         0x0214          2.0
517 >>>48   beshort         &0x0008         (LP64)
518 >>18    beshort         16              nCUBE,
519 >>18    beshort         17              Fujitsu VPP500,
520 >>18    beshort         18              SPARC32PLUS,
521 >>>36   belong&0xffff00 0x000100        V8+ Required,
522 >>>36   belong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
523 >>>36   belong&0xffff00 0x000400        HaL R1 Extensions Required,
524 >>>36   belong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
525 >>18    beshort         20              PowerPC or cisco 4500,
526 >>18    beshort         21              64-bit PowerPC or cisco 7500,
527 >>18    beshort         22              IBM S/390,
528 >>18    beshort         23              Cell SPU,
529 >>18    beshort         24              cisco SVIP,
530 >>18    beshort         25              cisco 7200,
531 >>18    beshort         36              NEC V800 or cisco 12000,
532 >>18    beshort         37              Fujitsu FR20,
533 >>18    beshort         38              TRW RH-32,
534 >>18    beshort         39              Motorola RCE,
535 >>18    beshort         40              ARM,
536 >>18    beshort         41              Alpha,
537 >>18    beshort         42              Renesas SH,
538 >>18    beshort         43              SPARC V9,
539 >>>48   belong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
540 >>>48   belong&0xffff00 0x000400        HaL R1 Extensions Required,
541 >>>48   belong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
542 >>>48   belong&0x3      0               total store ordering,
543 >>>48   belong&0x3      1               partial store ordering,
544 >>>48   belong&0x3      2               relaxed memory ordering,
545 >>18    beshort         44              Siemens Tricore Embedded Processor,
546 >>18    beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
547 >>18    beshort         46              Renesas H8/300,
548 >>18    beshort         47              Renesas H8/300H,
549 >>18    beshort         48              Renesas H8S,
550 >>18    beshort         49              Renesas H8/500,
551 >>18    beshort         50              IA-64,
552 >>18    beshort         51              Stanford MIPS-X,
553 >>18    beshort         52              Motorola Coldfire,
554 >>18    beshort         53              Motorola M68HC12,
555 >>18    beshort         73              Cray NV1,
556 >>18    beshort         75              Digital VAX,
557 >>18    beshort         88              Renesas M32R,
558 >>18    leshort         92              OpenRISC,
559 >>18    leshort         0x3426          OpenRISC (obsolete),
560 >>18    leshort         0x8472          OpenRISC (obsolete),
561 >>18    beshort         94              Tensilica Xtensa,
562 >>18    beshort         97              NatSemi 32k,
563 >>18    beshort         0x18ad          AVR32 (unofficial),
564 >>18    beshort         0x9026          Alpha (unofficial),
565 >>18    beshort         0xa390          IBM S/390 (obsolete),
566 >>20    belong          0               invalid version
567 >>20    belong          1               version 1
568 >>36    belong          1               MathCoPro/FPU/MAU Required
569 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
570 # like proper ELF, but extracting the string had bad results.
571 >4      byte            <0x80
572 >>8     string          >\0             (%s)
573 >8      string          \0
574 >>7     byte            0               (SYSV)
575 >>7     byte            1               (HP-UX)
576 >>7     byte            2               (NetBSD)
577 >>7     byte            3               (GNU/Linux)
578 >>7     byte            4               (GNU/Hurd)
579 >>7     byte            5               (86Open)
580 >>7     byte            6               (Solaris)
581 >>7     byte            7               (Monterey)
582 >>7     byte            8               (IRIX)
583 >>7     byte            9               (FreeBSD)
584 >>7     byte            10              (Tru64)
585 >>7     byte            11              (Novell Modesto)
586 >>7     byte            12              (OpenBSD)
587 >8      string          \2
588 >>7     byte            13              (OpenVMS)
589 >>7     byte            97              (ARM)
590 >>7     byte            255             (embedded)
591
592
593
594 # XXX - according to Microsoft's spec, at an offset of 0x3c in a
595 # PE-format executable is the offset in the file of the PE header;
596 # unfortunately, that's a little-endian offset, and there's no way
597 # to specify an indirect offset with a specified byte order.
598 # So, for now, we assume the standard MS-DOS stub, which puts the
599 # PE header at 0x80 = 128.
600 #
601 # Required OS version and subsystem version were 4.0 on some NT 3.51
602 # executables built with Visual C++ 4.0, so it's not clear that
603 # they're interesting.  The user version was 0.0, but there's
604 # probably some linker directive to set it.  The linker version was
605 # 3.0, except for one ".exe" which had it as 4.20 (same damn linker!).
606 #
607 # many of the compressed formats were extraced from IDARC 1.23 source code
608 #
609 0       string  MZ
610 !:mime  application/x-dosexec
611 >0x18  leshort <0x40 MS-DOS executable
612 >0 string MZ\0\0\0\0\0\0\0\0\0\0PE\0\0 \b, PE for MS Windows
613 >>&18   leshort&0x2000  >0      (DLL)
614 >>&88   leshort         0       (unknown subsystem)
615 >>&88   leshort         1       (native)
616 >>&88   leshort         2       (GUI)
617 >>&88   leshort         3       (console)
618 >>&88   leshort         7       (POSIX)
619 >>&0    leshort         0x0     unknown processor
620 >>&0    leshort         0x14c   Intel 80386
621 >>&0    leshort         0x166   MIPS R4000
622 >>&0    leshort         0x184   Alpha
623 >>&0    leshort         0x268   Motorola 68000
624 >>&0    leshort         0x1f0   PowerPC
625 >>&0    leshort         0x290   PA-RISC
626 >>&18   leshort&0x0100  >0      32-bit
627 >>&18   leshort&0x1000  >0      system file
628 >>&228  lelong          >0      \b, Mono/.Net assembly
629 >>&0xf4 search/0x140 \x0\x40\x1\x0
630 >>>(&0.l+(4)) string MSCF \b, WinHKI CAB self-extracting archive
631 >30             string  Copyright\x201989-1990\x20PKWARE\x20Inc.      Self-extracting PKZIP archive
632 !:mime  application/zip
633 # Is next line correct? One might expect "Corp." not "Copr." If it is right, add a note to that effect.
634 >30             string  PKLITE\x20Copr.   Self-extracting PKZIP archive
635 !:mime  application/zip
636
637 >0x18  leshort >0x3f
638 >>(0x3c.l) string PE\0\0 PE
639 >>>(0x3c.l+25) byte             1 \b32 executable
640 >>>(0x3c.l+25) byte             2 \b32+ executable
641 # hooray, there's a DOS extender using the PE format, with a valid PE
642 # executable inside (which just prints a message and exits if run in win)
643 >>>(0x3c.l+92)  leshort         <10
644 >>>>(8.s*16) string 32STUB for MS-DOS, 32rtm DOS extender
645 >>>>(8.s*16) string !32STUB for MS Windows
646 >>>>>(0x3c.l+22)        leshort&0x2000  >0      (DLL)
647 >>>>>(0x3c.l+92)        leshort         0       (unknown subsystem)
648 >>>>>(0x3c.l+92)        leshort         1       (native)
649 >>>>>(0x3c.l+92)        leshort         2       (GUI)
650 >>>>>(0x3c.l+92)        leshort         3       (console)
651 >>>>>(0x3c.l+92)        leshort         7       (POSIX)
652 >>>(0x3c.l+92)  leshort         10      (EFI application)
653 >>>(0x3c.l+92)  leshort         11      (EFI boot service driver)
654 >>>(0x3c.l+92)  leshort         12      (EFI runtime driver)
655 >>>(0x3c.l+92)  leshort         13      (XBOX)
656 >>>(0x3c.l+4)   leshort         0x0     unknown processor
657 >>>(0x3c.l+4)   leshort         0x14c   Intel 80386
658 >>>(0x3c.l+4)   leshort         0x166   MIPS R4000
659 >>>(0x3c.l+4)   leshort         0x184   Alpha
660 >>>(0x3c.l+4)   leshort         0x268   Motorola 68000
661 >>>(0x3c.l+4)   leshort         0x1f0   PowerPC
662 >>>(0x3c.l+4)   leshort         0x290   PA-RISC
663 >>>(0x3c.l+4)   leshort         0x200   Intel Itanium
664 >>>(0x3c.l+22)  leshort&0x0100  >0      32-bit
665 >>>(0x3c.l+22)  leshort&0x1000  >0      system file
666 >>>(0x3c.l+232) lelong  >0      Mono/.Net assembly
667 >>>>(0x3c.l+0xf8)       string          UPX0 \b, UPX compressed
668 >>>>(0x3c.l+0xf8)       search/0x140    PEC2 \b, PECompact2 compressed
669 >>>>(0x3c.l+0xf8)       search/0x140    UPX2
670 >>>>>(&0x10.l+(-4))     string          PK\3\4 \b, ZIP self-extracting archive (Info-Zip)
671 >>>>(0x3c.l+0xf8)       search/0x140    .idata
672 >>>>>(&0xe.l+(-4))      string          PK\3\4 \b, ZIP self-extracting archive (Info-Zip)
673 >>>>>(&0xe.l+(-4))      string          ZZ0 \b, ZZip self-extracting archive
674 >>>>>(&0xe.l+(-4))      string          ZZ1 \b, ZZip self-extracting archive
675 >>>>(0x3c.l+0xf8)       search/0x140    .rsrc
676 >>>>>(&0x0f.l+(-4))     string          a\\\4\5 \b, WinHKI self-extracting archive
677 >>>>>(&0x0f.l+(-4))     string          Rar! \b, RAR self-extracting archive
678 >>>>>(&0x0f.l+(-4))     search/0x3000   MSCF \b, InstallShield self-extracting archive
679 >>>>>(&0x0f.l+(-4))     search/32       Nullsoft \b, Nullsoft Installer self-extracting archive
680 >>>>(0x3c.l+0xf8)       search/0x140    .data
681 >>>>>(&0x0f.l)          string          WEXTRACT \b, MS CAB-Installer self-extracting archive
682 >>>>(0x3c.l+0xf8)       search/0x140    .petite\0 \b, Petite compressed
683 >>>>>(0x3c.l+0xf7)      byte            x
684 >>>>>>(&0x104.l+(-4))   string          =!sfx! \b, ACE self-extracting archive
685 >>>>(0x3c.l+0xf8)       search/0x140    .WISE \b, WISE installer self-extracting archive
686 >>>>(0x3c.l+0xf8)       search/0x140    .dz\0\0\0 \b, Dzip self-extracting archive
687 >>>>(0x3c.l+0xf8)       search/0x140    .reloc
688 >>>>>(&0xe.l+(-4))      search/0x180    PK\3\4 \b, ZIP self-extracting archive (WinZip)
689
690 >>>>&(0x3c.l+0xf8)      search/0x100    _winzip_ \b, ZIP self-extracting archive (WinZip)
691 >>>>&(0x3c.l+0xf8)      search/0x100    SharedD \b, Microsoft Installer self-extracting archive
692 >>>>0x30                string          Inno \b, InnoSetup self-extracting archive
693
694 >>(0x3c.l) string !PE\0\0 MS-DOS executable
695
696 >>(0x3c.l)              string          NE \b, NE
697 >>>(0x3c.l+0x36)        byte            0 (unknown OS)
698 >>>(0x3c.l+0x36)        byte            1 for OS/2 1.x
699 >>>(0x3c.l+0x36)        byte            2 for MS Windows 3.x
700 >>>(0x3c.l+0x36)        byte            3 for MS-DOS
701 >>>(0x3c.l+0x36)        byte            >3 (unknown OS)
702 >>>(0x3c.l+0x36)        byte            0x81 for MS-DOS, Phar Lap DOS extender
703 >>>(0x3c.l+0x0c)        leshort&0x8003  0x8002 (DLL)
704 >>>(0x3c.l+0x0c)        leshort&0x8003  0x8001 (driver)
705 >>>&(&0x24.s-1)         string          ARJSFX \b, ARJ self-extracting archive
706 >>>(0x3c.l+0x70)        search/0x80     WinZip(R)\x20Self-Extractor \b, ZIP self-extracting archive (WinZip)
707
708 >>(0x3c.l)              string          LX\0\0 \b, LX
709 >>>(0x3c.l+0x0a)        leshort         <1 (unknown OS)
710 >>>(0x3c.l+0x0a)        leshort         1 for OS/2
711 >>>(0x3c.l+0x0a)        leshort         2 for MS Windows
712 >>>(0x3c.l+0x0a)        leshort         3 for DOS
713 >>>(0x3c.l+0x0a)        leshort         >3 (unknown OS)
714 >>>(0x3c.l+0x10)        lelong&0x28000  =0x8000 (DLL)
715 >>>(0x3c.l+0x10)        lelong&0x20000  >0 (device driver)
716 >>>(0x3c.l+0x10)        lelong&0x300    0x300 (GUI)
717 >>>(0x3c.l+0x10)        lelong&0x28300  <0x300 (console)
718 >>>(0x3c.l+0x08)        leshort         1 i80286
719 >>>(0x3c.l+0x08)        leshort         2 i80386
720 >>>(0x3c.l+0x08)        leshort         3 i80486
721 >>>(8.s*16)             string          emx \b, emx
722 >>>>&1                  string          x %s
723 >>>&(&0x54.l-3)         string          arjsfx \b, ARJ self-extracting archive
724
725
726
727 #------------------------------------------------------------------------------
728 # bFLT: file(1) magic for BFLT uclinux binary files
729 #
730 # From Philippe De Muyter <phdm@macqel.be>
731
732 # Additional fields added by Craig Heffner
733 #
734 0       string          bFLT            BFLT executable 
735 >4      belong          x               version %ld, 
736 >4      belong          4
737 >8      belong          x               code offset: 0x%.8X, 
738 >12     belong          x               data segment starts at: 0x%.8X, 
739 >16     belong          x               bss segment starts at: 0x%.8X, 
740 >20     belong          x               bss segment ends at: 0x%.8X, 
741 >24     belong          x               stack size: %d bytes, 
742 >28     belong          x               relocation records start at: 0x%.8X, 
743 >32     belong          x               number of reolcation records: %d, 
744 >>36    belong&0x1      0x1             ram
745 >>36    belong&0x2      0x2             gotpic
746 >>36    belong&0x4      0x4             gzip
747 >>36    belong&0x8      0x8             gzdata
748
749
750 #-----------------------------------------------------------------
751 # MIPS COFF file formats
752 #
753 0       beshort 0x0160          MIPSEB ECOFF executable
754 >20     beshort 0407            (impure)
755 >20     beshort 0410            (swapped)
756 >20     beshort 0413            (paged)
757 >8      belong  >0              not stripped
758 >8      belong  0               stripped
759 >22     byte    x               - version %ld
760 >23     byte    x               ^H.%ld
761 #
762 0       beshort 0x0162          MIPSEL-BE ECOFF executable
763 >20     beshort 0407            (impure)
764 >20     beshort 0410            (swapped)
765 >20     beshort 0413            (paged)
766 >8      belong  >0              not stripped
767 >8      belong  0               stripped
768 >23     byte    x               - version %d
769 >22     byte    x               ^H.%ld
770 #
771 0       beshort 0x6001          MIPSEB-LE ECOFF executable
772 >20     beshort 03401           (impure)
773 >20     beshort 04001           (swapped)
774 >20     beshort 05401           (paged)
775 >8      belong  >0              not stripped
776 >8      belong  0               stripped
777 >23     byte    x               - version %d
778 >22     byte    x               ^H.%ld
779 #
780 0       beshort 0x6201          MIPSEL ECOFF executable
781 >20     beshort 03401           (impure)
782 >20     beshort 04001           (swapped)
783 >20     beshort 05401           (paged)
784 >8      belong  >0              not stripped
785 >8      belong  0               stripped
786 >23     byte    x               - version %ld
787 >22     byte    x               ^H.%ld
788 # MIPS 2 additions
789 #
790 0       beshort 0x0163          MIPSEB MIPS-II ECOFF executable
791 >20     beshort 0407            (impure)
792 >20     beshort 0410            (swapped)
793 >20     beshort 0413            (paged)
794 >8      belong  >0              not stripped
795 >8      belong  0               stripped
796 >22     byte    x               - version %ld
797 >23     byte    x               ^H.%ld
798 #
799 0       beshort 0x0166          MIPSEL-BE MIPS-II ECOFF executable
800 >20     beshort 0407            (impure)
801 >20     beshort 0410            (swapped)
802 >20     beshort 0413            (paged)
803 >8      belong  >0              not stripped
804 >8      belong  0               stripped
805 >22     byte    x               - version %ld
806 >23     byte    x               ^H.%ld
807 #
808 0       beshort 0x6301          MIPSEB-LE MIPS-II ECOFF executable
809 >20     beshort 03401           (impure)
810 >20     beshort 04001           (swapped)
811 >20     beshort 05401           (paged)
812 >8      belong  >0              not stripped
813 >8      belong  0               stripped
814 >23     byte    x               - version %ld
815 >22     byte    x               ^H.%ld
816 #
817 0       beshort 0x6601          MIPSEL MIPS-II ECOFF executable
818 >20     beshort 03401           (impure)
819 >20     beshort 04001           (swapped)
820 >20     beshort 05401           (paged)
821 >8      belong  >0              not stripped
822 >8      belong  0               stripped
823 >23     byte    x               - version %ld
824 >22     byte    x               ^H.%ld
825 # MIPS 3 additions
826 #
827 0       beshort 0x0140          MIPSEB MIPS-III ECOFF executable
828 >20     beshort 0407            (impure)
829 >20     beshort 0410            (swapped)
830 >20     beshort 0413            (paged)
831 >8      belong  >0              not stripped
832 >8      belong  0               stripped
833 >22     byte    x               - version %ld
834 >23     byte    x               ^H.%ld
835 #
836 0       beshort 0x0142          MIPSEL-BE MIPS-III ECOFF executable
837 >20     beshort 0407            (impure)
838 >20     beshort 0410            (swapped)
839 >20     beshort 0413            (paged)
840 >8      belong  >0              not stripped
841 >8      belong  0               stripped
842 >22     byte    x               - version %ld
843 >23     byte    x               ^H.%ld
844 #
845 0       beshort 0x4001          MIPSEB-LE MIPS-III ECOFF executable
846 >20     beshort 03401           (impure)
847 >20     beshort 04001           (swapped)
848 >20     beshort 05401           (paged)
849 >8      belong  >0              not stripped
850 >8      belong  0               stripped
851 >23     byte    x               - version %ld
852 >22     byte    x               ^H.%ld
853 #
854 0       beshort 0x4201          MIPSEL MIPS-III ECOFF executable
855 >20     beshort 03401           (impure)
856 >20     beshort 04001           (swapped)
857 >20     beshort 05401           (paged)
858 >8      belong  >0              not stripped
859 >8      belong  0               stripped
860 >23     byte    x               - version %ld
861 >22     byte    x               ^H.%ld
862 #
863 0       beshort 0x180           MIPSEB Ucode
864 0       beshort 0x182           MIPSEL-BE Ucode
865
866
867 # Windows CE package files
868 0       string          MSCE\0\0\0\0    Microsoft WinCE installer
869 >20     lelong          0               \b, architecture-independent
870 >20     lelong          103             \b, Hitachi SH3
871 >20     lelong          104             \b, Hitachi SH4
872 >20     lelong          0xA11           \b, StrongARM
873 >20     lelong          4000            \b, MIPS R4000
874 >20     lelong          10003           \b, Hitachi SH3
875 >20     lelong          10004           \b, Hitachi SH3E
876 >20     lelong          10005           \b, Hitachi SH4
877 >20     lelong          70001           \b, ARM 7TDMI
878 >52     leshort         1               \b, 1 file
879 >52     leshort         >1              \b, %u files
880 >56     leshort         1               \b, 1 registry entry
881 >56     leshort         >1              \b, %u registry entries
882
883 #------------------------------------------------------------------------------
884 # Microsoft Xbox executables .xbe (Esa Hyytiä <ehyytia@cc.hut.fi>)
885 0       string          XBEH            XBE, Microsoft Xbox executable
886 # probabilistic checks whether signed or not
887 >0x0004 ulelong =0x0
888 >>&2    ulelong =0x0
889 >>>&2   ulelong =0x0  \b, not signed
890 >0x0004 ulelong >0
891 >>&2    ulelong >0
892 >>>&2   ulelong >0    \b, signed
893 # expect base address of 0x10000
894 >0x0104               ulelong =0x10000
895 >>(0x0118-0x0FF60)    ulelong&0x80000007  0x80000007 \b, all regions
896 >>(0x0118-0x0FF60)    ulelong&0x80000007  !0x80000007
897 >>>(0x0118-0x0FF60)   ulelong >0           (regions:
898 >>>>(0x0118-0x0FF60)  ulelong &0x00000001  NA
899 >>>>(0x0118-0x0FF60)  ulelong &0x00000002  Japan
900 >>>>(0x0118-0x0FF60)  ulelong &0x00000004  Rest_of_World
901 >>>>(0x0118-0x0FF60)  ulelong &0x80000000  Manufacturer
902 >>>(0x0118-0x0FF60)   ulelong >0           \b)
903
904 #------------------------------------------------------------------------------
905 # motorola:  file(1) magic for Motorola 68K and 88K binaries
906 #
907 # 68K
908 #
909 0       beshort         0x0208          mc68k COFF
910 >18     beshort         ^00000020       object
911 >18     beshort         &00000020       executable
912 >12     belong          >0              not stripped
913 >168    string          .lowmem         Apple toolbox
914 >20     beshort         0407            (impure)
915 >20     beshort         0410            (pure)
916 >20     beshort         0413            (demand paged)
917 >20     beshort         0421            (standalone)
918 0       beshort         0x0209          mc68k executable (shared)
919 >12     belong          >0              not stripped
920 0       beshort         0x020A          mc68k executable (shared demand paged)
921 >12     belong          >0              not stripped
922
923
924 #
925 # Motorola/UniSoft 68K Binary Compatibility Standard (BCS)
926 #
927 0       beshort         0x022A            68K BCS executable
928 #
929 # 88K
930 #
931 # Motorola/88Open BCS
932 #
933 0       beshort         0x022B            88K BCS executable
934
935 #------------------------------------------------------------------------------
936 # Sony Playstation executables (Adam Sjoegren <asjo@diku.dk>) :
937 0       string  PS-X\x20EXE       Sony Playstation executable
938 #  Area:
939 >113    string  x               (%s)
940
941 #------------------------------------------------------------------------------
942 # cisco:  file(1) magic for cisco Systems routers
943 #
944 # Most cisco file-formats are covered by the generic elf code
945 #
946 # Microcode files are non-ELF, 0x8501 conflicts with NetBSD/alpha.
947 0       beshort                 0x8501      cisco IOS
948 >0      belong&0xffffff00       0x85011400  microcode
949 >0      belong&0xffffff00       0x8501cb00  experimental microcode
950 >7      string                  >\0         for '%s'
951
952
953
954 #--------------------File Systems---------------------
955
956 # Minix filesystems - Juan Cespedes <cespedes@debian.org>
957 # Disabled for now until better signatures can be created. Too many false positives.
958 #0x410   leshort         0x137f          Minix filesystem
959 #>0x402  beshort         !0              \b, %d zones
960 #>0x1e   string          minix           \b, bootable
961 #0x410   leshort         0x138f          Minix filesystem, 30 char names
962 #0x410   leshort         0x2468          Minix filesystem, version 2
963 #0x410   leshort         0x2478          Minix filesystem, version 2, 30 char names
964
965 #0x410   beshort         0x137f          Minix filesystem (big endian)
966 #>0x402  beshort         !0              \b, %d zones
967 #>0x1e   string          minix           \b, bootable
968 #0x410   beshort         0x138f          Minix filesystem (big endian), 30 char names
969 #0x410   beshort         0x2468          Minix filesystem (big endian), version 2
970 #0x410   beshort         0x2478          Minix filesystem (big endian), version 2, 30 char names
971
972 # YAFFS
973 0       belong  0x03000000
974 >4      belong  0x01000000
975 >>8     beshort 0xFFFF          YAFFS filesystem
976
977 # EFS2 file system - jojo@utulsa.edu
978 8       string EFSSuper         EFS2 Qualcomm filesystem super block,
979 >0      lelong 0x53000000       little endian,
980 >>4     leshort &1              NAND
981 >>4     leshort ^1              NOR
982 >>4     leshort x               version 0x%x,
983 >>24    lelong  x               %d blocks,
984 >>16    lelong  x               0x%x pages per block,
985 >>20    lelong  x               0x%x bytes per page
986
987 8       string SSFErepu         EFS2 Qualcomm filesystem super block,
988 >0      belong 0x53000000       big endian,
989 >>4     beshort &1              NAND
990 >>4     beshort ^1              NOR
991 >>4     beshort x               version 0x%x,
992 >>24    belong  x               %d blocks,
993 >>16    belong  x               0x%x pages per block,
994 >>20    belong  x               0x%x bytes per page
995
996 # TROC file system
997 0       string  TROC            TROC filesystem,
998 >4      lelong  x               %d file entries
999
1000 # PFS file system
1001 0       string  PFS/            PFS filesystem,
1002 >4      string  x               version %s,
1003 >14     leshort x               %d files
1004
1005 # MPFS file system
1006 0       string  MPFS            MPFS (Microchip) filesystem,
1007 >4      byte    x               version %d.
1008 >5      byte    x               \b%d,
1009 >6      leshort x               %d file entries
1010
1011 # cramfs filesystem - russell@coker.com.au
1012 0       lelong  0x28cd3d45      CramFS filesystem, little endian
1013 >4      lelong  <0              invalid
1014 >4      lelong  x               size %lu
1015 >8      lelong  &1              version #2
1016 >8      lelong  &2              sorted_dirs
1017 >8      lelong  &4              hole_support
1018 >32     lelong  x               CRC 0x%x,
1019 >36     lelong  x               edition %lu,
1020 >40     lelong  <0              invalid
1021 >40     lelong  x               %lu blocks,
1022 >44     lelong  <0              invalid
1023 >44     lelong  x               %lu files
1024
1025 0       belong  0x28cd3d45      CramFS filesystem, big endian
1026 >4      belong  <0              invalid
1027 >4      belong  x               size %lu
1028 >8      belong  &1              version #2
1029 >8      belong  &2              sorted_dirs
1030 >8      belong  &4              hole_support
1031 >32     belong  x               CRC 0x%x,
1032 >36     belong  x               edition %lu,
1033 >40     belong  <0              invalid
1034 >40     belong  x               %lu blocks,
1035 >44     belong  <0              invalid
1036 >44     belong  x               %lu files
1037
1038
1039
1040 # JFFS2 file system
1041 0       leshort 0x1984          JFFS2 filesystem (old) data little endian,
1042 >4      lelong  >1000000        invalid
1043 >4      lelong  <0              invalid
1044 >4      lelong  0               invalid
1045 >4      lelong  x               JFFS node length: %d
1046
1047 0       beshort 0x1984          JFFS2 filesystem (old) data big endian,
1048 >4      belong  >1000000        invalid
1049 >4      belong  <0              invalid
1050 >4      belong  0               invalid
1051 >4      belong  x               JFFS node length: %d
1052
1053 0       leshort 0x1985          JFFS2 filesystem data little endian,
1054 >4      lelong  >1000000        invalid
1055 >4      lelong  <0              invalid
1056 >4      lelong  0               invalid
1057 >4      lelong  x               JFFS node length: %d
1058
1059 0       beshort 0x1985          JFFS2 filesystem data big endian,
1060 >4      belong  >1000000        invalid
1061 >4      belong  <0              invalid
1062 >4      belong  0               invalid
1063 >4      belong  x               JFFS node length: %d
1064
1065
1066 # Squashfs
1067 0       string  sqsh    Squashfs filesystem, big endian,
1068 >28     beshort >10     invalid
1069 >28     beshort <1      invalid
1070 >28     beshort x       version %d.
1071 >30     beshort x       \b%d,
1072 >28     beshort >3      compression:
1073 >>20    beshort 1       \bgzip,
1074 >>20    beshort 2       \blzma,
1075 >28     beshort <3
1076 >>8     belong  x       size: %d bytes,
1077 >28     beshort 3
1078 >>63    bequad x        size: %lld bytes,
1079 >28     beshort >3
1080 >>40    bequad  x       size: %lld bytes,
1081 >4      belong  x       %d inodes,
1082 >28     beshort >3
1083 >>12    belong          blocksize: %d bytes,
1084 >28     beshort <2
1085 >>32    beshort x       blocksize: %d bytes,
1086 >28     beshort 2
1087 >>51    belong  x       blocksize: %d bytes,
1088 >28     beshort 3
1089 >>51    belong  x       blocksize: %d bytes,
1090 >28     beshort >3
1091 >>12    belong  x       blocksize: %d bytes,
1092 >28     beshort <4
1093 >>39    bedate  x       created: %s
1094 >28     beshort >3
1095 >>8     bedate x        created: %s
1096
1097 0       string  hsqs    Squashfs filesystem, little endian,
1098 >28     leshort >10     invalid
1099 >28     leshort <1      invalid
1100 >28     leshort x       version %d.
1101 >30     leshort x       \b%d,
1102 >28     leshort >3      compression: 
1103 >>20    leshort 1       \bgzip,
1104 >>20    leshort 2       \blzma,
1105 >28     leshort <3
1106 >>8     lelong  x       size: %d bytes,
1107 >28     leshort 3
1108 >>63    lequad x        size: %lld bytes,
1109 >28     leshort >3      
1110 >>40    lequad  x       size: %lld bytes,
1111 >4      lelong  x       %d inodes,
1112 >28     leshort >3
1113 >>12    lelong          blocksize: %d bytes,
1114 >28     leshort <2
1115 >>32    leshort x       blocksize: %d bytes,
1116 >28     leshort 2
1117 >>51    lelong  x       blocksize: %d bytes,
1118 >28     leshort 3
1119 >>51    lelong  x       blocksize: %d bytes,
1120 >28     leshort >3      
1121 >>12    lelong  x       blocksize: %d bytes,
1122 >28     leshort <4
1123 >>39    ledate  x       created: %s
1124 >28     leshort >3
1125 >>8     ledate x        created: %s
1126
1127 # Squashfs with LZMA compression
1128 0       string  sqlz    Squashfs filesystem, big endian, lzma compression, 
1129 >28     beshort >10     invalid
1130 >28     beshort <1      invalid
1131 >28     beshort x       version %d.
1132 >30     beshort x       \b%d,
1133 >28     beshort <3
1134 >>8     belong  x       size: %d bytes,
1135 >28     beshort >2
1136 >>63    bequad x        size: %lld bytes,
1137 #>>67   belong  x       %d bytes,
1138 >4      belong  x       %d inodes,
1139 >28     beshort <2
1140 >>32    beshort x       blocksize: %d bytes,
1141 >28     beshort >1
1142 >>51    belong  x       blocksize: %d bytes,
1143 >39     bedate  x       created: %s
1144
1145 # Squashfs 3.3 LZMA signature
1146 0       string  qshs    Squashfs filesystem, big endian, lzma signature,
1147 >28     beshort >10     invalid
1148 >28     beshort <1      invalid
1149 >28     beshort x       version %d.
1150 >30     beshort x       \b%d,
1151 >28     beshort <3
1152 >>8     belong  x       size: %d bytes,
1153 >28     beshort >2
1154 >>63    bequad x        size: %lld bytes,
1155 #>>67   belong  x       %d bytes,
1156 >4      belong  x       %d inodes,
1157 >28     beshort <2
1158 >>32    beshort x       blocksize: %d bytes,
1159 >28     beshort >1
1160 >>51    belong  x       blocksize: %d bytes,
1161 >39     bedate  x       created: %s
1162
1163 # Squashfs for DD-WRT
1164 0       string  tqsh    Squashfs filesystem, big endian, DD-WRT signature,
1165 >28     beshort >10     invalid
1166 >28     beshort <1      invalid
1167 >28     beshort x       version %d.
1168 >30     beshort x       \b%d,
1169 >28     beshort <3
1170 >>8     belong  x       size: %d bytes,
1171 >28     beshort >2
1172 >>63    bequad x        size: %lld bytes,
1173 #>>67   belong  x       %d bytes,
1174 >4      belong  x       %d inodes,
1175 >28     beshort <2
1176 >>32    beshort x       blocksize: %d bytes,
1177 >28     beshort >1
1178 >>51    belong  x       blocksize: %d bytes,
1179 >39     bedate  x       created: %s
1180
1181 # Squashfs for DD-WRT
1182 0       string  hsqt    Squashfs filesystem, little endian, DD-WRT signature,
1183 >28     leshort >10     invalid
1184 >28     leshort <1      invalid
1185 >28     leshort x       version %d.
1186 >30     leshort x       \b%d,
1187 >28     leshort <3
1188 >>8     lelong  x       size: %d bytes,
1189 >28     leshort >2
1190 >>63    lequad x        size: %lld bytes,
1191 #>>63   lelong  x       %d bytes,
1192 >4      lelong  x       %d inodes,
1193 >28     leshort <2
1194 >>32    leshort x       blocksize: %d bytes,
1195 >28     leshort >1
1196 >>51    lelong  x       blocksize: %d bytes,
1197 >39     ledate  x       created: %s
1198
1199 # Non-standard Squashfs signature found on some D-Link routers
1200 0       string  shsq    Squashfs filesystem, little endian, non-standard signature, 
1201 >28     leshort >10     invalid
1202 >28     leshort <1      invalid
1203 >28     leshort x       version %d.
1204 >30     leshort x       \b%d,
1205 >28     leshort <3
1206 >>8     lelong  x       size: %d bytes,
1207 >28     leshort >2
1208 >>63    lequad x        size: %lld bytes,
1209 #>>63   lelong  x       %d bytes,
1210 >4      lelong  x       %d inodes,
1211 >28     leshort <2
1212 >>32    leshort x       blocksize: %d bytes,
1213 >28     leshort >1
1214 >>51    lelong  x       blocksize: %d bytes,
1215 >39     ledate  x       created: %s
1216
1217 # Commented out for now - unlikely to be found in firmware
1218 # CDROM Filesystems
1219 # Modified for UDF by gerardo.cacciari@gmail.com
1220 #32769   string    CD001     #
1221 #!:mime  application/x-iso9660-image
1222 #>38913  string   !NSR0      ISO 9660 CD-ROM filesystem data
1223 #>38913  string    NSR0      UDF filesystem data
1224 #>>38917 string    1         (version 1.0)
1225 #>>38917 string    2         (version 1.5)
1226 #>>38917 string    3         (version 2.0)
1227 #>>38917 byte     >0x33      (unknown version, ID 0x%X)
1228 #>>38917 byte     <0x31      (unknown version, ID 0x%X)
1229 # "application id" which appears to be used as a volume label
1230 #>32808  string    >\0       '%s'
1231 #>34816  string    \000CD001\001EL\x20TORITO\x20SPECIFICATION    (bootable)
1232 #37633   string    CD001     ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
1233 #!:mime  application/x-iso9660-image
1234 #32776   string    CDROM     High Sierra CD-ROM filesystem data
1235
1236 # reiserfs - russell@coker.com.au
1237 0x10034         string  ReIsErFs        ReiserFS filesystem V3.5
1238 0x10034         string  ReIsEr2Fs       ReiserFS filesystem V3.6
1239 0x10034         string  ReIsEr3Fs       ReiserFS filesystem V3.6.19
1240 >0x1002c        leshort x               block size %d
1241 >0x10032        leshort &2              (mounted or unclean)
1242 >0x10000        lelong  x               num blocks %d
1243 >0x10040        lelong  1               tea hash
1244 >0x10040        lelong  2               yura hash
1245 >0x10040        lelong  3               r5 hash
1246
1247
1248 # ext2/ext3 filesystems - Andreas Dilger <adilger@dilger.ca>
1249 # ext4 filesystem - Eric Sandeen <sandeen@sandeen.net>
1250 # volume label and UUID Russell Coker
1251 # http://etbe.coker.com.au/2008/07/08/label-vs-uuid-vs-device/
1252 0x438   leshort         0xEF53          Linux EXT filesystem
1253 >0x44c  lelong          <0              invalid
1254 >0x44c  lelong          >4              invalid
1255 >0x44c  lelong          x               rev %d
1256 >0x43e  leshort         x               \b.%d
1257 # No journal?  ext2
1258 >0x45c  lelong          ^0x0000004      ext2 filesystem data
1259 >>0x43a leshort         ^0x0000001      (mounted or unclean)
1260 # Has a journal?  ext3 or ext4
1261 >0x45c  lelong          &0x0000004
1262 #  and small INCOMPAT?
1263 >>0x460 lelong          <0x0000040
1264 #   and small RO_COMPAT?
1265 >>>0x464 lelong         <0x0000008      ext3 filesystem data
1266 #   else large RO_COMPAT?
1267 >>>0x464 lelong         >0x0000007      ext4 filesystem data
1268 #  else large INCOMPAT?
1269 >>0x460 lelong          >0x000003f      ext4 filesystem data
1270 >0x468  belong          x               \b, UUID=%08x
1271 >0x46c  beshort         x               \b-%04x
1272 >0x46e  beshort         x               \b-%04x
1273 >0x470  beshort         x               \b-%04x
1274 >0x472  belong          x               \b-%08x
1275 >0x476  beshort         x               \b%04x
1276 >0x478  string          >0              \b, volume name "%s"
1277 # General flags for any ext* fs
1278 >0x460  lelong          &0x0000004      (needs journal recovery)
1279 >0x43a  leshort         &0x0000002      (errors, invalid)
1280 # INCOMPAT flags
1281 >0x460  lelong          &0x0000001      (compressed)
1282 #>0x460 lelong          &0x0000002      (filetype)
1283 #>0x460 lelong          &0x0000010      (meta bg)
1284 >0x460  lelong          &0x0000040      (extents)
1285 >0x460  lelong          &0x0000080      (64bit)
1286 #>0x460 lelong          &0x0000100      (mmp)
1287 #>0x460 lelong          &0x0000200      (flex bg)
1288 # RO_INCOMPAT flags
1289 #>0x464 lelong          &0x0000001      (sparse super)
1290 >0x464  lelong          &0x0000002      (large files)
1291 >0x464  lelong          &0x0000008      (huge files)
1292 #>0x464 lelong          &0x0000010      (gdt checksum)
1293
1294
1295 #romfs filesystems - Juan Cespedes <cespedes@debian.org>
1296 0       string          -rom1fs-        romfs filesystem, version 1
1297 >8      belong  >10000000               invalid
1298 >8      belong  x                       size: %d bytes,
1299 >16     string  x                       named %s.
1300
1301 # JFFS - russell@coker.com.au           
1302 0       lelong  0x34383931      Linux Journalled Flash filesystem, little endian
1303 0       belong  0x34383931      Linux Journalled Flash filesystem, big endian
1304
1305 # Wind River MemFS file system, found in some VxWorks devices
1306 0       string  owowowowowowowowowowowowowowow          Wind River management filesystem,
1307 >32     belong  0                                       uncompressed
1308 >32     belong  1                                       compressed,
1309 >36     belong  x                                       %d files
1310
1311
1312 # FATX 
1313 0               string          FATX            FATX filesystem data
1314
1315
1316
1317
1318
1319 # updated by Joerg Jenderek at Sep 2007
1320 # only for sector sizes with 512 or more Bytes
1321 0x1FE   leshort 0xAA55                  start boot sector
1322 # to do also for sectors < than 512 Bytes and some other files, GRR
1323 #30     search/481      \x55\xAA        start boot sector / filesystem
1324 # not for BeOS floppy 1440k, MBRs
1325 #(11.s-2) uleshort      0xAA55          start boot sector / filesystem
1326 >2      string  OSBS                    \b, OS/BS MBR
1327 # J\xf6rg Jenderek <joerg dot jenderek at web dot de>
1328 >0x8C   string  Invalid\x20partition\x20table   \b, MS-DOS MBR
1329 # dr-dos with some upper-, lowercase variants
1330 >0x9D   string  Invalid\x20partition\x20table$  
1331 >>181   string  No\x20Operating\x20System$              
1332 >>>201  string  Operating\x20System\x20load\x20error$   \b, DR-DOS MBR, Version 7.01 to 7.03
1333 >0x9D   string  Invalid\x20partition\x20table$  
1334 >>181   string  No\x20operating\x20system$              
1335 >>>201  string  Operating\x20system\x20load\x20error$   \b, DR-DOS MBR, Version 7.01 to 7.03
1336 >342    string  Invalid\x20partition\x20table$  
1337 >>366   string  No\x20operating\x20system$              
1338 >>>386  string  Operating\x20system\x20load\x20error$   \b, DR-DOS MBR, version 7.01 to 7.03
1339 >295    string  NEWLDR\0                                
1340 >>302   string  Bad\x20PT\x20$                          
1341 >>>310  string  No\x20OS\x20$                           
1342 >>>>317 string  OS\x20load\x20err$                              
1343 >>>>>329        string  Moved\x20or\x20missing\x20IBMBIO.LDR\n\r        
1344 >>>>>>358       string  Press\x20any\x20key\x20to\x20continue.\n\r$     
1345 >>>>>>>387      string  Copyright\x20(c)\x201984,1998   
1346 >>>>>>>>411     string  Caldera\x20Inc.\0               \b, DR-DOS MBR (IBMBIO.LDR)
1347 >0x10F  string  Ung\201ltige\x20Partitionstabelle       \b, MS-DOS MBR, german version 4.10.1998, 4.10.2222
1348 >>0x1B8 ubelong >0                              \b, Serial 0x%-.4x
1349 >0x8B   string  Ung\201ltige\x20Partitionstabelle       \b, MS-DOS MBR, german version 5.00 to 4.00.950
1350 >271    string  Invalid\x20partition\x20table\0         
1351 >>295   string  Error\x20loading\x20operating\x20system\0       
1352 >>>326  string  Missing\x20operating\x20system\0                \b, mbr
1353 #
1354 >139    string  Invalid\x20partition\x20table\0         
1355 >>163   string  Error\x20loading\x20operating\x20system\0       
1356 >>>194  string  Missing\x20operating\x20system\0                \b, Microsoft Windows XP mbr
1357 # http://www.heise.de/ct/05/09/006/ page 184
1358 #HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\DosDevices\?:=Serial4Bytes+8Bytes
1359 >>>>0x1B8       ulelong >0                              \b,Serial 0x%-.4x
1360 >300    string  Invalid\x20partition\x20table\0 
1361 >>324   string  Error\x20loading\x20operating\x20system\0
1362 >>>355  string  Missing\x20operating\x20system\0                \b, Microsoft Windows XP MBR
1363 #??>>>389       string  Invalid\x20system\x20disk               
1364 >>>>0x1B8       ulelong >0                              \b, Serial 0x%-.4x
1365 >300    string  Ung\201ltige\x20Partitionstabelle
1366 #split string to avoid error: String too long
1367 >>328   string  Fehler\x20beim\x20Laden\x20     
1368 >>>346  string  des\x20Betriebssystems  
1369 >>>>366 string  Betriebssystem\x20nicht\x20vorhanden    \b, Microsoft Windows XP MBR (german)
1370 >>>>>0x1B8      ulelong >0                              \b, Serial 0x%-.4x
1371 #>0x145 string  Default:\x20F                           \b, FREE-DOS MBR
1372 #>0x14B string  Default:\x20F                           \b, FREE-DOS 1.0 MBR
1373 >0x145  search/7        Default:\x20F                   \b, FREE-DOS MBR
1374 #>>313          string  F0\x20.\x20.\x20.                       
1375 #>>>322         string  disk\x201                               
1376 #>>>>382        string  FAT3                            
1377 >64     string  no\x20active\x20partition\x20found      
1378 >>96    string  read\x20error\x20while\x20reading\x20drive      \b, FREE-DOS Beta 0.9 MBR
1379 # Ranish Partition Manager http://www.ranish.com/part/
1380 >387    search/4        \0\x20Error!\r                  
1381 >>378   search/7        Virus!                          
1382 >>>397  search/4        Booting\x20                     
1383 >>>>408 search/4        HD1/\0                          \b, Ranish MBR (
1384 >>>>>416        string  Writing\x20changes...           \b2.37
1385 >>>>>>438       ubyte           x                       \b,0x%x dots
1386 >>>>>>440       ubyte           >0                      \b,virus check
1387 >>>>>>441       ubyte           >0                      \b,partition %c
1388 #2.38,2.42,2.44
1389 >>>>>416        string  !Writing\x20changes...          \b
1390 >>>>>>418       ubyte   1                               \bvirus check,
1391 >>>>>>419       ubyte   x                               \b0x%x seconds
1392 >>>>>>420       ubyte&0x0F      >0                      \b,partition
1393 >>>>>>>420      ubyte&0x0F      <5                      \b %x
1394 >>>>>>>420      ubyte&0x0F      0Xf                     \b ask
1395 >>>>>420        ubyte           x                       \b)
1396 #
1397 >271    string  Operating\x20system\x20loading          
1398 >>296   string  error\r                                 \b, SYSLINUX MBR (2.10)
1399 # http://www.acronis.de/
1400 >362    string  MBR\x20Error\x20\0\r                    
1401 >>376   string  ress\x20any\x20key\x20to\x20                    
1402 >>>392  string  boot\x20from\x20floppy...\0                     \b, Acronis MBR
1403 # added by Joerg Jenderek
1404 # http://www.visopsys.org/
1405 # http://partitionlogic.org.uk/
1406 >309    string  No\x20bootable\x20partition\x20found\r  
1407 >>339   string  I/O\x20Error\x20reading\x20boot\x20sector\r     \b, Visopsys MBR
1408 >349    string  No\x20bootable\x20partition\x20found\r  
1409 >>379   string  I/O\x20Error\x20reading\x20boot\x20sector\r     \b, simple Visopsys MBR
1410 # bootloader, bootmanager
1411 >0x40   string  SBML                            
1412 # label with 11 characters of FAT 12 bit filesystem
1413 >>43    string  SMART\x20BTMGR                  
1414 >>>430  string  SBMK\x20Bad!\r                  \b, Smart Boot Manager
1415 # OEM-ID not always "SBM"
1416 #>>>>3  strings SBM                             
1417 >>>>6   string  >\0                             \b, version %s
1418 >382    string  XOSLLOADXCF                     \b, eXtended Operating System Loader
1419 >6      string  LILO                            \b, LInux i386 boot LOader
1420 >>120   string  LILO                            \b, version 22.3.4 SuSe
1421 >>172   string  LILO                            \b, version 22.5.8 Debian
1422 # updated by Joerg Jenderek at Oct 2008
1423 # variables according to grub-0.97/stage1/stage1.S or
1424 # http://www.gnu.org/software/grub/manual/grub.html#Embedded-data
1425 # usual values are marked with comments to get only informations of strange GRUB loaders
1426 >342            search/60       \0Geom\0        
1427 #>0             ulelong         x               %x=0x009048EB , 0x2a9048EB  0
1428 >>0x41          ubyte           <2              
1429 >>>0x3E         ubyte           >2              \b; GRand Unified Bootloader
1430 # 0x3 for 0.5.95,0.93,0.94,0.96 0x4 for 1.90 
1431 >>>>0x3E        ubyte           x               \b, stage1 version 0x%x
1432 #If it is 0xFF, use a drive passed by BIOS
1433 >>>>0x40        ubyte           <0xFF           \b, boot drive 0x%x
1434 # in most case 0,1,0x2e for GRUB 0.5.95
1435 >>>>0x41        ubyte           >0              \b, LBA flag 0x%x
1436 >>>>0x42        uleshort        <0x8000         \b, stage2 address 0x%x
1437 #>>>>0x42       uleshort        =0x8000         \b, stage2 address 0x%x (usual)
1438 >>>>0x42        uleshort        >0x8000         \b, stage2 address 0x%x
1439 #>>>>0x44       ulelong         =1              \b, 1st sector stage2 0x%x (default)
1440 >>>>0x44        ulelong         >1              \b, 1st sector stage2 0x%x
1441 >>>>0x48        uleshort        <0x800          \b, stage2 segment 0x%x
1442 #>>>>0x48       uleshort        =0x800          \b, stage2 segment 0x%x (usual)
1443 >>>>0x48        uleshort        >0x800          \b, stage2 segment 0x%x
1444 >>>>402         string  Geom\0Hard\x20Disk\0Read\0\x20Error\0
1445 >>>>>394        string  stage1                  \b, GRUB version 0.5.95
1446 >>>>382         string  Geom\0Hard\x20Disk\0Read\0\x20Error\0
1447 >>>>>376        string  GRUB\x20\0              \b, GRUB version 0.93 or 1.94
1448 >>>>383         string  Geom\0Hard\x20Disk\0Read\0\x20Error\0
1449 >>>>>377        string  GRUB\x20\0              \b, GRUB version 0.94
1450 >>>>385         string  Geom\0Hard\x20Disk\0Read\0\x20Error\0
1451 >>>>>379        string  GRUB\x20\0              \b, GRUB version 0.95 or 0.96
1452 >>>>391         string  Geom\0Hard\x20Disk\0Read\0\x20Error\0
1453 >>>>>385        string  GRUB\x20\0              \b, GRUB version 0.97
1454 #unkown version
1455 >>>343          string  Geom\0Read\0\x20Error\0 
1456 >>>>321         string  Loading\x20stage1.5     \b, GRUB version x.y
1457 >>>380          string  Geom\0Hard\x20Disk\0Read\0\x20Error\0
1458 >>>>374         string  GRUB\x20\0              \b, GRUB version n.m
1459 # http://syslinux.zytor.com/
1460 >478    string  Boot\x20failed\r                        
1461 >>495   string  LDLINUX\x20SYS                  \b, SYSLINUX bootloader (1.62)
1462 >480    string  Boot\x20failed\r                        
1463 >>495   string  LDLINUX\x20SYS                  \b, SYSLINUX bootloader (2.06 or 2.11)
1464 >484    string  Boot\x20error\r                 \b, SYSLINUX bootloader (3.11)
1465 >395    string  chksum\0\x20ERROR!\0            \b, Gujin bootloader
1466 # http://www.bcdwb.de/bcdw/index_e.htm
1467 >3      string  BCDL                            
1468 >>498   string  BCDL\x20\x20\x20\x20BIN                 \b, Bootable CD Loader (1.50Z)
1469 # mbr partion table entries
1470 # OEM-ID does not contain MicroSoft,NEWLDR,DOS,SYSLINUX,or MTOOLs
1471 >3                      string          !MS
1472 >>3                     string          !SYSLINUX
1473 >>>3                    string          !MTOOL
1474 >>>>3                   string          !NEWLDR
1475 >>>>>5                  string          !DOS
1476 # not FAT (32 bit)
1477 >>>>>>82                string          !FAT32
1478 #not Linux kernel
1479 >>>>>>>514              string          !HdrS
1480 #not BeOS
1481 >>>>>>>>422             string          !Be\x20Boot\x20Loader
1482 # active flag 0 or 0x80 and type > 0
1483 >>>>>>>>>446            ubyte           <0x81   
1484 >>>>>>>>>>446           ubyte&0x7F      0       
1485 >>>>>>>>>>>450          ubyte           >0      \b; partition 1: ID=0x%x
1486 >>>>>>>>>>>>446         ubyte           0x80    \b, active
1487 >>>>>>>>>>>>447         ubyte           x       \b, starthead %u
1488 #>>>>>>>>>>>>448                ubyte           x       \b, start C_S: 0x%x
1489 #>>>>>>>>>>>>448                ubeshort&1023   x       \b, startcylinder? %d
1490 >>>>>>>>>>>>454         ulelong         x       \b, startsector %u
1491 >>>>>>>>>>>>458         ulelong         x       \b, %u sectors
1492 #
1493 >>>>>>>>>462            ubyte           <0x81   
1494 >>>>>>>>>>462           ubyte&0x7F      0               
1495 >>>>>>>>>>>466          ubyte           >0      \b; partition 2: ID=0x%x
1496 >>>>>>>>>>>>462         ubyte           0x80    \b, active
1497 >>>>>>>>>>>>463         ubyte           x       \b, starthead %u
1498 #>>>>>>>>>>>>464                ubyte           x       \b, start C_S: 0x%x
1499 #>>>>>>>>>>>>464                ubeshort&1023   x       \b, startcylinder? %d
1500 >>>>>>>>>>>>470         ulelong         x       \b, startsector %u
1501 >>>>>>>>>>>>474         ulelong         x       \b, %u sectors
1502 #
1503 >>>>>>>>>478            ubyte           <0x81           
1504 >>>>>>>>>>478           ubyte&0x7F      0               
1505 >>>>>>>>>>>482          ubyte           >0      \b; partition 3: ID=0x%x
1506 >>>>>>>>>>>>478         ubyte           0x80    \b, active
1507 >>>>>>>>>>>>479         ubyte           x       \b, starthead %u
1508 #>>>>>>>>>>>>480                ubyte           x       \b, start C_S: 0x%x
1509 #>>>>>>>>>>>>481                ubyte           x       \b, start C2S: 0x%x
1510 #>>>>>>>>>>>>480                ubeshort&1023   x       \b, startcylinder? %d
1511 >>>>>>>>>>>>486         ulelong         x       \b, startsector %u
1512 >>>>>>>>>>>>490         ulelong         x       \b, %u sectors
1513 #
1514 >>>>>>>>>494            ubyte           <0x81   
1515 >>>>>>>>>>494           ubyte&0x7F      0               
1516 >>>>>>>>>>>498          ubyte           >0      \b; partition 4: ID=0x%x
1517 >>>>>>>>>>>>494         ubyte           0x80    \b, active
1518 >>>>>>>>>>>>495         ubyte           x       \b, starthead %u
1519 #>>>>>>>>>>>>496                ubyte           x       \b, start C_S: 0x%x
1520 #>>>>>>>>>>>>496                ubeshort&1023   x       \b, startcylinder? %d
1521 >>>>>>>>>>>>502         ulelong         x       \b, startsector %u
1522 >>>>>>>>>>>>506         ulelong         x       \b, %u sectors
1523 # mbr partion table entries end
1524 # http://www.acronis.de/
1525 #FAT label=ACRONIS\x20SZ
1526 #OEM-ID=BOOTWIZ0
1527 >442    string  Non-system\x20disk,\x20 
1528 >>459   string  press\x20any\x20key...\x7\0             \b, Acronis Startup Recovery Loader
1529 # DOS names like F11.SYS are 8 right space padded bytes+3 bytes
1530 >>>477          ubyte&0xDF      >0              
1531 >>>>477         string          x               \b %-.3s
1532 >>>>>480        ubyte&0xDF      >0              
1533 >>>>>>480       string          x               \b%-.5s
1534 >>>>485         ubyte&0xDF      >0              
1535 >>>>>485        string          x               \b.%-.3s
1536 #
1537 >185    string  FDBOOT\x20Version\x20                   
1538 >>204   string  \rNo\x20Systemdisk.\x20                 
1539 >>>220  string  Booting\x20from\x20harddisk.\n\r                
1540 >>>245  string  Cannot\x20load\x20from\x20harddisk.\n\r 
1541 >>>>273 string  Insert\x20Systemdisk\x20                        
1542 >>>>>291 string and\x20press\x20any\x20key.\n\r         \b, FDBOOT harddisk Bootloader
1543 >>>>>>200 string        >\0                             \b, version %-3s
1544 >242    string  Bootsector\x20from\x20C.H.\x20Hochst\204        
1545 >>278   string  No\x20Systemdisk.\x20                   
1546 >>>293  string  Booting\x20from\x20harddisk.\n\r                
1547 >>>441  string  Cannot\x20load\x20from\x20harddisk.\n\r 
1548 >>>>469 string  Insert\x20Systemdisk\x20                        
1549 >>>>>487 string and\x20press\x20any\x20key.\n\r         \b, WinImage harddisk Bootloader
1550 >>>>>>209 string        >\0                             \b, version %-4.4s
1551 >(1.b+2)        ubyte           0xe                     
1552 >>(1.b+3)       ubyte           0x1f                    
1553 >>>(1.b+4)      ubyte           0xbe                    
1554 >>>>(1.b+5)     ubyte           0x77                    
1555 >>>>(1.b+6)     ubyte           0x7c                    
1556 >>>>>(1.b+7)    ubyte           0xac                    
1557 >>>>>>(1.b+8)   ubyte           0x22                    
1558 >>>>>>>(1.b+9)  ubyte           0xc0                    
1559 >>>>>>>>(1.b+10)        ubyte   0x74                    
1560 >>>>>>>>>(1.b+11)       ubyte   0xb                     
1561 >>>>>>>>>>(1.b+12)      ubyte   0x56                    
1562 >>>>>>>>>>(1.b+13)      ubyte   0xb4                    \b, mkdosfs boot message display
1563 >214    string  Please\x20try\x20to\x20install\x20FreeDOS\x20   \b, DOS Emulator boot message display
1564 #>>244  string  from\x20dosemu-freedos-*-bin.tgz\r      
1565 #>>>170 string  Sorry,\x20could\x20not\x20load\x20an\x20                
1566 #>>>>195        string  operating\x20system.\r\n                
1567 #
1568 >103    string  This\x20is\x20not\x20a\x20bootable\x20disk.\x20 
1569 >>132   string  Please\x20insert\x20a\x20bootable\x20           
1570 >>>157  string  floppy\x20and\r\n                               
1571 >>>>169 string  press\x20any\x20key\x20to\x20try\x20again...\r  \b, FREE-DOS message display
1572 #
1573 >66     string  Solaris\x20Boot\x20Sector               
1574 >>99    string  Incomplete\x20MDBoot\x20load.           
1575 >>>89   string  Version                                 \b, Sun Solaris Bootloader
1576 >>>>97  byte    x                                       version %c
1577 #
1578 >408    string  OS/2\x20!!\x20SYS01475\r\0                      
1579 >>429   string  OS/2\x20!!\x20SYS02025\r\0                      
1580 >>>450  string  OS/2\x20!!\x20SYS02027\r\0                      
1581 >>>469  string  OS2BOOT\x20\x20\x20\x20                         \b, IBM OS/2 Warp bootloader
1582 #
1583 >409    string  OS/2\x20!!\x20SYS01475\r\0                      
1584 >>430   string  OS/2\x20!!\x20SYS02025\r\0                      
1585 >>>451  string  OS/2\x20!!\x20SYS02027\r\0                      
1586 >>>470  string  OS2BOOT\x20\x20\x20\x20                         \b, IBM OS/2 Warp Bootloader
1587 >112            string  This\x20disk\x20is\x20not\x20bootable\r                 
1588 >>142           string  If\x20you\x20wish\x20to\x20make\x20it\x20bootable               
1589 >>>176          string  run\x20the\x20DOS\x20program\x20SYS\x20                         
1590 >>>200          string  after\x20the\r                                  
1591 >>>>216         string  system\x20has\x20been\x20loaded\r\n                     
1592 >>>>>242        string  Please\x20insert\x20a\x20DOS\x20diskette\x20            
1593 >>>>>271        string  into\r\n\x20the\x20drive\x20and\x20                     
1594 >>>>>>292       string  strike\x20any\x20key...\0               \b, IBM OS/2 Warp message display
1595 # XP
1596 >430    string  NTLDR\x20is\x20missing\xFF\r\n          
1597 >>449   string  Disk\x20error\xFF\r\n                   
1598 >>>462  string  Press\x20any\x20key\x20to\x20restart\r          \b, Microsoft Windows XP Bootloader
1599 # DOS names like NTLDR,CMLDR,$LDR$ are 8 right space padded bytes+3 bytes
1600 >>>>417         ubyte&0xDF      >0                      
1601 >>>>>417        string          x                       %-.5s
1602 >>>>>>422       ubyte&0xDF      >0                      
1603 >>>>>>>422      string          x                       \b%-.3s
1604 >>>>>425        ubyte&0xDF      >0                      
1605 >>>>>>425       string          >\x20                   \b.%-.3s
1606 #
1607 >>>>371         ubyte           >0x20                   
1608 >>>>>368        ubyte&0xDF      >0                      
1609 >>>>>>368       string          x                       %-.5s
1610 >>>>>>>373      ubyte&0xDF      >0                      
1611 >>>>>>>>373     string          x                       \b%-.3s
1612 >>>>>>376       ubyte&0xDF      >0                      
1613 >>>>>>>376      string          x                       \b.%-.3s
1614 #
1615 >430    string  NTLDR\x20nicht\x20gefunden\xFF\r\n              
1616 >>453   string  Datentr\204gerfehler\xFF\r\n            
1617 >>>473  string  Neustart\x20mit\x20beliebiger\x20Taste\r        \b, Microsoft Windows XP Bootloader (german)
1618 >>>>417         ubyte&0xDF      >0                      
1619 >>>>>417        string          x                       %-.5s
1620 >>>>>>422       ubyte&0xDF      >0                      
1621 >>>>>>>422      string          x                       \b%-.3s
1622 >>>>>425        ubyte&0xDF      >0                      
1623 >>>>>>425       string          >\x20                   \b.%-.3s
1624 # offset variant
1625 >>>>379 string  \0                                      
1626 >>>>>368        ubyte&0xDF      >0                      
1627 >>>>>>368       string          x                       %-.5s
1628 >>>>>>>373      ubyte&0xDF      >0                      
1629 >>>>>>>>373     string          x                       \b%-.3s
1630 #
1631 >430    string  NTLDR\x20fehlt\xFF\r\n                  
1632 >>444   string  Datentr\204gerfehler\xFF\r\n            
1633 >>>464  string  Neustart\x20mit\x20beliebiger\x20Taste\r        \b, Microsoft Windows XP Bootloader (2.german)
1634 >>>>417         ubyte&0xDF      >0                      
1635 >>>>>417        string          x                       %-.5s
1636 >>>>>>422       ubyte&0xDF      >0                      
1637 >>>>>>>422      string          x                       \b%-.3s
1638 >>>>>425        ubyte&0xDF      >0                      
1639 >>>>>>425       string          >\x20                   \b.%-.3s
1640 # variant
1641 >>>>371         ubyte           >0x20                   
1642 >>>>>368        ubyte&0xDF      >0                      
1643 >>>>>>368       string          x                       %-.5s
1644 >>>>>>>373      ubyte&0xDF      >0                      
1645 >>>>>>>>373     string          x                       \b%-.3s
1646 >>>>>>376       ubyte&0xDF      >0                      
1647 >>>>>>>376      string          x                       \b.%-.3s
1648 #
1649 >430    string  NTLDR\x20fehlt\xFF\r\n                  
1650 >>444   string  Medienfehler\xFF\r\n                    
1651 >>>459  string  Neustart:\x20Taste\x20dr\201cken\r              \b, Microsoft Windows XP Bootloader (3.german)
1652 >>>>371         ubyte           >0x20                   
1653 >>>>>368        ubyte&0xDF      >0                      
1654 >>>>>>368       string          x                       %-.5s
1655 >>>>>>>373      ubyte&0xDF      >0                      
1656 >>>>>>>>373     string          x                       \b%-.3s
1657 >>>>>>376       ubyte&0xDF      >0                      
1658 >>>>>>>376      string          x                       \b.%-.3s
1659 # variant
1660 >>>>417         ubyte&0xDF      >0                      
1661 >>>>>417        string          x                       %-.5s
1662 >>>>>>422       ubyte&0xDF      >0                      
1663 >>>>>>>422      string          x                       \b%-.3s
1664 >>>>>425        ubyte&0xDF      >0                      
1665 >>>>>>425       string          >\x20                   \b.%-.3s
1666 #
1667 >430    string  Datentr\204ger\x20entfernen\xFF\r\n     
1668 >>454   string  Medienfehler\xFF\r\n                    
1669 >>>469  string  Neustart:\x20Taste\x20dr\201cken\r              \b, Microsoft Windows XP Bootloader (4.german)
1670 >>>>379         string          \0                      
1671 >>>>>368        ubyte&0xDF      >0                      
1672 >>>>>>368       string          x                       %-.5s
1673 >>>>>>>373      ubyte&0xDF      >0                      
1674 >>>>>>>>373     string          x                       \b%-.3s
1675 >>>>>>376       ubyte&0xDF      >0                      
1676 >>>>>>>376      string          x                       \b.%-.3s
1677 # variant
1678 >>>>417         ubyte&0xDF      >0                      
1679 >>>>>417        string          x                       %-.5s
1680 >>>>>>422       ubyte&0xDF      >0                      
1681 >>>>>>>422      string          x                       \b%-.3s
1682 >>>>>425        ubyte&0xDF      >0                      
1683 >>>>>>425       string          >\x20                   \b.%-.3s
1684 #
1685
1686 #>3     string  NTFS\x20\x20\x20\x20                            
1687 >389    string  Fehler\x20beim\x20Lesen\x20
1688 >>407   string  des\x20Datentr\204gers
1689 >>>426  string  NTLDR\x20fehlt                          
1690 >>>>440 string  NTLDR\x20ist\x20komprimiert
1691 >>>>>464 string Neustart\x20mit\x20Strg+Alt+Entf\r              \b, Microsoft Windows XP Bootloader NTFS (german)
1692 #>3     string  NTFS\x20\x20\x20\x20                            
1693 >313    string  A\x20disk\x20read\x20error\x20occurred.\r
1694 >>345   string  A\x20kernel\x20file\x20is\x20missing\x20        
1695 >>>370  string  from\x20the\x20disk.\r          
1696 >>>>484 string  NTLDR\x20is\x20compressed               
1697 >>>>>429 string Insert\x20a\x20system\x20diskette\x20   
1698 >>>>>>454 string and\x20restart\r\nthe\x20system.\r             \b, Microsoft Windows XP Bootloader NTFS
1699 # DOS loader variants different languages,offsets
1700 >472    ubyte&0xDF      >0
1701 >>389   string  Invalid\x20system\x20disk\xFF\r\n               
1702 >>>411  string  Disk\x20I/O\x20error                    
1703 >>>>428 string  Replace\x20the\x20disk,\x20and\x20              
1704 >>>>>455 string press\x20any\x20key                             \b, Microsoft Windows 98 Bootloader
1705 #IO.SYS
1706 >>>>>>472       ubyte&0xDF      >0                      
1707 >>>>>>>472      string          x                       \b %-.2s
1708 >>>>>>>>474     ubyte&0xDF      >0                      
1709 >>>>>>>>>474    string          x                       \b%-.5s
1710 >>>>>>>>>>479   ubyte&0xDF      >0                      
1711 >>>>>>>>>>>479 string           x                       \b%-.1s
1712 >>>>>>>480      ubyte&0xDF      >0                      
1713 >>>>>>>>480     string          x                       \b.%-.3s
1714 #MSDOS.SYS
1715 >>>>>>>483      ubyte&0xDF      >0                      \b+
1716 >>>>>>>>483     string          x                       \b%-.5s
1717 >>>>>>>>>488    ubyte&0xDF      >0                      
1718 >>>>>>>>>>488   string          x                       \b%-.3s
1719 >>>>>>>>491     ubyte&0xDF      >0                      
1720 >>>>>>>>>491    string          x                       \b.%-.3s
1721 #
1722 >>390   string  Invalid\x20system\x20disk\xFF\r\n               
1723 >>>412  string  Disk\x20I/O\x20error\xFF\r\n            
1724 >>>>429 string  Replace\x20the\x20disk,\x20and\x20              
1725 >>>>>451 string then\x20press\x20any\x20key\r                   \b, Microsoft Windows 98 Bootloader
1726 >>388   string  Ungueltiges\x20System\x20\xFF\r\n               
1727 >>>410  string  E/A-Fehler\x20\x20\x20\x20\xFF\r\n              
1728 >>>>427 string  Datentraeger\x20wechseln\x20und\x20             
1729 >>>>>453 string Taste\x20druecken\r                     \b, Microsoft Windows 95/98/ME Bootloader (german)
1730 #WINBOOT.SYS only not spaces (0xDF)
1731 >>>>>>497       ubyte&0xDF      >0                      
1732 >>>>>>>497      string          x                       %-.5s
1733 >>>>>>>>502     ubyte&0xDF      >0                      
1734 >>>>>>>>>502    string          x                       \b%-.1s
1735 >>>>>>>>>>503   ubyte&0xDF      >0                      
1736 >>>>>>>>>>>503  string          x                       \b%-.1s
1737 >>>>>>>>>>>>504 ubyte&0xDF      >0                      
1738 >>>>>>>>>>>>>504 string         x                       \b%-.1s
1739 >>>>>>505       ubyte&0xDF      >0                      
1740 >>>>>>>505      string          x                       \b.%-.3s
1741 #IO.SYS
1742 >>>>>>472       ubyte&0xDF      >0                      or
1743 >>>>>>>472      string          x                       \b %-.2s
1744 >>>>>>>>474     ubyte&0xDF      >0                      
1745 >>>>>>>>>474    string          x                       \b%-.5s
1746 >>>>>>>>>>479   ubyte&0xDF      >0                      
1747 >>>>>>>>>>>479 string           x                       \b%-.1s
1748 >>>>>>>480      ubyte&0xDF      >0                      
1749 >>>>>>>>480     string          x                       \b.%-.3s
1750 #MSDOS.SYS
1751 >>>>>>>483      ubyte&0xDF      >0                      \b+
1752 >>>>>>>>483     string          x                       \b%-.5s
1753 >>>>>>>>>488    ubyte&0xDF      >0                      
1754 >>>>>>>>>>488   string          x                       \b%-.3s
1755 >>>>>>>>491     ubyte&0xDF      >0                      
1756 >>>>>>>>>491    string          x                       \b.%-.3s
1757 #
1758 >>390   string  Ungueltiges\x20System\x20\xFF\r\n               
1759 >>>412  string  E/A-Fehler\x20\x20\x20\x20\xFF\r\n              
1760 >>>>429 string  Datentraeger\x20wechseln\x20und\x20             
1761 >>>>>455 string Taste\x20druecken\r                     \b, Microsoft Windows 95/98/ME Bootloader (German)
1762 #WINBOOT.SYS only not spaces (0xDF)
1763 >>>>>>497       ubyte&0xDF      >0                      
1764 >>>>>>>497      string          x                       %-.7s
1765 >>>>>>>>504     ubyte&0xDF      >0                      
1766 >>>>>>>>>504    string          x                       \b%-.1s
1767 >>>>>>505       ubyte&0xDF      >0                      
1768 >>>>>>>505      string          x                       \b.%-.3s
1769 #IO.SYS
1770 >>>>>>472       ubyte&0xDF      >0                      or
1771 >>>>>>>472      string          x                       \b %-.2s
1772 >>>>>>>>474     ubyte&0xDF      >0                      
1773 >>>>>>>>>474    string          x                       \b%-.6s
1774 >>>>>>>480      ubyte&0xDF      >0                      
1775 >>>>>>>>480     string          x                       \b.%-.3s
1776 #MSDOS.SYS
1777 >>>>>>>483      ubyte&0xDF      >0                      \b+
1778 >>>>>>>>483     string          x                       \b%-.5s
1779 >>>>>>>>>488    ubyte&0xDF      >0                      
1780 >>>>>>>>>>488   string          x                       \b%-.3s
1781 >>>>>>>>491     ubyte&0xDF      >0                      
1782 >>>>>>>>>491    string          x                       \b.%-.3s
1783 #
1784 >>389   string  Ungueltiges\x20System\x20\xFF\r\n               
1785 >>>411  string  E/A-Fehler\x20\x20\x20\x20\xFF\r\n              
1786 >>>>428 string  Datentraeger\x20wechseln\x20und\x20             
1787 >>>>>454 string Taste\x20druecken\r                     \b, Microsoft Windows 95/98/ME Bootloader (GERMAN)
1788 # DOS names like IO.SYS,WINBOOT.SYS,MSDOS.SYS,WINBOOT.INI are 8 right space padded bytes+3 bytes
1789 >>>>>>472       string          x                       %-.2s
1790 >>>>>>>474      ubyte&0xDF      >0                      
1791 >>>>>>>>474     string          x                       \b%-.5s
1792 >>>>>>>>479     ubyte&0xDF      >0                      
1793 >>>>>>>>>479    string          x                       \b%-.1s
1794 >>>>>>480       ubyte&0xDF      >0                      
1795 >>>>>>>480      string          x                       \b.%-.3s
1796 >>>>>>483       ubyte&0xDF      >0                      \b+
1797 >>>>>>>483      string          x                       \b%-.5s
1798 >>>>>>>488      ubyte&0xDF      >0                      
1799 >>>>>>>>488     string          x                       \b%-.2s
1800 >>>>>>>>490     ubyte&0xDF      >0                      
1801 >>>>>>>>>490    string          x                       \b%-.1s
1802 >>>>>>>491      ubyte&0xDF      >0                      
1803 >>>>>>>>491     string          x                       \b.%-.3s
1804 >479    ubyte&0xDF      >0
1805 >>416   string  Kein\x20System\x20oder\x20                      
1806 >>>433  string  Laufwerksfehler                         
1807 >>>>450 string  Wechseln\x20und\x20Taste\x20dr\201cken  \b, Microsoft DOS Bootloader (german)
1808 #IO.SYS
1809 >>>>>479        string          x                       \b %-.2s
1810 >>>>>>481       ubyte&0xDF      >0                      
1811 >>>>>>>481      string          x                       \b%-.6s
1812 >>>>>487        ubyte&0xDF      >0                      
1813 >>>>>>487       string          x                       \b.%-.3s
1814 #MSDOS.SYS
1815 >>>>>>490       ubyte&0xDF      >0                      \b+
1816 >>>>>>>490      string          x                       \b%-.5s
1817 >>>>>>>>495     ubyte&0xDF      >0                      
1818 >>>>>>>>>495    string          x                       \b%-.3s
1819 >>>>>>>498      ubyte&0xDF      >0                      
1820 >>>>>>>>498     string          x                       \b.%-.3s
1821 #
1822 >376    search/41       Non-System\x20disk\x20or\x20            
1823 >>395   search/41       disk\x20error\r                 
1824 >>>407  search/41       Replace\x20and\x20                      
1825 >>>>419 search/41       press\x20                               \b,
1826 >>>>419 search/41       strike\x20                      \b, old
1827 >>>>426 search/41       any\x20key\x20when\x20ready\r           MS or PC-DOS bootloader
1828 #449                    Disk\x20Boot\x20failure\r               MS 3.21
1829 #466                    Boot\x20Failure\r                       MS 3.30
1830 >>>>>468 search/18      \0                              
1831 #IO.SYS,IBMBIO.COM
1832 >>>>>>&0        string          x                       \b %-.2s
1833 >>>>>>>&-20     ubyte&0xDF      >0                      
1834 >>>>>>>>&-1     string          x                       \b%-.4s
1835 >>>>>>>>>&-16   ubyte&0xDF      >0                      
1836 >>>>>>>>>>&-1   string          x                       \b%-.2s
1837 >>>>>>&8        ubyte&0xDF      >0                      \b.
1838 >>>>>>>&-1      string          x                       \b%-.3s
1839 #MSDOS.SYS,IBMDOS.COM
1840 >>>>>>&11       ubyte&0xDF      >0                      \b+
1841 >>>>>>>&-1      string          x                       \b%-.5s
1842 >>>>>>>>&-6     ubyte&0xDF      >0                      
1843 >>>>>>>>>&-1    string          x                       \b%-.1s
1844 >>>>>>>>>>&-5   ubyte&0xDF      >0                      
1845 >>>>>>>>>>>&-1  string          x                       \b%-.2s
1846 >>>>>>>&7       ubyte&0xDF      >0                      \b.
1847 >>>>>>>>&-1     string          x                       \b%-.3s
1848 >441    string  Cannot\x20load\x20from\x20harddisk.\n\r
1849 >>469   string  Insert\x20Systemdisk\x20                        
1850 >>>487  string  and\x20press\x20any\x20key.\n\r         \b, MS (2.11) DOS bootloader
1851 #>43    string  \224R-LOADER\x20\x20SYS                 =label                                  
1852 >54     string  SYS
1853 >>324   string  VASKK
1854 >>>495  string  NEWLDR\0                                \b, DR-DOS Bootloader (LOADER.SYS)
1855 #
1856 >98     string  Press\x20a\x20key\x20to\x20retry\0\r            
1857 >>120   string  Cannot\x20find\x20file\x20\0\r          
1858 >>>139  string  Disk\x20read\x20error\0\r                       
1859 >>>>156 string  Loading\x20...\0                                \b, DR-DOS (3.41) Bootloader
1860 #DRBIOS.SYS
1861 >>>>>44         ubyte&0xDF      >0                      
1862 >>>>>>44        string          x                       \b %-.6s
1863 >>>>>>>50       ubyte&0xDF      >0                      
1864 >>>>>>>>50      string          x                       \b%-.2s
1865 >>>>>>52        ubyte&0xDF      >0                      
1866 >>>>>>>52       string          x                       \b.%-.3s
1867 #
1868 >70     string  IBMBIO\x20\x20COM                               
1869 >>472   string  Cannot\x20load\x20DOS!\x20                      
1870 >>>489  string  Any\x20key\x20to\x20retry                       \b, DR-DOS Bootloader
1871 >>471   string  Cannot\x20load\x20DOS\x20                       
1872 >>487   string  press\x20key\x20to\x20retry                     \b, Open-DOS Bootloader
1873 #??
1874 >444    string  KERNEL\x20\x20SYS                                       
1875 >>314   string  BOOT\x20error!                          \b, FREE-DOS Bootloader
1876 >499    string  KERNEL\x20\x20SYS                               
1877 >>305   string  BOOT\x20err!\0                          \b, Free-DOS Bootloader
1878 >449    string  KERNEL\x20\x20SYS                               
1879 >>319   string  BOOT\x20error!                          \b, FREE-DOS 0.5 Bootloader
1880 #
1881 >449    string  Loading\x20FreeDOS                      
1882 >>0x1AF         ulelong         >0                      \b, FREE-DOS 0.95,1.0 Bootloader
1883 >>>497          ubyte&0xDF      >0                      
1884 >>>>497         string          x                       \b %-.6s
1885 >>>>>503        ubyte&0xDF      >0                      
1886 >>>>>>503       string          x                       \b%-.1s
1887 >>>>>>>504      ubyte&0xDF      >0                      
1888 >>>>>>>>504     string          x                       \b%-.1s
1889 >>>>505         ubyte&0xDF      >0                      
1890 >>>>>505        string          x                       \b.%-.3s
1891 #
1892 >331    string  Error!.0                                \b, FREE-DOS 1.0 bootloader
1893 #
1894 >125    string  Loading\x20FreeDOS...\r                 
1895 >>311   string  BOOT\x20error!\r                                \b, FREE-DOS bootloader
1896 >>>441          ubyte&0xDF      >0                      
1897 >>>>441         string          x                       \b %-.6s
1898 >>>>>447        ubyte&0xDF      >0                      
1899 >>>>>>447       string          x                       \b%-.1s
1900 >>>>>>>448      ubyte&0xDF      >0                      
1901 >>>>>>>>448     string          x                       \b%-.1s
1902 >>>>449         ubyte&0xDF      >0                      
1903 >>>>>449        string          x                       \b.%-.3s
1904 >124    string  FreeDOS\0                               
1905 >>331   string  \x20err\0                                       \b, FREE-DOS BETa 0.9 Bootloader
1906 # DOS names like KERNEL.SYS,KERNEL16.SYS,KERNEL32.SYS,METAKERN.SYS are 8 right space padded bytes+3 bytes
1907 >>>497          ubyte&0xDF      >0                      
1908 >>>>497         string          x                       \b %-.6s
1909 >>>>>503        ubyte&0xDF      >0                      
1910 >>>>>>503       string          x                       \b%-.1s
1911 >>>>>>>504      ubyte&0xDF      >0                      
1912 >>>>>>>>504     string          x                       \b%-.1s
1913 >>>>505         ubyte&0xDF      >0                      
1914 >>>>>505        string          x                       \b.%-.3s
1915 >>333   string  \x20err\0                                       \b, FREE-DOS BEta 0.9 Bootloader
1916 >>>497          ubyte&0xDF      >0                      
1917 >>>>497         string          x                       \b %-.6s
1918 >>>>>503        ubyte&0xDF      >0                      
1919 >>>>>>503       string          x                       \b%-.1s
1920 >>>>>>>504      ubyte&0xDF      >0                      
1921 >>>>>>>>504     string          x                       \b%-.1s
1922 >>>>505         ubyte&0xDF      >0                      
1923 >>>>>505        string          x                       \b.%-.3s
1924 >>334   string  \x20err\0                                       \b, FREE-DOS Beta 0.9 Bootloader
1925 >>>497          ubyte&0xDF      >0                      
1926 >>>>497         string          x                       \b %-.6s
1927 >>>>>503        ubyte&0xDF      >0                      
1928 >>>>>>503       string          x                       \b%-.1s
1929 >>>>>>>504      ubyte&0xDF      >0                      
1930 >>>>>>>>504     string          x                       \b%-.1s
1931 >>>>505         ubyte&0xDF      >0                      
1932 >>>>>505        string          x                       \b.%-.3s
1933 >336    string  Error!\x20                              
1934 >>343   string  Hit\x20a\x20key\x20to\x20reboot.                \b, FREE-DOS Beta 0.9sr1 Bootloader
1935 >>>497          ubyte&0xDF      >0                      
1936 >>>>497         string          x                       \b %-.6s
1937 >>>>>503        ubyte&0xDF      >0                      
1938 >>>>>>503       string          x                       \b%-.1s
1939 >>>>>>>504      ubyte&0xDF      >0                      
1940 >>>>>>>>504     string          x                       \b%-.1s
1941 >>>>505         ubyte&0xDF      >0                      
1942 >>>>>505        string          x                       \b.%-.3s
1943 # added by Joerg Jenderek
1944 # http://www.visopsys.org/
1945 # http://partitionlogic.org.uk/
1946 # OEM-ID=Visopsys
1947 >478            ulelong 0                                       
1948 >>(1.b+326)     string  I/O\x20Error\x20reading\x20                     
1949 >>>(1.b+344)    string  Visopsys\x20loader\r                    
1950 >>>>(1.b+361)   string  Press\x20any\x20key\x20to\x20continue.\r        \b, Visopsys loader
1951 # http://alexfru.chat.ru/epm.html#bootprog
1952 >494    ubyte   >0x4D                                   
1953 >>495   string  >E                                      
1954 >>>495  string  <S                                      
1955 #OEM-ID is not reliable
1956 >>>>3   string  BootProg                                
1957 # It just looks for a program file name at the root directory
1958 # and loads corresponding file with following execution.
1959 # DOS names like STARTUP.BIN,STARTUPC.COM,STARTUPE.EXE are 8 right space padded bytes+3 bytes
1960 >>>>499                 ubyte&0xDF      >0              \b, COM/EXE Bootloader
1961 >>>>>499                string          x               \b %-.1s
1962 >>>>>>500               ubyte&0xDF      >0              
1963 >>>>>>>500              string          x               \b%-.1s
1964 >>>>>>>>501             ubyte&0xDF      >0              
1965 >>>>>>>>>501            string          x               \b%-.1s
1966 >>>>>>>>>>502           ubyte&0xDF      >0              
1967 >>>>>>>>>>>502          string          x               \b%-.1s
1968 >>>>>>>>>>>>503         ubyte&0xDF      >0              
1969 >>>>>>>>>>>>>503        string          x               \b%-.1s
1970 >>>>>>>>>>>>>>504       ubyte&0xDF      >0              
1971 >>>>>>>>>>>>>>>504      string          x               \b%-.1s
1972 >>>>>>>>>>>>>>>>505     ubyte&0xDF      >0              
1973 >>>>>>>>>>>>>>>>>505    string          x               \b%-.1s
1974 >>>>>>>>>>>>>>>>>>506   ubyte&0xDF      >0              
1975 >>>>>>>>>>>>>>>>>>>506  string          x               \b%-.1s
1976 #name extension
1977 >>>>>507                ubyte&0xDF      >0              \b.
1978 >>>>>>507               string          x               \b%-.1s
1979 >>>>>>>508              ubyte&0xDF      >0              
1980 >>>>>>>>508             string          x               \b%-.1s
1981 >>>>>>>>>509            ubyte&0xDF      >0              
1982 >>>>>>>>>>509           string          x               \b%-.1s
1983 #If the boot sector fails to read any other sector,
1984 #it prints a very short message ("RE") to the screen and hangs the computer.
1985 #If the boot sector fails to find needed program in the root directory,
1986 #it also hangs with another message ("NF").
1987 >>>>>492                string          RENF            \b, FAT (12 bit)
1988 >>>>>495                string          RENF            \b, FAT (16 bit)
1989 # http://alexfru.chat.ru/epm.html#bootprog
1990 >494    ubyte   >0x4D                                   
1991 >>495   string  >E                                      
1992 >>>495  string  <S                                      
1993 #OEM-ID is not reliable
1994 >>>>3   string  BootProg                                
1995 # It just looks for a program file name at the root directory
1996 # and loads corresponding file with following execution.
1997 # DOS names like STARTUP.BIN,STARTUPC.COM,STARTUPE.EXE are 8 right space padded bytes+3 bytes
1998 >>>>499                 ubyte&0xDF      >0              \b, COM/EXE Bootloader
1999 >>>>>499                string          x               \b %-.1s
2000 >>>>>>500               ubyte&0xDF      >0              
2001 >>>>>>>500              string          x               \b%-.1s
2002 >>>>>>>>501             ubyte&0xDF      >0              
2003 >>>>>>>>>501            string          x               \b%-.1s
2004 >>>>>>>>>>502           ubyte&0xDF      >0              
2005 >>>>>>>>>>>502          string          x               \b%-.1s
2006 >>>>>>>>>>>>503         ubyte&0xDF      >0              
2007 >>>>>>>>>>>>>503        string          x               \b%-.1s
2008 >>>>>>>>>>>>>>504       ubyte&0xDF      >0              
2009 >>>>>>>>>>>>>>>504      string          x               \b%-.1s
2010 >>>>>>>>>>>>>>>>505     ubyte&0xDF      >0              
2011 >>>>>>>>>>>>>>>>>505    string          x               \b%-.1s
2012 >>>>>>>>>>>>>>>>>>506   ubyte&0xDF      >0              
2013 >>>>>>>>>>>>>>>>>>>506  string          x               \b%-.1s
2014 #name extension
2015 >>>>>507                ubyte&0xDF      >0              \b.
2016 >>>>>>507               string          x               \b%-.1s
2017 >>>>>>>508              ubyte&0xDF      >0              
2018 >>>>>>>>508             string          x               \b%-.1s
2019 >>>>>>>>>509            ubyte&0xDF      >0              
2020 >>>>>>>>>>509           string          x               \b%-.1s
2021 #If the boot sector fails to read any other sector,
2022 #it prints a very short message ("RE") to the screen and hangs the computer.
2023 #If the boot sector fails to find needed program in the root directory,
2024 #it also hangs with another message ("NF").
2025 >>>>>492                string          RENF            \b, FAT (12 bit)
2026 >>>>>495                string          RENF            \b, FAT (16 bit)
2027 # x86 bootloader end
2028 # updated by Joerg Jenderek at Sep 2007
2029 >3      ubyte   0                       
2030 #no active flag
2031 >>446   ubyte   0                       
2032 # partition 1 not empty
2033 >>>450  ubyte   >0                      
2034 # partitions 3,4 empty
2035 >>>>482         ubyte   0                       
2036 >>>>>498        ubyte   0                       
2037 # partition 2 ID=0,5,15
2038 >>>>>>466       ubyte   <0x10                   
2039 >>>>>>>466      ubyte   0x05                    \b, extended partition table
2040 >>>>>>>466      ubyte   0x0F                    \b, extended partition table (LBA)
2041 >>>>>>>466      ubyte   0x0                     \b, extended partition table (last)     
2042 # JuMP short     bootcodeoffset NOP assembler instructions will usually be EB xx 90
2043 # http://mirror.href.com/thestarman/asm/2bytejumps.htmm#FWD
2044 # older drives may use Near JuMP instruction E9 xx xx
2045 >0              lelong&0x009000EB       0x009000EB 
2046 >0              lelong&0x000000E9       0x000000E9 
2047 # minimal short forward jump found 03cx??
2048 # maximal short forward jump is 07fx
2049 >1              ubyte                   <0xff   \b, code offset 0x%x
2050 # mtools-3.9.8/msdos.h
2051 # usual values are marked with comments to get only informations of strange FAT systems
2052 # valid sectorsize must be a power of 2 from 32 to 32768
2053 >>11            uleshort&0x000f x               
2054 >>>11           uleshort        <32769          
2055 >>>>11          uleshort        >31             
2056 >>>>>21         ubyte&0xf0      0xF0            
2057 >>>>>>3         string          >\0             \b, OEM-ID "%8.8s"
2058 #http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC
2059 >>>>>>>8        string          IHC             \b cached by Windows 9M
2060 >>>>>>11        uleshort        >512            \b, Bytes/sector %u
2061 #>>>>>>11       uleshort        =512            \b, Bytes/sector %u=512 (usual)
2062 >>>>>>11        uleshort        <512            \b, Bytes/sector %u
2063 >>>>>>13        ubyte           >1              \b, sectors/cluster %u
2064 #>>>>>>13       ubyte           =1              \b, sectors/cluster %u (usual on Floppies)
2065 >>>>>>14        uleshort        >32             \b, reserved sectors %u
2066 #>>>>>>14       uleshort        =32             \b, reserved sectors %u (usual Fat32)
2067 #>>>>>>14       uleshort        >1              \b, reserved sectors %u
2068 #>>>>>>14       uleshort        =1              \b, reserved sectors %u (usual FAT12,FAT16)
2069 >>>>>>14        uleshort        <1              \b, reserved sectors %u
2070 >>>>>>16        ubyte           >2              \b, FATs %u
2071 #>>>>>>16       ubyte           =2              \b, FATs %u (usual)
2072 >>>>>>16        ubyte           =1              \b, FAT  %u
2073 >>>>>>16        ubyte           >0
2074 >>>>>>17        uleshort        >0              \b, root entries %u
2075 #>>>>>>17       uleshort        =0              \b, root entries %u=0 (usual Fat32)
2076 >>>>>>19        uleshort        >0              \b, sectors %u (volumes <=32 MB) 
2077 #>>>>>>19       uleshort        =0              \b, sectors %u=0 (usual Fat32)
2078 >>>>>>21        ubyte           >0xF0           \b, Media descriptor 0x%x
2079 #>>>>>>21       ubyte           =0xF0           \b, Media descriptor 0x%x (usual floppy)
2080 >>>>>>21        ubyte           <0xF0           \b, Media descriptor 0x%x
2081 >>>>>>22        uleshort        >0              \b, sectors/FAT %u
2082 #>>>>>>22       uleshort        =0              \b, sectors/FAT %u=0 (usual Fat32)
2083 >>>>>>26        ubyte           >2              \b, heads %u
2084 #>>>>>>26       ubyte           =2              \b, heads %u (usual floppy)
2085 >>>>>>26        ubyte           =1              \b, heads %u
2086 #skip for Digital Research DOS (version 3.41) 1440 kB Bootdisk
2087 >>>>>>38        ubyte           !0x70           
2088 >>>>>>>28       ulelong         >0              \b, hidden sectors %u
2089 #>>>>>>>28      ulelong         =0              \b, hidden sectors %u (usual floppy)
2090 >>>>>>>32       ulelong         >0              \b, sectors %u (volumes > 32 MB) 
2091 #>>>>>>>32      ulelong         =0              \b, sectors %u (volumes > 32 MB)
2092 # FAT<32 specific 
2093 >>>>>>82        string          !FAT32
2094 #>>>>>>>36      ubyte           0x80            \b, physical drive 0x%x=0x80 (usual harddisk)
2095 #>>>>>>>36      ubyte           0               \b, physical drive 0x%x=0 (usual floppy)
2096 >>>>>>>36       ubyte           !0x80           
2097 >>>>>>>>36      ubyte           !0              \b, physical drive 0x%x
2098 >>>>>>>37       ubyte           >0              \b, reserved 0x%x
2099 #>>>>>>>37      ubyte           =0              \b, reserved 0x%x
2100 >>>>>>>38       ubyte           >0x29           \b, dos < 4.0 BootSector (0x%x)
2101 >>>>>>>38       ubyte           <0x29           \b, dos < 4.0 BootSector (0x%x)
2102 >>>>>>>38       ubyte           =0x29
2103 >>>>>>>>39      ulelong         x               \b, serial number 0x%x
2104 >>>>>>>>43      string          <NO\x20NAME     \b, label: "%11.11s"
2105 >>>>>>>>43      string          >NO\x20NAME     \b, label: "%11.11s"
2106 >>>>>>>>43      string          =NO\x20NAME     \b, unlabeled
2107 >>>>>>>54       string          FAT             \b, FAT
2108 >>>>>>>>54      string          FAT12           \b (12 bit)
2109 >>>>>>>>54      string          FAT16           \b (16 bit)
2110 # FAT32 specific
2111 >>>>>>82        string          FAT32           \b, FAT (32 bit)
2112 >>>>>>>36       ulelong         x               \b, sectors/FAT %u
2113 >>>>>>>40       uleshort        >0              \b, extension flags %u
2114 #>>>>>>>40      uleshort        =0              \b, extension flags %u
2115 >>>>>>>42       uleshort        >0              \b, fsVersion %u
2116 #>>>>>>>42      uleshort        =0              \b, fsVersion %u (usual)
2117 >>>>>>>44       ulelong         >2              \b, rootdir cluster %u
2118 #>>>>>>>44      ulelong         =2              \b, rootdir cluster %u
2119 #>>>>>>>44      ulelong         =1              \b, rootdir cluster %u
2120 >>>>>>>48       uleshort        >1              \b, infoSector %u
2121 #>>>>>>>48      uleshort        =1              \b, infoSector %u (usual)
2122 >>>>>>>48       uleshort        <1              \b, infoSector %u
2123 >>>>>>>50       uleshort        >6              \b, Backup boot sector %u
2124 #>>>>>>>50      uleshort        =6              \b, Backup boot sector %u (usual) 
2125 >>>>>>>50       uleshort        <6              \b, Backup boot sector %u
2126 >>>>>>>54       ulelong         >0              \b, reserved1 0x%x
2127 >>>>>>>58       ulelong         >0              \b, reserved2 0x%x
2128 >>>>>>>62       ulelong         >0              \b, reserved3 0x%x
2129 # same structure as FAT1X 
2130 >>>>>>>64       ubyte           >0x80           \b, physical drive 0x%x
2131 #>>>>>>>64      ubyte           =0x80           \b, physical drive 0x%x=80 (usual harddisk)
2132 >>>>>>>64       ubyte&0x7F      >0              \b, physical drive 0x%x
2133 #>>>>>>>64      ubyte           =0              \b, physical drive 0x%x=0 (usual floppy)
2134 >>>>>>>65       ubyte           >0              \b, reserved 0x%x
2135 >>>>>>>66       ubyte           >0x29           \b, dos < 4.0 BootSector (0x%x)
2136 >>>>>>>66       ubyte           <0x29           \b, dos < 4.0 BootSector (0x%x)
2137 >>>>>>>66       ubyte           =0x29
2138 >>>>>>>>67      ulelong         x               \b, serial number 0x%x
2139 >>>>>>>>71      string          <NO\x20NAME     \b, label: "%11.11s"
2140 >>>>>>>71       string          >NO\x20NAME     \b, label: "%11.11s"
2141 >>>>>>>71       string          =NO\x20NAME     \b, unlabeled
2142 ### FATs end
2143 >0x200  lelong  0x82564557              \b, BSD disklabel
2144
2145
2146
2147 #--------------------------Firmware Formats---------------------------
2148
2149 # uImage file     
2150 # From: Craig Heffner, U-Boot image.h header definitions file
2151 0       belong  0x27051956      uImage header, header size: 64 bytes,
2152 >4      belong  x               header CRC: 0x%X,
2153 >8      bedate  x               created: %s,
2154 >12     belong  x               image size: %d bytes,
2155 >16     belong  x               Data Address: 0x%X,
2156 >20     belong  x               Entry Point: 0x%X,
2157 >24     belong  x               data CRC: 0x%X,
2158 #>28    byte    x               OS type: %d,
2159 >28     byte    0               OS: Invalid OS,
2160 >28     byte    1               OS: OpenBSD,
2161 >28     byte    2               OS: NetBSD,
2162 >28     byte    3               OS: FreeBSD,
2163 >28     byte    4               OS: 4.4BSD,
2164 >28     byte    5               OS: Linux,
2165 >28     byte    6               OS: SVR4,
2166 >28     byte    7               OS: Esix,
2167 >28     byte    8               OS: Solaris,
2168 >28     byte    9               OS: Irix,
2169 >28     byte    10              OS: SCO,
2170 >28     byte    11              OS: Dell,
2171 >28     byte    12              OS: NCR,
2172 >28     byte    13              OS: LynxOS,
2173 >28     byte    14              OS: VxWorks,
2174 >28     byte    15              OS: pSOS,
2175 >28     byte    16              OS: QNX,
2176 >28     byte    17              OS: Firmware,
2177 >28     byte    18              OS: RTEMS,
2178 >28     byte    19              OS: ARTOS,
2179 >28     byte    20              OS: Unity OS,
2180 #>29    byte    x               CPU arch: %d,
2181 >29     byte    0               CPU: Invalid OS,
2182 >29     byte    1               CPU: Alpha,
2183 >29     byte    2               CPU: ARM,
2184 >29     byte    3               CPU: Intel x86,
2185 >29     byte    4               CPU: IA64,
2186 >29     byte    5               CPU: MIPS,
2187 >29     byte    6               CPU: MIPS 64 bit,
2188 >29     byte    7               CPU: PowerPC,
2189 >29     byte    8               CPU: IBM S390,
2190 >29     byte    9               CPU: SuperH,
2191 >29     byte    10              CPU: Sparc,
2192 >29     byte    11              CPU: Sparc 64 bit,
2193 >29     byte    12              CPU: M68K,
2194 >29     byte    13              CPU: Nios-32,
2195 >29     byte    14              CPU: MicroBlaze,
2196 >29     byte    15              CPU: Nios-II,
2197 >29     byte    16              CPU: Blackfin,
2198 >29     byte    17              CPU: AVR,
2199 >29     byte    18              CPU: STMicroelectronics ST200,
2200 #>30    byte    x               image type: %d,
2201 >30     byte    0               image type: Invalid Image,
2202 >30     byte    1               image type: Standalone Program,
2203 >30     byte    2               image type: OS Kernel Image,
2204 >30     byte    3               image type: RAMDisk Image,
2205 >30     byte    4               image type: Multi-File Image,
2206 >30     byte    5               image type: Firmware Image,
2207 >30     byte    6               image type: Script file,
2208 >30     byte    7               image type: Filesystem Image,
2209 >30     byte    8               image type: Binary Flat Device Tree Blob
2210 #>31    byte    x               compression type: %d,
2211 >31     byte    0               compression type: none,
2212 >31     byte    1               compression type: gzip,
2213 >31     byte    2               compression type: bzip2,
2214 >31     byte    3               compression type: lzma,
2215 >32     string  x               image name: %s
2216
2217 #IMG0 header, found in VxWorks-based Mercury router firmware
2218 0       string          IMG0            IMG0 (VxWorks) header,
2219 >4      belong          x               size: %d
2220
2221 #Mediatek bootloader signature
2222 #From xp-dev.com
2223 0       string          BOOTLOADER!     Mediatek bootloader
2224
2225 #CSYS header formats
2226 0       string          CSYS\x00        CSYS header, little endian, 
2227 >8      lelong          x               size: %d
2228
2229 0       string          CSYS\x80        CSYS header, big endian,
2230 >8      belong          x               size: %d
2231
2232 # wrgg firmware image
2233 0       string          wrgg02          WRGG firmware header,
2234 >6      string          x               name: %s,
2235 >48     string          x               root device: %s
2236
2237 # trx image file
2238 0       string          HDR0            TRX firmware header, little endian, header size: 28 bytes, 
2239 >4      lelong          x               image size: %d bytes,
2240 >8      lelong          x               CRC32: 0x%X
2241 >12     lelong          x               flags/version: 0x%X
2242
2243 0       string          0RDH            TRX firmware header, big endian, header size: 28 bytes,
2244 >4      belong          x               image size: %d bytes,
2245 >8      belong          x               CRC32: 0x%X
2246 >12     belong          x               flags/version: 0x%X
2247
2248
2249 # Ubicom firmware image
2250 0       belong  0xFA320080              Ubicom firmware header,
2251 >12     belong  x                       checksum: 0x%X,
2252 >24     belong  x                       image size: %d
2253
2254 # The ROME bootloader is used by several RealTek-based products.
2255 # Unfortunately, the magic bytes are specific to each product, so
2256 # separate signatures must be created for each one.
2257
2258 # Netgear KWGR614 ROME image
2259 0       string          G614            Realtek firmware header (ROME bootloader),
2260 >4      beshort         0xd92f          image type: KFS,
2261 >4      beshort         0xb162          image type: RDIR,
2262 >4      beshort         0xea43          image type: BOOT,
2263 >4      beshort         0x8dc9          image type: RUN,
2264 >4      beshort         0x2a05          image type: CCFG,
2265 >4      beshort         0x6ce8          image type: DCFG,
2266 >4      beshort         0xc371          image type: LOG,
2267 >6      byte            x               header version: %d,
2268 #month
2269 >10     byte            x               created: %d/
2270 #day    
2271 >12     byte            x               \b%d/
2272 #year
2273 >8      beshort         x               \b%d,
2274 >16     belong          x               image size: %d bytes,
2275 >22     byte            x               body checksum: 0x%X,
2276 >23     byte            x               header checksum: 0x%X
2277
2278 # Linksys WRT54GX ROME image
2279 0       belong          0x59a0e842      Realtek firmware header (ROME bootloader)
2280 >4      beshort         0xd92f          image type: KFS,
2281 >4      beshort         0xb162          image type: RDIR,
2282 >4      beshort         0xea43          image type: BOOT,
2283 >4      beshort         0x8dc9          image type: RUN,
2284 >4      beshort         0x2a05          image type: CCFG,
2285 >4      beshort         0x6ce8          image type: DCFG,
2286 >4      beshort         0xc371          image type: LOG,
2287 >6      byte            x               header version: %d,
2288 #month
2289 >10     byte            x               created: %d/
2290 #day    
2291 >12     byte            x               \b%d/
2292 #year
2293 >8      beshort         x               \b%d,
2294 >16     belong          x               image size: %d bytes,
2295 >22     byte            x               body checksum: 0x%X,
2296 >23     byte            x               header checksum: 0x%X
2297
2298 # PackImg tag, somtimes used as a delimiter between the kernel and rootfs in firmware images.
2299 0       string          --PaCkImGs--    PackImg Tag,
2300 >16     lelong          x               little endian size: %d bytes;
2301 >16     belong          x               big endian size: %d bytes
2302
2303
2304 #------------------------------------------------------------------------------
2305 # Broadcom header format
2306 #
2307 0       string          BCRM            Broadcom header,
2308 >4      lelong          x               number of sections: %d,
2309 >>8     lelong          18              first section type: flash
2310 >>8     lelong          19              first section type: disk
2311 >>8     lelong          21              first section type: tag
2312
2313
2314 # Berkeley Lab Checkpoint Restart (BLCR) checkpoint context files
2315 # http://ftg.lbl.gov/checkpoint
2316 0       string  Ck0\0\0R\0\0\0  BLCR
2317 >16     lelong  1       x86
2318 >16     lelong  3       alpha
2319 >16     lelong  5       x86-64
2320 >16     lelong  7       ARM
2321 >8      lelong  x       context data (little endian, version %d)
2322
2323 0       string  \0\0\0C\0\0\0R  BLCR
2324 >16     belong  2       SPARC
2325 >16     belong  4       ppc
2326 >16     belong  6       ppc64
2327 >16     belong  7       ARMEB
2328 >16     belong  8       SPARC64
2329 >8      belong  x       context data (big endian, version %d)
2330
2331 # Aculab VoIP firmware
2332 # From: Mark Brown <broonie@sirena.org.uk>
2333 0       string  VoIP\x20Startup\x20and      Aculab VoIP firmware
2334 >35     string  x       format %s
2335
2336 #------------------------------------------------------------------------------
2337 # HP LaserJet 1000 series downloadable firmware file
2338 0       string  \xbe\xefABCDEFGH        HP LaserJet 1000 series downloadable firmware
2339
2340 # From Albert Cahalan <acahalan@gmail.com>
2341 # really le32 operation,destination,payloadsize (but quite predictable)
2342 # 01 00 00 00 00 00 00 c0 00 02 00 00
2343 0       string          \1\0\0\0\0\0\0\300\0\2\0\0      Marvell Libertas firmware
2344
2345 #---------------------------------------------------------------------------
2346 # The following entries have been tested by Duncan Laurie <duncan@sun.com> (a
2347 # lead Sun/Cobalt developer) who agrees that they are good and worthy of
2348 # inclusion.
2349
2350 # Boot ROM images for Sun/Cobalt Linux server appliances
2351 0       string  Cobalt\x20Networks\x20Inc.\nFirmware\x20v     Paged COBALT boot rom
2352 >38     string x        V%.4s
2353
2354 # New format for Sun/Cobalt boot ROMs is annoying, it stores the version code
2355 # at the very end where file(1) can't get it.
2356 0       string CRfs     COBALT boot rom data (Flat boot rom or file system)
2357
2358 #
2359 # Motorola S-Records, from Gerd Truschinski <gt@freebsd.first.gmd.de>
2360 0   string      S0          Motorola S-Record; binary data in text format
2361
2362 # --------------------------------
2363 # Microsoft Xbox data file formats
2364 0       string          XIP0            XIP, Microsoft Xbox data
2365 0       string          XTF0            XTF, Microsoft Xbox data
2366
2367 #Windows CE
2368 64      string          CECE            Windows CE RTOS
2369
2370 # --------------------------------
2371 # ZynOS ROM header format
2372 # From openwrt zynos.h.
2373 6       string          SIG             ZynOS header, header size: 48 bytes,
2374 >0      belong          x               load address 0x%X,
2375 >9      byte            <0x7F           rom image type:
2376 >>9     byte            <1              invalid,
2377 >>9     byte            >7              invalid,
2378 >>9     byte            1               ROMIMG,
2379 >>9     byte            2               ROMBOOT,
2380 >>9     byte            3               BOOTEXT,
2381 >>9     byte            4               ROMBIN,
2382 >>9     byte            5               ROMDIR,
2383 >>9     byte            6               6,
2384 >>9     byte            7               ROMMAP,
2385 >9      byte            >0x7F           ram image type:
2386 >>9     byte            >0x82           invalid,
2387 >>9     byte            0x80            RAM,
2388 >>9     byte            0x81            RAMCODE,
2389 >>9     byte            0x82            RAMBOOT,
2390 >10     belong          >0x40000000     invalid
2391 >10     belong          <0              invalid
2392 >10     belong          0               invalid
2393 >10     belong          x               uncompressed size: %d,
2394 >14     belong          >0x40000000     invalid
2395 >14     belong          <0              invalid
2396 >14     belong          0               invalid
2397 >14     belong          x               compressed size: %d,
2398 >20     beshort         x               uncompressed checksum: 0x%X,
2399 >22     beshort         x               compressed checksum: 0x%X,
2400 >18     byte            x               flags: 0x%X,
2401 >18     byte            &0x40           uncompressed checksum is valid,
2402 >18     byte            &0x80           the binary is compressed,
2403 >>18    byte            &0x20           compressed checksum is valid,
2404 >41     belong          x               memory map table address: 0x%X
2405
2406 # Firmware header used by some VxWorks-based Cisco products
2407 0       string          CI032.00        Cisco VxWorks firmware header,
2408 >8      lelong          >1024           invalid
2409 >8      lelong          <0              invalid
2410 >8      lelong          x               header size: %d bytes,
2411 >32     lelong          >1024           invalid
2412 >32     lelong          <0              invalid
2413 >32     lelong          x               number of files: %d,
2414 >48     lelong          <0              invalid
2415 >48     lelong          x               image size: %d,
2416 >64     string          x               firmware version: %s
2417
2418 # Firmware header used by some TV's
2419 0       string          FNIB            ZBOOT firmware header, header size: 32 bytes,
2420 >8      lelong          x               load address: 0x%.8X,
2421 >12     lelong          x               start address: 0x%.8X,
2422 >16     lelong          x               checksum: 0x%.8X,
2423 >20     lelong          x               version: 0x%.8X,
2424 >24     lelong          <1              invalid
2425 >24     lelong          x               image size: %d bytes
2426
2427 # Firmware header used by several D-Link routers (and probably others)
2428 0               string  \x5e\xa3\xa4\x17
2429 >(7.b+12)       string  \x5e\xa3\xa4\x17        DLOB firmware header,
2430 >>12            string  x                       %s,
2431 >>(7.b+40)      string  x                       %s
2432
2433 # TP-Link firmware header structure; thanks to Jonathan McGowan for reversing and documenting this format
2434 4       string          TP-LINK\x20Technologies         TP-Link firmware header,
2435 >0      lelong          x                               header version: %d,
2436 >0x98   beshort         x                               firmware version: %d.
2437 >0x9A   beshort         x                               \b%d.
2438 >0x9C   beshort         x                               \b%d,
2439 >0x1C   string          x                               image version: %s,
2440 >0x7C   belong          x                               image size: %d bytes,
2441 >0x40   belong          x                               product ID: 0x%X,
2442 >0x44   belong          x                               product version: %d,
2443 >0x74   belong          x                               kernel load address: 0x%X,
2444 >0x78   belong          x                               kernel entry point: 0x%X,
2445 >0x80   belong          x                               kernel offset: %d,
2446 >0x84   belong          x                               kernel length: %d,
2447 >0x88   belong          x                               rootfs offset: %d,
2448 >0x8C   belong          x                               rootfs length: %d,
2449 >0x90   belong          x                               bootloader offset: %d,
2450 >0x94   belong          x                               bootloader length: %d
2451
2452 # Tag Image File Format, from Daniel Quinlan (quinlan@yggdrasil.com)
2453 # The second word of TIFF files is the TIFF version number, 42, which has
2454 # never changed.  The TIFF specification recommends testing for it.
2455 0       string          MM\x00\x2a      TIFF image data, big-endian
2456 !:mime  image/tiff
2457 0       string          II\x2a\x00      TIFF image data, little-endian
2458 !:mime  image/tiff
2459
2460 # PNG [Portable Network Graphics, or "PNG's Not GIF"] images
2461 # (Greg Roelofs, newt@uchicago.edu)
2462 # (Albert Cahalan, acahalan@cs.uml.edu)
2463 #
2464 # 137 P N G \r \n ^Z \n [4-byte length] H E A D [HEAD data] [HEAD crc] ...
2465 #
2466 0       string          \x89PNG\x0d\x0a\x1a\x0a         PNG image
2467 !:mime  image/png
2468 >16     belong          x               \b, %ld x
2469 >20     belong          x               %ld,
2470 >24     byte            x               %d-bit
2471 >25     byte            0               grayscale,
2472 >25     byte            2               \b/color RGB,
2473 >25     byte            3               colormap,
2474 >25     byte            4               gray+alpha,
2475 >25     byte            6               \b/color RGBA,
2476 #>26    byte            0               deflate/32K,
2477 >28     byte            0               non-interlaced
2478 >28     byte            1               interlaced
2479
2480 # GIF
2481 0       string          GIF8            GIF image data
2482 !:mime  image/gif
2483 !:apple 8BIMGIFf
2484 >4      string          7a              \b, version 8%s,
2485 >4      string          9a              \b, version 8%s,
2486 >6      leshort         >0              %hd x
2487 >8      leshort         >0              %hd
2488 #>10    byte            &0x80           color mapped,
2489 #>10    byte&0x07       =0x00           2 colors
2490 #>10    byte&0x07       =0x01           4 colors
2491 #>10    byte&0x07       =0x02           8 colors
2492 #>10    byte&0x07       =0x03           16 colors
2493 #>10    byte&0x07       =0x04           32 colors
2494 #>10    byte&0x07       =0x05           64 colors
2495 #>10    byte&0x07       =0x06           128 colors
2496 #>10    byte&0x07       =0x07           256 colors
2497
2498 # PC bitmaps (OS/2, Windows BMP files)  (Greg Roelofs, newt@uchicago.edu)
2499 0       string          BM
2500 >14     leshort         12              PC bitmap, OS/2 1.x format
2501 !:mime  image/x-ms-bmp
2502 >>18    leshort         x               \b, %d x
2503 >>20    leshort         x               %d
2504 >14     leshort         64              PC bitmap, OS/2 2.x format
2505 !:mime  image/x-ms-bmp
2506 >>18    leshort         x               \b, %d x
2507 >>20    leshort         x               %d
2508 >14     leshort         40              PC bitmap, Windows 3.x format
2509 !:mime  image/x-ms-bmp
2510 >>18    lelong          x               \b, %d x
2511 >>22    lelong          x               %d x
2512 >>28    leshort         x               %d
2513 >14     leshort         128             PC bitmap, Windows NT/2000 format
2514 !:mime  image/x-ms-bmp
2515 >>18    lelong          x               \b, %d x
2516 >>22    lelong          x               %d x
2517 >>28    leshort         x               %d
2518
2519 #------------------------------------------------------------------------------
2520 # JPEG images
2521 # SunOS 5.5.1 had
2522 #
2523 #       0       string          \377\330\377\340        JPEG file
2524 #       0       string          \377\330\377\356        JPG file
2525 #
2526 # both of which turn into "JPEG image data" here.
2527 #
2528 0       beshort         0xffd8          JPEG image data
2529 !:mime  image/jpeg
2530 !:apple 8BIMJPEG
2531 !:strength +1
2532 >6      string          JFIF            \b, JFIF standard
2533 # The following added by Erik Rossen <rossen@freesurf.ch> 1999-09-06
2534 # in a vain attempt to add image size reporting for JFIF.  Note that these
2535 # tests are not fool-proof since some perfectly valid JPEGs are currently
2536 # impossible to specify in magic(4) format.
2537 # First, a little JFIF version info:
2538 >>11    byte            x               \b %d.
2539 >>12    byte            x               \b%02d
2540 # Next, the resolution or aspect ratio of the image:
2541 #>>13   byte            0               \b, aspect ratio
2542 #>>13   byte            1               \b, resolution (DPI)
2543 #>>13   byte            2               \b, resolution (DPCM)
2544 #>>4    beshort         x               \b, segment length %d
2545 # Next, show thumbnail info, if it exists:
2546 >>18    byte            !0              \b, thumbnail %dx
2547 >>>19   byte            x               \b%d
2548
2549 # EXIF moved down here to avoid reporting a bogus version number,
2550 # and EXIF version number printing added.
2551 #   - Patrik R=E5dman <patrik+file-magic@iki.fi>
2552 >6      string          Exif            \b, EXIF standard
2553 # Look for EXIF IFD offset in IFD 0, and then look for EXIF version tag in EXIF IFD.
2554 # All possible combinations of entries have to be enumerated, since no looping
2555 # is possible. And both endians are possible...
2556 # The combinations included below are from real-world JPEGs.
2557 # Little-endian
2558 >>12    string          II
2559 # IFD 0 Entry #5:
2560 >>>70   leshort         0x8769
2561 # EXIF IFD Entry #1:
2562 >>>>(78.l+14)   leshort 0x9000
2563 >>>>>(78.l+23)  byte    x               %c
2564 >>>>>(78.l+24)  byte    x               \b.%c
2565 >>>>>(78.l+25)  byte    !0x30           \b%c
2566 # IFD 0 Entry #9:
2567 >>>118  leshort         0x8769
2568 # EXIF IFD Entry #3:
2569 >>>>(126.l+38)  leshort 0x9000
2570 >>>>>(126.l+47) byte    x               %c
2571 >>>>>(126.l+48) byte    x               \b.%c
2572 >>>>>(126.l+49) byte    !0x30           \b%c
2573 # IFD 0 Entry #10
2574 >>>130  leshort         0x8769
2575 # EXIF IFD Entry #3:
2576 >>>>(138.l+38)  leshort 0x9000
2577 >>>>>(138.l+47) byte    x               %c
2578 >>>>>(138.l+48) byte    x               \b.%c
2579 >>>>>(138.l+49) byte    !0x30           \b%c
2580 # EXIF IFD Entry #4:
2581 >>>>(138.l+50)  leshort 0x9000
2582 >>>>>(138.l+59) byte    x               %c
2583 >>>>>(138.l+60) byte    x               \b.%c
2584 >>>>>(138.l+61) byte    !0x30           \b%c
2585 # EXIF IFD Entry #5:
2586 >>>>(138.l+62)  leshort 0x9000
2587 >>>>>(138.l+71) byte    x               %c
2588 >>>>>(138.l+72) byte    x               \b.%c
2589 >>>>>(138.l+73) byte    !0x30           \b%c
2590 # IFD 0 Entry #11
2591 >>>142  leshort         0x8769
2592 # EXIF IFD Entry #3:
2593 >>>>(150.l+38)  leshort 0x9000
2594 >>>>>(150.l+47) byte    x               %c
2595 >>>>>(150.l+48) byte    x               \b.%c
2596 >>>>>(150.l+49) byte    !0x30           \b%c
2597 # EXIF IFD Entry #4:
2598 >>>>(150.l+50)  leshort 0x9000
2599 >>>>>(150.l+59) byte    x               %c
2600 >>>>>(150.l+60) byte    x               \b.%c
2601 >>>>>(150.l+61) byte    !0x30           \b%c
2602 # EXIF IFD Entry #5:
2603 >>>>(150.l+62)  leshort 0x9000
2604 >>>>>(150.l+71) byte    x               %c
2605 >>>>>(150.l+72) byte    x               \b.%c
2606 >>>>>(150.l+73) byte    !0x30           \b%c
2607 # Big-endian
2608 >>12    string          MM
2609 # IFD 0 Entry #9:
2610 >>>118  beshort         0x8769
2611 # EXIF IFD Entry #1:
2612 >>>>(126.L+14)  beshort 0x9000
2613 >>>>>(126.L+23) byte    x               %c
2614 >>>>>(126.L+24) byte    x               \b.%c
2615 >>>>>(126.L+25) byte    !0x30           \b%c
2616 # EXIF IFD Entry #3:
2617 >>>>(126.L+38)  beshort 0x9000
2618 >>>>>(126.L+47) byte    x               %c
2619 >>>>>(126.L+48) byte    x               \b.%c
2620 >>>>>(126.L+49) byte    !0x30           \b%c
2621 # IFD 0 Entry #10
2622 >>>130  beshort         0x8769
2623 # EXIF IFD Entry #3:
2624 >>>>(138.L+38)  beshort 0x9000
2625 >>>>>(138.L+47) byte    x               %c
2626 >>>>>(138.L+48) byte    x               \b.%c
2627 >>>>>(138.L+49) byte    !0x30           \b%c
2628 # EXIF IFD Entry #5:
2629 >>>>(138.L+62)  beshort 0x9000
2630 >>>>>(138.L+71) byte    x               %c
2631 >>>>>(138.L+72) byte    x               \b.%c
2632 >>>>>(138.L+73) byte    !0x30           \b%c
2633 # IFD 0 Entry #11
2634 >>>142  beshort         0x8769
2635 # EXIF IFD Entry #4:
2636 >>>>(150.L+50)  beshort 0x9000
2637 >>>>>(150.L+59) byte    x               %c
2638 >>>>>(150.L+60) byte    x               \b.%c
2639 >>>>>(150.L+61) byte    !0x30           \b%c
2640 # Here things get sticky.  We can do ONE MORE marker segment with
2641 # indirect addressing, and that's all.  It would be great if we could
2642 # do pointer arithemetic like in an assembler language.  Christos?
2643 # And if there was some sort of looping construct to do searches, plus a few
2644 # named accumulators, it would be even more effective...
2645 # At least we can show a comment if no other segments got inserted before:
2646 >(4.S+5)        byte            0xFE
2647 >>(4.S+8)       string          >\0             \b, comment: "%s"
2648 # FIXME: When we can do non-byte counted strings, we can use that to get
2649 # the string's count, and fix Debian bug #283760
2650 #>(4.S+5)       byte            0xFE            \b, comment
2651 #>>(4.S+6)      beshort         x               \b length=%d
2652 #>>(4.S+8)      string          >\0             \b, "%s"
2653 # Or, we can show the encoding type (I've included only the three most common)
2654 # and image dimensions if we are lucky and the SOFn (image segment) is here:
2655 >(4.S+5)        byte            0xC0            \b, baseline
2656 >>(4.S+6)       byte            x               \b, precision %d
2657 >>(4.S+7)       beshort         x               \b, %dx
2658 >>(4.S+9)       beshort         x               \b%d
2659 >(4.S+5)        byte            0xC1            \b, extended sequential
2660 >>(4.S+6)       byte            x               \b, precision %d
2661 >>(4.S+7)       beshort         x               \b, %dx
2662 >>(4.S+9)       beshort         x               \b%d
2663 >(4.S+5)        byte            0xC2            \b, progressive
2664 >>(4.S+6)       byte            x               \b, precision %d
2665 >>(4.S+7)       beshort         x               \b, %dx
2666 >>(4.S+9)       beshort         x               \b%d
2667 # I've commented-out quantisation table reporting.  I doubt anyone cares yet.
2668 #>(4.S+5)       byte            0xDB            \b, quantisation table
2669 #>>(4.S+6)      beshort         x               \b length=%d
2670 #>14    beshort         x               \b, %d x
2671 #>16    beshort         x               \b %d
2672
2673
2674 #-------------------------Kernels-------------------------------------
2675
2676 # Linux kernel boot images, from Albert Cahalan <acahalan@cs.uml.edu>
2677 # and others such as Axel Kohlmeyer <akohlmey@rincewind.chemie.uni-ulm.de>
2678 # and Nicolás Lichtmaier <nick@debian.org>
2679 # All known start with: b8 c0 07 8e d8 b8 00 90 8e c0 b9 00 01 29 f6 29
2680 514     string          HdrS            Linux kernel
2681
2682 #------------------------------------------------------------------------------
2683 # $File: sql,v 1.6 2009/09/19 16:28:12 christos Exp $
2684 # sql:  file(1) magic for SQL files
2685 #
2686 # From: "Marty Leisner" <mleisner@eng.mc.xerox.com>
2687 # Recognize some MySQL files.
2688 #
2689 0       beshort                 0xfe01          MySQL table definition file
2690 >2      string                  <1              invalid
2691 >2      string                  >\11            invalid
2692 >2      byte                    x               Version %d
2693 0       string                  \xfe\xfe\x03    MySQL MISAM index file
2694 >3      string                  <1              invalid
2695 >3      string                  >\11            invalid
2696 >3      byte                    x               Version %d
2697 0       string                  \xfe\xfe\x07    MySQL MISAM compressed data file
2698 >3      string                  <1              invalid
2699 >3      string                  >\11            invalid
2700 >3      byte                    x               Version %d
2701 0       string                  \xfe\xfe\x05    MySQL ISAM index file
2702 >3      string                  <1              invalid
2703 >3      string                  >\11            invalid
2704 >3      byte                    x               Version %d
2705 0       string                  \xfe\xfe\x06    MySQL ISAM compressed data file
2706 >3      string                  <1              invalid
2707 >3      string                  >\11            invalid
2708 >3      byte                    x               Version %d
2709 0       string                  \376bin         MySQL replication log
2710
2711 #------------------------------------------------------------------------------
2712 # iRiver H Series database file 
2713 # From Ken Guest <ken@linux.ie>
2714 # As observed from iRivNavi.iDB and unencoded firmware
2715 #
2716 0   string              iRivDB  iRiver Database file
2717 >11  string     >\0     Version %s
2718 >39  string             iHP-100 [H Series]
2719
2720 #------------------------------------------------------------------------------
2721 # SQLite database files
2722 # Ken Guest <ken@linux.ie>, Ty Sarna, Zack Weinberg
2723 #
2724 # Version 1 used GDBM internally; its files cannot be distinguished
2725 # from other GDBM files.
2726 #
2727 # Version 2 used this format:
2728 0       string  **\x20This\x20file\x20contains\x20an\x20SQLite  SQLite 2.x database
2729
2730 # Version 3 of SQLite allows applications to embed their own "user version"
2731 # number in the database.  Detect this and distinguish those files.
2732
2733 0   string  SQLite\x20format\x203
2734 >60 string  _MTN               Monotone source repository
2735 >60 belong  !0                 SQLite 3.x database, user version %u
2736 >60 belong  0                  SQLite 3.x database