Import file-5.22.
[dragonfly.git] / contrib / file / magic / Magdir / filesystems
1 #------------------------------------------------------------------------------
2 # $File: filesystems,v 1.108 2015/01/01 17:43:47 christos Exp $
3 # filesystems:  file(1) magic for different filesystems
4 #
5 0       name    partid  
6 >0      ubyte   0x00    Unused
7 >0      ubyte   0x01    12-bit FAT
8 >0      ubyte   0x02    XENIX /
9 >0      ubyte   0x03    XENIX /usr
10 >0      ubyte   0x04    16-bit FAT, less than 32M
11 >0      ubyte   0x05    extended partition
12 >0      ubyte   0x06    16-bit FAT, more than 32M
13 >0      ubyte   0x07    OS/2 HPFS, NTFS, QNX2, Adv. UNIX
14 >0      ubyte   0x08    AIX or os, or etc.
15 >0      ubyte   0x09    AIX boot partition or Coherent
16 >0      ubyte   0x0a    O/2 boot manager or Coherent swap
17 >0      ubyte   0x0b    32-bit FAT
18 >0      ubyte   0x0c    32-bit FAT, LBA-mapped
19 >0      ubyte   0x0d    7XXX, LBA-mapped
20 >0      ubyte   0x0e    16-bit FAT, LBA-mapped
21 >0      ubyte   0x0f    extended partition, LBA-mapped
22 >0      ubyte   0x10    OPUS
23 >0      ubyte   0x11    OS/2 DOS 12-bit FAT
24 >0      ubyte   0x12    Compaq diagnostics
25 >0      ubyte   0x14    OS/2 DOS 16-bit FAT <32M
26 >0      ubyte   0x16    OS/2 DOS 16-bit FAT >=32M
27 >0      ubyte   0x17    OS/2 hidden IFS
28 >0      ubyte   0x18    AST Windows swapfile
29 >0      ubyte   0x19    Willowtech Photon coS
30 >0      ubyte   0x1b    hidden win95 fat 32
31 >0      ubyte   0x1c    hidden win95 fat 32 lba
32 >0      ubyte   0x1d    hidden win95 fat 16 lba
33 >0      ubyte   0x20    Willowsoft OFS1
34 >0      ubyte   0x21    reserved
35 >0      ubyte   0x23    reserved
36 >0      ubyte   0x24    NEC DOS
37 >0      ubyte   0x26    reserved
38 >0      ubyte   0x31    reserved
39 >0      ubyte   0x32    Alien Internet Services NOS
40 >0      ubyte   0x33    reserved
41 >0      ubyte   0x34    reserved
42 >0      ubyte   0x35    JFS on OS2
43 >0      ubyte   0x36    reserved
44 >0      ubyte   0x38    Theos
45 >0      ubyte   0x39    Plan 9, or Theos spanned
46 >0      ubyte   0x3a    Theos ver 4 4gb partition
47 >0      ubyte   0x3b    Theos ve 4 extended partition
48 >0      ubyte   0x3c    PartitionMagic recovery
49 >0      ubyte   0x3d    Hidden Netware
50 >0      ubyte   0x40    VENIX 286 or LynxOS
51 >0      ubyte   0x41    PReP
52 >0      ubyte   0x42    linux swap sharing DRDOS disk
53 >0      ubyte   0x43    linux sharing DRDOS disk
54 >0      ubyte   0x44    GoBack change utility
55 >0      ubyte   0x45    Boot US Boot manager
56 >0      ubyte   0x46    EUMEL/Elan or Ergos 3
57 >0      ubyte   0x47    EUMEL/Elan or Ergos 3
58 >0      ubyte   0x48    EUMEL/Elan or Ergos 3
59 >0      ubyte   0x4a    ALFX/THIN filesystem for DOS
60 >0      ubyte   0x4c    Oberon partition
61 >0      ubyte   0x4d    QNX4.x
62 >0      ubyte   0x4e    QNX4.x 2nd part
63 >0      ubyte   0x4f    QNX4.x 3rd part
64 >0      ubyte   0x50    DM (disk manager)
65 >0      ubyte   0x51    DM6 Aux1 (or Novell)
66 >0      ubyte   0x52    CP/M or Microport SysV/AT
67 >0      ubyte   0x53    DM6 Aux3
68 >0      ubyte   0x54    DM6 DDO
69 >0      ubyte   0x55    EZ-Drive (disk manager)
70 >0      ubyte   0x56    Golden Bow (disk manager)
71 >0      ubyte   0x57    Drive PRO
72 >0      ubyte   0x5c    Priam Edisk (disk manager)
73 >0      ubyte   0x61    SpeedStor
74 >0      ubyte   0x63    GNU HURD or Mach or Sys V/386
75 >0      ubyte   0x64    Novell Netware 2.xx or Speedstore
76 >0      ubyte   0x65    Novell Netware 3.xx
77 >0      ubyte   0x66    Novell 386 Netware
78 >0      ubyte   0x67    Novell
79 >0      ubyte   0x68    Novell
80 >0      ubyte   0x69    Novell
81 >0      ubyte   0x70    DiskSecure Multi-Boot
82 >0      ubyte   0x71    reserved
83 >0      ubyte   0x73    reserved
84 >0      ubyte   0x74    reserved
85 >0      ubyte   0x75    PC/IX
86 >0      ubyte   0x76    reserved
87 >0      ubyte   0x77    M2FS/M2CS partition
88 >0      ubyte   0x78    XOSL boot loader filesystem
89 >0      ubyte   0x80    MINIX until 1.4a
90 >0      ubyte   0x81    MINIX since 1.4b
91 >0      ubyte   0x82    Linux swap or Solaris
92 >0      ubyte   0x83    Linux native
93 >0      ubyte   0x84    OS/2 hidden C: drive
94 >0      ubyte   0x85    Linux extended partition
95 >0      ubyte   0x86    NT FAT volume set
96 >0      ubyte   0x87    NTFS volume set or HPFS mirrored
97 >0      ubyte   0x8a    Linux Kernel AiR-BOOT partition
98 >0      ubyte   0x8b    Legacy Fault tolerant FAT32
99 >0      ubyte   0x8c    Legacy Fault tolerant FAT32 ext
100 >0      ubyte   0x8d    Hidden free FDISK FAT12
101 >0      ubyte   0x8e    Linux Logical Volume Manager
102 >0      ubyte   0x90    Hidden free FDISK FAT16
103 >0      ubyte   0x91    Hidden free FDISK DOS EXT
104 >0      ubyte   0x92    Hidden free FDISK FAT16 Big
105 >0      ubyte   0x93    Amoeba filesystem
106 >0      ubyte   0x94    Amoeba bad block table
107 >0      ubyte   0x95    MIT EXOPC native partitions
108 >0      ubyte   0x97    Hidden free FDISK FAT32
109 >0      ubyte   0x98    Datalight ROM-DOS Super-Boot
110 >0      ubyte   0x99    Mylex EISA SCSI
111 >0      ubyte   0x9a    Hidden free FDISK FAT16 LBA
112 >0      ubyte   0x9b    Hidden free FDISK EXT LBA
113 >0      ubyte   0x9f    BSDI?
114 >0      ubyte   0xa0    IBM Thinkpad hibernation
115 >0      ubyte   0xa1    HP Volume expansion (SpeedStor)
116 >0      ubyte   0xa3    HP Volume expansion (SpeedStor)
117 >0      ubyte   0xa4    HP Volume expansion (SpeedStor)
118 >0      ubyte   0xa5    386BSD partition type
119 >0      ubyte   0xa6    OpenBSD partition type
120 >0      ubyte   0xa7    NeXTSTEP 486
121 >0      ubyte   0xa8    Apple UFS
122 >0      ubyte   0xa9    NetBSD partition type
123 >0      ubyte   0xaa    Olivetty Fat12 1.44MB Service part
124 >0      ubyte   0xab    Apple Boot
125 >0      ubyte   0xae    SHAG OS filesystem
126 >0      ubyte   0xaf    Apple HFS
127 >0      ubyte   0xb0    BootStar Dummy
128 >0      ubyte   0xb1    reserved
129 >0      ubyte   0xb3    reserved
130 >0      ubyte   0xb4    reserved
131 >0      ubyte   0xb6    reserved
132 >0      ubyte   0xb7    BSDI BSD/386 filesystem
133 >0      ubyte   0xb8    BSDI BSD/386 swap
134 >0      ubyte   0xbb    Boot Wizard Hidden
135 >0      ubyte   0xbe    Solaris 8 partition type
136 >0      ubyte   0xbf    Solaris partition type
137 >0      ubyte   0xc0    CTOS
138 >0      ubyte   0xc1    DRDOS/sec (FAT-12)
139 >0      ubyte   0xc2    Hidden Linux
140 >0      ubyte   0xc3    Hidden Linux swap
141 >0      ubyte   0xc4    DRDOS/sec (FAT-16, < 32M)
142 >0      ubyte   0xc5    DRDOS/sec (EXT)
143 >0      ubyte   0xc6    DRDOS/sec (FAT-16, >= 32M)
144 >0      ubyte   0xc7    Syrinx (Cyrnix?) or HPFS disabled
145 >0      ubyte   0xc8    Reserved for DR-DOS 8.0+
146 >0      ubyte   0xc9    Reserved for DR-DOS 8.0+
147 >0      ubyte   0xca    Reserved for DR-DOS 8.0+
148 >0      ubyte   0xcb    DR-DOS 7.04+ Secured FAT32 CHS
149 >0      ubyte   0xcc    DR-DOS 7.04+ Secured FAT32 LBA
150 >0      ubyte   0xcd    CTOS Memdump
151 >0      ubyte   0xce    DR-DOS 7.04+ FAT16X LBA
152 >0      ubyte   0xcf    DR-DOS 7.04+ EXT LBA
153 >0      ubyte   0xd0    REAL/32 secure big partition
154 >0      ubyte   0xd1    Old Multiuser DOS FAT12
155 >0      ubyte   0xd4    Old Multiuser DOS FAT16 Small
156 >0      ubyte   0xd5    Old Multiuser DOS Extended
157 >0      ubyte   0xd6    Old Multiuser DOS FAT16 Big
158 >0      ubyte   0xd8    CP/M 86
159 >0      ubyte   0xdb    CP/M or Concurrent CP/M
160 >0      ubyte   0xdd    Hidden CTOS Memdump
161 >0      ubyte   0xde    Dell PowerEdge Server utilities
162 >0      ubyte   0xdf    DG/UX virtual disk manager
163 >0      ubyte   0xe0    STMicroelectronics ST AVFS
164 >0      ubyte   0xe1    DOS access or SpeedStor 12-bit
165 >0      ubyte   0xe3    DOS R/O or Storage Dimensions
166 >0      ubyte   0xe4    SpeedStor 16-bit FAT < 1024 cyl.
167 >0      ubyte   0xe5    reserved
168 >0      ubyte   0xe6    reserved
169 >0      ubyte   0xeb    BeOS
170 >0      ubyte   0xee    GPT Protective MBR
171 >0      ubyte   0xef    EFI system partition
172 >0      ubyte   0xf0    Linux PA-RISC boot loader
173 >0      ubyte   0xf1    SpeedStor or Storage Dimensions
174 >0      ubyte   0xf2    DOS 3.3+ Secondary
175 >0      ubyte   0xf3    reserved
176 >0      ubyte   0xf4    SpeedStor large partition
177 >0      ubyte   0xf5    Prologue multi-volumen partition
178 >0      ubyte   0xf6    reserved
179 >0      ubyte   0xf9    pCache: ext2/ext3 persistent cache
180 >0      ubyte   0xfa    Bochs x86 emulator
181 >0      ubyte   0xfb    VMware File System
182 >0      ubyte   0xfc    VMware Swap
183 >0      ubyte   0xfd    Linux RAID partition persistent sb
184 >0      ubyte   0xfe    LANstep or IBM PS/2 IML
185 >0      ubyte   0xff    Xenix Bad Block Table
186
187 0       string  \366\366\366\366        PC formatted floppy with no filesystem
188 # Sun disk labels
189 # From /usr/include/sun/dklabel.h:
190 0774    beshort         0xdabe          
191 # modified by Joerg Jenderek, because original test
192 # succeeds for Cabinet archive dao360.dl_ with negative blocks
193 >0770   long            >0              Sun disk label
194 >>0     string          x               '%s
195 >>>31   string          >\0             \b%s
196 >>>>63  string          >\0             \b%s
197 >>>>>95 string          >\0             \b%s
198 >>0     string          x               \b'
199 >>0734  short           >0              %d rpm,
200 >>0736  short           >0              %d phys cys,
201 >>0740  short           >0              %d alts/cyl,
202 >>0746  short           >0              %d interleave,
203 >>0750  short           >0              %d data cyls,
204 >>0752  short           >0              %d alt cyls,
205 >>0754  short           >0              %d heads/partition,
206 >>0756  short           >0              %d sectors/track,
207 >>0764  long            >0              start cyl %d,
208 >>0770  long            x               %d blocks
209 # Is there a boot block written 1 sector in?
210 >512    belong&077777777        0600407 \b, boot block present
211
212 # Joerg Jenderek: Smart Boot Manager backup file is 25 (MSDOS) or 41 (LINUX) byte header + first sectors of disk
213 # (http://btmgr.sourceforge.net/docs/user-guide-3.html)
214 0               string  SBMBAKUP_       Smart Boot Manager backup file
215 >9              string  x               \b, version %-5.5s
216 >>14            string  =_              
217 >>>15           string  x               %-.1s
218 >>>>16          string  =_              \b.
219 >>>>>17         string  x               \b%-.1s
220 >>>>>>18        string  =_              \b.
221 >>>>>>>19       string  x               \b%-.1s
222 >>>22           ubyte   0               
223 >>>>21          ubyte   x               \b, from drive 0x%x
224 >>>22           ubyte   >0              
225 >>>>21          string  x               \b, from drive %s
226 >>>535          search/17       \x55\xAA        
227 >>>>&-512       indirect        x       \b; contains 
228
229 # updated by Joerg Jenderek at Nov 2012
230 # DOS Emulator image is 128 byte, null right padded header + harddisc image
231 0       string  DOSEMU\0                        
232 >0x27E  leshort 0xAA55                  
233 #offset is 128
234 >>19    ubyte   128                     
235 >>>(19.b-1)     ubyte   0x0     DOS Emulator image
236 >>>>7   ulelong >0              \b, %u heads
237 >>>>11  ulelong >0              \b, %d sectors/track
238 >>>>15  ulelong >0              \b, %d cylinders
239 >>>>128 indirect        x       \b; contains 
240
241 # added by Joerg Jenderek at Nov 2012
242 # http://www.thenakedpc.com/articles/v04/08/0408-05.html
243 # Symantec (Peter Norton) Image.dat file consists of variable header, bootrecord, part of FAT and root directory data
244 0       string  PNCIHISK\0              Norton Utilities disc image data
245 # real x86 boot sector with jump instruction
246 >509    search/1026     \x55\xAA\xeb    
247 >>&-1   indirect        x               \b; contains 
248 # http://file-extension.net/seeker/file_extension_dat
249 0       string  PNCIUNDO                Norton Disk Doctor UnDo file
250 #
251
252 # DOS/MBR boot sector updated by Joerg Jenderek at Sep 2007,May 2011,2013
253 # for any allowed sector sizes
254 30              search/481      \x55\xAA        
255 # to display DOS/MBR boot sector (40) before old one (strength=50+21),Syslinux bootloader (71),SYSLINUX MBR (37+36),NetBSD mbr (110),AdvanceMAME mbr (111)
256 # DOS BPB information (70) and after DOS floppy (120) like in previous file version
257 !:strength +65
258 # for sector sizes < 512 Bytes
259 >11             uleshort        <512            
260 >>(11.s-2)      uleshort        0xAA55          DOS/MBR boot sector
261 # for sector sizes with 512 or more Bytes
262 >0x1FE          leshort         0xAA55          DOS/MBR boot sector
263
264 # keep old DOS/MBR boot sector as dummy for mbr and bootloader displaying
265 # only for sector sizes with 512 or more Bytes
266 0x1FE          leshort         0xAA55           DOS/MBR boot sector
267 #
268 # to display information (50) before DOS BPB (strength=70) and after DOS floppy (120) like in old file version
269 !:strength +65
270 >2              string          OSBS            OS/BS MBR
271 # added by Joerg Jenderek at Feb 2013 according to http://thestarman.pcministry.com/asm/mbr/
272 # and http://en.wikipedia.org/wiki/Master_Boot_Record
273 # test for nearly all MS-DOS Master Boot Record initial program loader (IPL) is now done by 
274 # characteristic assembler instructions: xor ax,ax;mov ss,ax;mov sp,7c00
275 >0      search/2        \x33\xc0\x8e\xd0\xbc\x00\x7c    MS-MBR
276 # Microsoft Windows 95A and early ( http://thestarman.pcministry.com/asm/mbr/STDMBR.htm )
277 # assembler instructions: mov si,sp;push ax;pop es;push ax;pop ds;sti;cld
278 >>8     ubequad         0x8bf45007501ffbfc              
279 # http://thestarman.pcministry.com/asm/mbr/200MBR.htm
280 >>>0x16 ubyte           0xF3                            \b,DOS 2
281 >>>>219 regex           Author\ -\                      Author:
282 # found "David Litton" , "A Pehrsson  "
283 >>>>>&0 string          x                               "%s"
284 >>>0x16 ubyte           0xF2                            
285 # NEC MS-DOS 3.30 Rev. 3 . See http://thestarman.pcministry.com/asm/mbr/DOS33MBR.htm
286 # assembler instructions: mov di,077c;cmp word ptrl[di],a55a;jnz
287 >>>>0x22        ubequad 0xbf7c07813d5aa575              \b,NEC 3.3
288 # version MS-DOS 3.30 til MS-Windows 95A (WinVer=4.00.1111)
289 >>>>0x22        default x                               \b,D0S version 3.3-7.0
290 # error messages are printed by assembler instructions: mov si,06nn;...;int 10 (0xBEnn06;...)
291 # where nn is string offset varying for different languages
292 # "Invalid partition table"                             nn=0x8b for english version
293 >>>>>(0x49.b)   string          Invalid\ partition\ table               english
294 >>>>>(0x49.b)   string          Ung\201ltige\ Partitionstabelle         german
295 >>>>>(0x49.b)   string          Table\ de\ partition\ invalide          french
296 >>>>>(0x49.b)   string          Tabela\ de\ parti\207ao\ inv\240lida    portuguese
297 >>>>>(0x49.b)   string          Tabla\ de\ partici\242n\ no\ v\240lida  spanish
298 >>>>>(0x49.b)   string          Tavola\ delle\ partizioni\ non\ valida  italian
299 >>>>>0x49       ubyte           >0                      at offset 0x%x
300 >>>>>>(0x49.b)  string          >\0                     "%s"
301 # "Error loading operating system"                      nn=0xa3 for english version
302 # "Fehler beim Laden des Betriebssystems"               nn=0xa7 for german version
303 # "Erreur en chargeant syst\212me d'exploitation"       nn=0xa7 for french version
304 # "Erro na inicializa\207ao do sistema operacional"     nn=0xa7 for portuguese Brazilian version
305 # "Error al cargar sistema operativo"                   nn=0xa8 for spanish version
306 # "Errore durante il caricamento del sistema operativo" nn=0xae for italian version
307 >>>>>0x74       ubyte           >0                      at offset 0x%x
308 >>>>>>(0x74.b)  string          >\0                     "%s"
309 # "Missing operating system"                            nn=0xc2 for english version
310 # "Betriebssystem fehlt"                                nn=0xcd for german version
311 # "Syst\212me d'exploitation absent"                    nn=0xd2 for french version
312 # "Sistema operacional nao encontrado"                  nn=0xd4 for portuguese Brazilian version
313 # "Falta sistema operativo"                             nn=0xca for spanish version
314 # "Sistema operativo mancante"                          nn=0xe2 for italian version
315 >>>>>0x79       ubyte           >0                      at offset 0x%x
316 >>>>>>(0x79.b)  string          >\0                     "%s"
317 # Microsoft Windows 95B to XP (http://thestarman.pcministry.com/asm/mbr/95BMEMBR.htm)
318 # assembler instructions: push ax;pop es;push  ax;pop ds;cld;mov si,7c1b
319 >>8     ubequad         0x5007501ffcbe1b7c              
320 # assembler instructions: rep;movsb;retf;mov si,07be;mov cl,04
321 >>>24           ubequad 0xf3a4cbbebe07b104              9M
322 # "Invalid partition table"                             nn=0x10F for english version
323 # "Ung\201ltige Partitionstabelle"                              nn=0x10F for german version
324 # "Table de partition erron\202e"                               nn=0x10F for french version
325 # "\216\257\245\340\240\346\250\256\255\255\240\357 \341\250\341\342\245\254\240 \255\245 \255\240\251\244\245\255\240" nn=0x10F for russian version
326 >>>>(0x3C.b+0x0FF)      string  Invalid\ partition\ table               english
327 >>>>(0x3C.b+0x0FF)      string  Ung\201ltige\ Partitionstabelle         german
328 >>>>(0x3C.b+0x0FF)      string  Table\ de\ partition\ erron\202e        french
329 >>>>(0x3C.b+0x0FF)      string  \215\245\257\340\240\242\250\253\354\255\240\357\ \342\240\241\253\250\346\240  russian
330 >>>>0x3C                ubyte   x                       at offset 0x%x+0xFF
331 >>>>(0x3C.b+0x0FF)      string  >\0                     "%s"
332 # "Error loading operating system"                      nn=0x127 for english version
333 # "Fehler beim Laden des Betriebssystems"               nn=0x12b for german version
334 # "Erreur lors du chargement du syst\212me d'exploitation"      nn=0x12a for french version
335 # "\216\350\250\241\252\240 \257\340\250 \247\240\243\340\343\247\252\245 \256\257\245\340\240\346\250\256\255\255\256\251 \341\250\341\342\245\254\353"        nn=0x12d for russian version
336 >>>>0xBD                ubyte   x                       at offset 0x1%x
337 >>>>(0xBD.b+0x100)      string  >\0                     "%s"
338 # "Missing operating system"                            nn=0x146 for english version
339 # "Betriebssystem fehlt"                                nn=0x151 for german version
340 # "Syst\212me d'exploitation manquant"                  nn=0x15e for french version
341 # "\216\257\245\340\240\346\250\256\255\255\240\357 \341\250\341\342\245\254\240 \255\245 \255\240\251\244\245\255\240" nn=0x156 for russian version
342 >>>>0xA9                ubyte   x                       at offset 0x1%x
343 >>>>(0xA9.b+0x100)      string  >\0                     "%s"
344 # http://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm
345 # assembler instructions: rep;movsb;retf;mov BP,07be;mov cl,04
346 >>>24           ubequad 0xf3a4cbbdbe07b104              XP
347 # where xxyyzz are lower bits from offsets of error messages varying for different languages
348 >>>>0x1B4       ubelong&0x00FFFFFF      0x002c4463      english
349 >>>>0x1B4       ubelong&0x00FFFFFF      0x002c486e      german
350 # "Invalid partition table"                             xx=0x12C for english version
351 # "Ung\201ltige Partitionstabelle"                              xx=0x12C for german version
352 >>>>0x1b5       ubyte           >0                      at offset 0x1%x
353 >>>>(0x1b5.b+0x100)     string  >\0                     "%s"
354 # "Error loading operating system"                      yy=0x144 for english version
355 # "Fehler beim Laden des Betriebssystems"               yy=0x148 for german version
356 >>>>0x1b6       ubyte           >0                      at offset 0x1%x
357 >>>>(0x1b6.b+0x100)     string  >\0                     "%s"
358 # "Missing operating system"                            zz=0x163 for english version
359 # "Betriebssystem nicht vorhanden"                      zz=0x16e for german version
360 >>>>0x1b7       ubyte           >0                      at offset 0x1%x
361 >>>>(0x1b7.b+0x100)     string  >\0                     "%s"
362 # Microsoft Windows Vista or 7
363 # assembler instructions: ..;mov ds,ax;mov si,7c00;mov di,..00
364 >>8     ubequad         0xc08ed8be007cbf00              
365 # Microsoft Windows Vista (http://thestarman.pcministry.com/asm/mbr/VistaMBR.htm)
366 # assembler instructions: jnz 0729;cmp ebx,"TCPA"
367 >>>0xEC         ubequad 0x753b6681fb544350              Vista
368 # where xxyyzz are lower bits from offsets of error messages varying for different languages
369 >>>>0x1B4       ubelong&0x00FFFFFF      0x00627a99      english
370 #>>>>0x1B4      ubelong&0x00FFFFFF      ?               german
371 # "Invalid partition table"                             xx=0x162 for english version
372 # "Ung\201ltige Partitionstabelle"                              xx=0x1?? for german version
373 >>>>0x1b5       ubyte           >0                      at offset 0x1%x
374 >>>>(0x1b5.b+0x100)     string  >\0                     "%s"
375 # "Error loading operating system"                      yy=0x17a for english version
376 # "Fehler beim Laden des Betriebssystems"               yy= 0x1?? for german version
377 >>>>0x1b6       ubyte           >0                      at offset 0x1%x
378 >>>>(0x1b6.b+0x100)     string  >\0                     "%s"
379 # "Missing operating system"                            zz=0x199 for english version
380 # "Betriebssystem nicht vorhanden"                      zz=0x1?? for german version
381 >>>>0x1b7       ubyte           >0                      at offset 0x1%x
382 >>>>(0x1b7.b+0x100)     string  >\0                     "%s"
383 # Microsoft Windows 7 (http://thestarman.pcministry.com/asm/mbr/W7MBR.htm)
384 # assembler instructions: cmp ebx,"TCPA";cmp
385 >>>0xEC         ubequad 0x6681fb5443504175              Windows 7
386 # where xxyyzz are lower bits from offsets of error messages varying for different languages
387 >>>>0x1B4       ubelong&0x00FFFFFF      0x00637b9a      english
388 #>>>>0x1B4      ubelong&0x00FFFFFF      ?               german
389 # "Invalid partition table"                             xx=0x163 for english version
390 # "Ung\201ltige Partitionstabelle"                              xx=0x1?? for german version
391 >>>>0x1b5       ubyte           >0                      at offset 0x1%x
392 >>>>(0x1b5.b+0x100)     string  >\0                     "%s"
393 # "Error loading operating system"                      yy=0x17b for english version
394 # "Fehler beim Laden des Betriebssystems"               yy=0x1?? for german version
395 >>>>0x1b6       ubyte           >0                      at offset 0x1%x
396 >>>>(0x1b6.b+0x100)     string  >\0                     "%s"
397 # "Missing operating system"                            zz=0x19a for english version
398 # "Betriebssystem nicht vorhanden"                      zz=0x1?? for german version
399 >>>>0x1b7       ubyte           >0                      at offset 0x1%x
400 >>>>(0x1b7.b+0x100)     string  >\0                     "%s"
401 # http://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DiskSigs
402 # http://en.wikipedia.org/wiki/MBR_disk_signature#ID
403 >>0x1b8 ulelong         >0                              \b, disk signature 0x%-.4x
404 # driveID/timestamp for Win 95B,98,98SE and ME. See http://thestarman.pcministry.com/asm/mbr/mystery.htm
405 >>0xDA  uleshort                0                       
406 >>>0xDC         ulelong         >0                      \b, created
407 # physical drive number (0x80-0xFF) when the Windows wrote that byte to the drive
408 >>>>0xDC        ubyte           x                       with driveID 0x%x
409 # hours, minutes and seconds 
410 >>>>0xDf        ubyte           x                       at %x
411 >>>>0xDe        ubyte           x                       \b:%x
412 >>>>0xDd        ubyte           x                       \b:%x
413 # special case for Microsoft MS-DOS 3.21 spanish
414 # assembler instructions: cli;mov $0x30,%ax;mov %ax,%ss;mov 
415 >0      ubequad         0xfab830008ed0bc00              
416 # assembler instructions: $0x1f00,%sp;mov $0x80cb,%di;add %cl,(%bx,%si);in (%dx),%ax;mov 
417 >>8     ubequad         0x1fbfcb800008ed8               MS-MBR,D0S version 3.21 spanish
418 # Microsoft MBR IPL end
419
420 # dr-dos with some upper-, lowercase variants
421 >0x9D   string  Invalid\ partition\ table$      
422 >>181   string  No\ Operating\ System$          
423 >>>201  string  Operating\ System\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03
424 >0x9D   string  Invalid\ partition\ table$      
425 >>181   string  No\ operating\ system$          
426 >>>201  string  Operating\ system\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03
427 >342    string  Invalid\ partition\ table$      
428 >>366   string  No\ operating\ system$          
429 >>>386  string  Operating\ system\ load\ error$ \b, DR-DOS MBR, version 7.01 to 7.03
430 >295    string  NEWLDR\0                                
431 >>302   string  Bad\ PT\ $                              
432 >>>310  string  No\ OS\ $                               
433 >>>>317 string  OS\ load\ err$                          
434 >>>>>329        string  Moved\ or\ missing\ IBMBIO.LDR\n\r      
435 >>>>>>358       string  Press\ any\ key\ to\ continue.\n\r$     
436 >>>>>>>387      string  Copyright\ (c)\ 1984,1998       
437 >>>>>>>>411     string  Caldera\ Inc.\0         \b, DR-DOS MBR (IBMBIO.LDR)
438 #
439 # tests for different MS-DOS Master Boot Records (MBR) moved and merged
440 #
441 #>0x145 string  Default:\ F                             \b, FREE-DOS MBR
442 #>0x14B string  Default:\ F                             \b, FREE-DOS 1.0 MBR
443 >0x145  search/7        Default:\ F                     \b, FREE-DOS MBR
444 #>>313          string  F0\ .\ .\ .                     
445 #>>>322         string  disk\ 1                         
446 #>>>>382        string  FAT3                            
447 >64     string  no\ active\ partition\ found    
448 >>96    string  read\ error\ while\ reading\ drive      \b, FREE-DOS Beta 0.9 MBR
449 # Ranish Partition Manager http://www.ranish.com/part/
450 >387    search/4        \0\ Error!\r                    
451 >>378   search/7        Virus!                          
452 >>>397  search/4        Booting\                        
453 >>>>408 search/4        HD1/\0                          \b, Ranish MBR (
454 >>>>>416        string  Writing\ changes...             \b2.37
455 >>>>>>438       ubyte           x                       \b,0x%x dots
456 >>>>>>440       ubyte           >0                      \b,virus check
457 >>>>>>441       ubyte           >0                      \b,partition %c
458 #2.38,2.42,2.44
459 >>>>>416        string  !Writing\ changes...            \b
460 >>>>>>418       ubyte   1                               \bvirus check,
461 >>>>>>419       ubyte   x                               \b0x%x seconds
462 >>>>>>420       ubyte&0x0F      >0                      \b,partition
463 >>>>>>>420      ubyte&0x0F      <5                      \b %x
464 >>>>>>>420      ubyte&0x0F      0Xf                     \b ask
465 >>>>>420        ubyte           x                       \b)
466 #
467 # SYSLINUX MBR moved
468 # http://www.acronis.de/
469 >362    string  MBR\ Error\ \0\r                        
470 >>376   string  ress\ any\ key\ to\                     
471 >>>392  string  boot\ from\ floppy...\0                 \b, Acronis MBR
472 # added by Joerg Jenderek
473 # http://www.visopsys.org/
474 # http://partitionlogic.org.uk/
475 >309    string  No\ bootable\ partition\ found\r        
476 >>339   string  I/O\ Error\ reading\ boot\ sector\r     \b, Visopsys MBR
477 >349    string  No\ bootable\ partition\ found\r        
478 >>379   string  I/O\ Error\ reading\ boot\ sector\r     \b, simple Visopsys MBR
479 # bootloader, bootmanager
480 >0x40   string  SBML                            
481 # label with 11 characters of FAT 12 bit filesystem
482 >>43    string  SMART\ BTMGR                    
483 >>>430  string  SBMK\ Bad!\r                    \b, Smart Boot Manager
484 # OEM-ID not always "SBM"
485 #>>>>3  strings SBM                             
486 >>>>6   string  >\0                             \b, version %s
487 >382    string  XOSLLOADXCF                     \b, eXtended Operating System Loader
488 >6      string  LILO                            \b, LInux i386 boot LOader
489 >>120   string  LILO                            \b, version 22.3.4 SuSe
490 >>172   string  LILO                            \b, version 22.5.8 Debian
491 # updated by Joerg Jenderek at Oct 2008
492 # variables according to grub-0.97/stage1/stage1.S or
493 # http://www.gnu.org/software/grub/manual/grub.html#Embedded-data
494 # usual values are marked with comments to get only informations of strange GRUB loaders
495 >342            search/60       \0Geom\0        
496 #>0             ulelong         x               %x=0x009048EB , 0x2a9048EB  0
497 >>0x41          ubyte           <2              
498 >>>0x3E         ubyte           >2              \b; GRand Unified Bootloader
499 # 0x3 for 0.5.95,0.93,0.94,0.96 0x4 for 1.90 
500 >>>>0x3E        ubyte           x               \b, stage1 version 0x%x
501 #If it is 0xFF, use a drive passed by BIOS
502 >>>>0x40        ubyte           <0xFF           \b, boot drive 0x%x
503 # in most case 0,1,0x2e for GRUB 0.5.95
504 >>>>0x41        ubyte           >0              \b, LBA flag 0x%x
505 >>>>0x42        uleshort        <0x8000         \b, stage2 address 0x%x
506 #>>>>0x42       uleshort        =0x8000         \b, stage2 address 0x%x (usual)
507 >>>>0x42        uleshort        >0x8000         \b, stage2 address 0x%x
508 #>>>>0x44       ulelong         =1              \b, 1st sector stage2 0x%x (default)
509 >>>>0x44        ulelong         >1              \b, 1st sector stage2 0x%x
510 >>>>0x48        uleshort        <0x800          \b, stage2 segment 0x%x
511 #>>>>0x48       uleshort        =0x800          \b, stage2 segment 0x%x (usual)
512 >>>>0x48        uleshort        >0x800          \b, stage2 segment 0x%x
513 >>>>402         string  Geom\0Hard\ Disk\0Read\0\ Error\0
514 >>>>>394        string  stage1                  \b, GRUB version 0.5.95
515 >>>>382         string  Geom\0Hard\ Disk\0Read\0\ Error\0
516 >>>>>376        string  GRUB\ \0                \b, GRUB version 0.93 or 1.94
517 >>>>383         string  Geom\0Hard\ Disk\0Read\0\ Error\0
518 >>>>>377        string  GRUB\ \0                \b, GRUB version 0.94
519 >>>>385         string  Geom\0Hard\ Disk\0Read\0\ Error\0
520 >>>>>379        string  GRUB\ \0                \b, GRUB version 0.95 or 0.96
521 >>>>391         string  Geom\0Hard\ Disk\0Read\0\ Error\0
522 >>>>>385        string  GRUB\ \0                \b, GRUB version 0.97
523 # unknown version
524 >>>343          string  Geom\0Read\0\ Error\0   
525 >>>>321         string  Loading\ stage1.5       \b, GRUB version x.y
526 >>>380          string  Geom\0Hard\ Disk\0Read\0\ Error\0
527 >>>>374         string  GRUB\ \0                \b, GRUB version n.m
528 # SYSLINUX bootloader moved
529 >395    string  chksum\0\ ERROR!\0              \b, Gujin bootloader
530 # http://www.bcdwb.de/bcdw/index_e.htm
531 >3      string  BCDL                            
532 >>498   string  BCDL\ \ \ \ BIN                 \b, Bootable CD Loader (1.50Z)
533 # mbr partition table entries updated by Joerg Jenderek at Sep 2013
534 # skip Norton Utilities disc image data
535 >3              string          !IHISK          
536 # skip Linux style boot sector starting with assember instructions mov 0x7c0,ax;
537 >>0             belong          !0xb8c0078e             
538 # not Linux kernel 
539 >>>514          string          !HdrS                   
540 # not BeOS
541 >>>>422         string          !Be\ Boot\ Loader       
542 >>>>>32769      string    CD001
543 >>>>>>0 use cdrom
544 # jump over BPB instruction implies DOS bootsector or AdvanceMAME mbr 
545 >>>>>0          ubelong&0xFD000000      =0xE9000000     
546 # AdvanceMAME mbr
547 >>>>>>(1.b+2)   ubequad         0xfa31c08ed88ec08e      
548 >>>>>>>446      use             partition-table
549 # mbr, Norton Utilities disc image data, or 2nd,etc. sector of x86 bootloader
550 >>>>>0          ubelong&0xFD000000      !0xE9000000     
551 # skip FSInfosector
552 >>>>>>0         string          !RRaA           
553 # skip 3rd sector of MS x86 bootloader with assember instructions cli;MOVZX EAX,BYTE PTR [BP+10];MOV ECX,
554 # http://thestarman.pcministry.com/asm/mbr/MSWIN41.htm
555 >>>>>>>0        ubequad         !0xfa660fb64610668b     
556 # skip 13rd sector of MS x86 bootloader
557 >>>>>>>>0       ubequad         !0x660fb64610668b4e     
558 # skip sector starting with DOS new line
559 >>>>>>>>>0      string          !\r\n                   
560 # allowed active flag 0,80h-FFh
561 >>>>>>>>>>446   ubyte           0                       
562 >>>>>>>>>>>446  use             partition-table
563 >>>>>>>>>>446   ubyte           >0x7F                   
564 >>>>>>>>>>>446  use             partition-table
565 # TODO: test for extended bootrecord (ebr) moved and merged with mbr partition table entries
566 # mbr partition table entries end
567 # http://www.acronis.de/
568 #FAT label=ACRONIS\ SZ
569 #OEM-ID=BOOTWIZ0
570 >442    string  Non-system\ disk,\      
571 >>459   string  press\ any\ key...\x7\0         \b, Acronis Startup Recovery Loader
572 # updated by Joerg Jenderek at Nov 2012, Sep 2013
573 # DOS names like F11.SYS or BOOTWIZ.SYS are 8 right space padded bytes+3 bytes
574 # display 1 space
575 >>>447  ubyte   x               \b 
576 >>>477  use     DOS-filename
577 #
578 >185    string  FDBOOT\ Version\                        
579 >>204   string  \rNo\ Systemdisk.\                      
580 >>>220  string  Booting\ from\ harddisk.\n\r            
581 >>>245  string  Cannot\ load\ from\ harddisk.\n\r       
582 >>>>273 string  Insert\ Systemdisk\                     
583 >>>>>291 string and\ press\ any\ key.\n\r               \b, FDBOOT harddisk Bootloader
584 >>>>>>200 string        >\0                             \b, version %-3s
585 >242    string  Bootsector\ from\ C.H.\ Hochst\204      
586 # http://freecode.com/projects/dosfstools       dosfstools-n.m/src/mkdosfs.c
587 # updated by Joerg Jenderek at Nov 2012. Use search directive with offset instead of string
588 # skip name "C.H. Hochstaetter" partly because it is sometimes written without umlaut
589 >242    search/127      Bootsector\ from\ C.H.\ Hochst                  
590 >>278   search/127      No\ Systemdisk.\ Booting\ from\ harddisk        
591 # followed by variants with point,CR-NL or NL-CR
592 >>>208  search/261      Cannot\ load\ from\ harddisk.                   
593 # followed by variants CR-NL or NL-CR
594 >>>>236 search/235      Insert\ Systemdisk\ and\ press\ any\ key.       
595 # followed by variants with point,CR-NL or NL-CR
596 >>>>>180        search/96       Disk\ formatted\ with\ WinImage\        \b, WinImage harddisk Bootloader
597 # followed by string like "6.50 (c) 1993-2004 Gilles Vollant"
598 >>>>>>&0        string          x                                       \b, version %-4.4s
599 >(1.b+2)        ubyte           0xe                     
600 >>(1.b+3)       ubyte           0x1f                    
601 >>>(1.b+4)      ubyte           0xbe                    
602 # message offset found at (1.b+5) is 0x77 for FAT32 or 0x5b for others
603 >>>>(1.b+5)     ubyte&0xd3      0x53                    
604 >>>>>(1.b+6)    ubyte           0x7c                    
605 # assembler instructions: lodsb;and al,al;jz 0xb;push si;mov ah,
606 >>>>>>(1.b+7)   ubyte           0xac                    
607 >>>>>>>(1.b+8)  ubyte           0x22                    
608 >>>>>>>>(1.b+9) ubyte           0xc0                    
609 >>>>>>>>>(1.b+10)       ubyte   0x74                    
610 >>>>>>>>>>(1.b+11)      ubyte   0x0b                    
611 >>>>>>>>>>>(1.b+12)     ubyte   0x56                    
612 >>>>>>>>>>>>(1.b+13)    ubyte   0xb4                    \b, mkdosfs boot message display
613 # FAT1X version
614 >>>>>>>>>>>>>(1.b+5)    ubyte   0x5b                    
615 >>>>>>>>>>>>>>0x5b      string  >\0                     "%-s"
616 # FAT32 version
617 >>>>>>>>>>>>>(1.b+5)    ubyte   0x77                    
618 >>>>>>>>>>>>>>0x77      string  >\0                     "%-s"
619 >214    string  Please\ try\ to\ install\ FreeDOS\      \b, DOS Emulator boot message display
620 #>>244  string  from\ dosemu-freedos-*-bin.tgz\r        
621 #>>>170 string  Sorry,\ could\ not\ load\ an\           
622 #>>>>195        string  operating\ system.\r\n          
623 #
624 >103    string  This\ is\ not\ a\ bootable\ disk.\      
625 >>132   string  Please\ insert\ a\ bootable\            
626 >>>157  string  floppy\ and\r\n                         
627 >>>>169 string  press\ any\ key\ to\ try\ again...\r    \b, FREE-DOS message display
628 #
629 >66     string  Solaris\ Boot\ Sector                   
630 >>99    string  Incomplete\ MDBoot\ load.               
631 >>>89   string  Version                                 \b, Sun Solaris Bootloader
632 >>>>97  byte    x                                       version %c
633 #
634 >408    string  OS/2\ !!\ SYS01475\r\0                  
635 >>429   string  OS/2\ !!\ SYS02025\r\0                  
636 >>>450  string  OS/2\ !!\ SYS02027\r\0                  
637 >>>469  string  OS2BOOT\ \ \ \                          \b, IBM OS/2 Warp bootloader
638 #
639 >409    string  OS/2\ !!\ SYS01475\r\0                  
640 >>430   string  OS/2\ !!\ SYS02025\r\0                  
641 >>>451  string  OS/2\ !!\ SYS02027\r\0                  
642 >>>470  string  OS2BOOT\ \ \ \                          \b, IBM OS/2 Warp Bootloader
643 >112            string  This\ disk\ is\ not\ bootable\r                 
644 >>142           string  If\ you\ wish\ to\ make\ it\ bootable           
645 >>>176          string  run\ the\ DOS\ program\ SYS\                    
646 >>>200          string  after\ the\r                                    
647 >>>>216         string  system\ has\ been\ loaded\r\n                   
648 >>>>>242        string  Please\ insert\ a\ DOS\ diskette\               
649 >>>>>271        string  into\r\n\ the\ drive\ and\                      
650 >>>>>>292       string  strike\ any\ key...\0           \b, IBM OS/2 Warp message display
651 # XP
652 >430    string  NTLDR\ is\ missing\xFF\r\n              
653 >>449   string  Disk\ error\xFF\r\n                     
654 >>>462  string  Press\ any\ key\ to\ restart\r          \b, Microsoft Windows XP Bootloader
655 # DOS names like NTLDR,CMLDR,$LDR$ are 8 right space padded bytes+3 bytes
656 >>>>417         ubyte&0xDF      >0                      
657 >>>>>417        string          x                       %-.5s
658 >>>>>>422       ubyte&0xDF      >0                      
659 >>>>>>>422      string          x                       \b%-.3s
660 >>>>>425        ubyte&0xDF      >0                      
661 >>>>>>425       string          >\                      \b.%-.3s
662 #
663 >>>>371         ubyte           >0x20                   
664 >>>>>368        ubyte&0xDF      >0                      
665 >>>>>>368       string          x                       %-.5s
666 >>>>>>>373      ubyte&0xDF      >0                      
667 >>>>>>>>373     string          x                       \b%-.3s
668 >>>>>>376       ubyte&0xDF      >0                      
669 >>>>>>>376      string          x                       \b.%-.3s
670 #
671 >430    string  NTLDR\ nicht\ gefunden\xFF\r\n          
672 >>453   string  Datentr\204gerfehler\xFF\r\n            
673 >>>473  string  Neustart\ mit\ beliebiger\ Taste\r      \b, Microsoft Windows XP Bootloader (german)
674 >>>>417         ubyte&0xDF      >0                      
675 >>>>>417        string          x                       %-.5s
676 >>>>>>422       ubyte&0xDF      >0                      
677 >>>>>>>422      string          x                       \b%-.3s
678 >>>>>425        ubyte&0xDF      >0                      
679 >>>>>>425       string          >\                      \b.%-.3s
680 # offset variant
681 >>>>379 string  \0                                      
682 >>>>>368        ubyte&0xDF      >0                      
683 >>>>>>368       string          x                       %-.5s
684 >>>>>>>373      ubyte&0xDF      >0                      
685 >>>>>>>>373     string          x                       \b%-.3s
686 #
687 >430    string  NTLDR\ fehlt\xFF\r\n                    
688 >>444   string  Datentr\204gerfehler\xFF\r\n            
689 >>>464  string  Neustart\ mit\ beliebiger\ Taste\r      \b, Microsoft Windows XP Bootloader (2.german)
690 >>>>417         ubyte&0xDF      >0                      
691 >>>>>417        string          x                       %-.5s
692 >>>>>>422       ubyte&0xDF      >0                      
693 >>>>>>>422      string          x                       \b%-.3s
694 >>>>>425        ubyte&0xDF      >0                      
695 >>>>>>425       string          >\                      \b.%-.3s
696 # variant
697 >>>>371         ubyte           >0x20                   
698 >>>>>368        ubyte&0xDF      >0                      
699 >>>>>>368       string          x                       %-.5s
700 >>>>>>>373      ubyte&0xDF      >0                      
701 >>>>>>>>373     string          x                       \b%-.3s
702 >>>>>>376       ubyte&0xDF      >0                      
703 >>>>>>>376      string          x                       \b.%-.3s
704 #
705 >430    string  NTLDR\ fehlt\xFF\r\n                    
706 >>444   string  Medienfehler\xFF\r\n                    
707 >>>459  string  Neustart:\ Taste\ dr\201cken\r          \b, Microsoft Windows XP Bootloader (3.german)
708 >>>>371         ubyte           >0x20                   
709 >>>>>368        ubyte&0xDF      >0                      
710 >>>>>>368       string          x                       %-.5s
711 >>>>>>>373      ubyte&0xDF      >0                      
712 >>>>>>>>373     string          x                       \b%-.3s
713 >>>>>>376       ubyte&0xDF      >0                      
714 >>>>>>>376      string          x                       \b.%-.3s
715 # variant
716 >>>>417         ubyte&0xDF      >0                      
717 >>>>>417        string          x                       %-.5s
718 >>>>>>422       ubyte&0xDF      >0                      
719 >>>>>>>422      string          x                       \b%-.3s
720 >>>>>425        ubyte&0xDF      >0                      
721 >>>>>>425       string          >\                      \b.%-.3s
722 #
723 >430    string  Datentr\204ger\ entfernen\xFF\r\n       
724 >>454   string  Medienfehler\xFF\r\n                    
725 >>>469  string  Neustart:\ Taste\ dr\201cken\r          \b, Microsoft Windows XP Bootloader (4.german)
726 >>>>379         string          \0                      
727 >>>>>368        ubyte&0xDF      >0                      
728 >>>>>>368       string          x                       %-.5s
729 >>>>>>>373      ubyte&0xDF      >0                      
730 >>>>>>>>373     string          x                       \b%-.3s
731 >>>>>>376       ubyte&0xDF      >0                      
732 >>>>>>>376      string          x                       \b.%-.3s
733 # variant
734 >>>>417         ubyte&0xDF      >0                      
735 >>>>>417        string          x                       %-.5s
736 >>>>>>422       ubyte&0xDF      >0                      
737 >>>>>>>422      string          x                       \b%-.3s
738 >>>>>425        ubyte&0xDF      >0                      
739 >>>>>>425       string          >\                      \b.%-.3s
740 #
741
742 #>3     string  NTFS\ \ \ \                             
743 >389    string  Fehler\ beim\ Lesen\ 
744 >>407   string  des\ Datentr\204gers
745 >>>426  string  NTLDR\ fehlt                            
746 >>>>440 string  NTLDR\ ist\ komprimiert
747 >>>>>464 string Neustart\ mit\ Strg+Alt+Entf\r          \b, Microsoft Windows XP Bootloader NTFS (german)
748 #>3     string  NTFS\ \ \ \                             
749 >313    string  A\ disk\ read\ error\ occurred.\r
750 >>345   string  A\ kernel\ file\ is\ missing\   
751 >>>370  string  from\ the\ disk.\r              
752 >>>>484 string  NTLDR\ is\ compressed           
753 >>>>>429 string Insert\ a\ system\ diskette\    
754 >>>>>>454 string and\ restart\r\nthe\ system.\r         \b, Microsoft Windows XP Bootloader NTFS
755 # DOS loader variants different languages,offsets
756 >472    ubyte&0xDF      >0
757 >>389   string  Invalid\ system\ disk\xFF\r\n           
758 >>>411  string  Disk\ I/O\ error                        
759 >>>>428 string  Replace\ the\ disk,\ and\               
760 >>>>>455 string press\ any\ key                         \b, Microsoft Windows 98 Bootloader
761 #IO.SYS
762 >>>>>>472       ubyte&0xDF      >0                      
763 >>>>>>>472      string          x                       \b %-.2s
764 >>>>>>>>474     ubyte&0xDF      >0                      
765 >>>>>>>>>474    string          x                       \b%-.5s
766 >>>>>>>>>>479   ubyte&0xDF      >0                      
767 >>>>>>>>>>>479 string           x                       \b%-.1s
768 >>>>>>>480      ubyte&0xDF      >0                      
769 >>>>>>>>480     string          x                       \b.%-.3s
770 #MSDOS.SYS
771 >>>>>>>483      ubyte&0xDF      >0                      \b+
772 >>>>>>>>483     string          x                       \b%-.5s
773 >>>>>>>>>488    ubyte&0xDF      >0                      
774 >>>>>>>>>>488   string          x                       \b%-.3s
775 >>>>>>>>491     ubyte&0xDF      >0                      
776 >>>>>>>>>491    string          x                       \b.%-.3s
777 #
778 >>390   string  Invalid\ system\ disk\xFF\r\n           
779 >>>412  string  Disk\ I/O\ error\xFF\r\n                
780 >>>>429 string  Replace\ the\ disk,\ and\               
781 >>>>>451 string then\ press\ any\ key\r                 \b, Microsoft Windows 98 Bootloader
782 >>388   string  Ungueltiges\ System\ \xFF\r\n           
783 >>>410  string  E/A-Fehler\ \ \ \ \xFF\r\n              
784 >>>>427 string  Datentraeger\ wechseln\ und\            
785 >>>>>453 string Taste\ druecken\r                       \b, Microsoft Windows 95/98/ME Bootloader (german)
786 #WINBOOT.SYS only not spaces (0xDF)
787 >>>>>>497       ubyte&0xDF      >0                      
788 >>>>>>>497      string          x                       %-.5s
789 >>>>>>>>502     ubyte&0xDF      >0                      
790 >>>>>>>>>502    string          x                       \b%-.1s
791 >>>>>>>>>>503   ubyte&0xDF      >0                      
792 >>>>>>>>>>>503  string          x                       \b%-.1s
793 >>>>>>>>>>>>504 ubyte&0xDF      >0                      
794 >>>>>>>>>>>>>504 string         x                       \b%-.1s
795 >>>>>>505       ubyte&0xDF      >0                      
796 >>>>>>>505      string          x                       \b.%-.3s
797 #IO.SYS
798 >>>>>>472       ubyte&0xDF      >0                      or
799 >>>>>>>472      string          x                       \b %-.2s
800 >>>>>>>>474     ubyte&0xDF      >0                      
801 >>>>>>>>>474    string          x                       \b%-.5s
802 >>>>>>>>>>479   ubyte&0xDF      >0                      
803 >>>>>>>>>>>479 string           x                       \b%-.1s
804 >>>>>>>480      ubyte&0xDF      >0                      
805 >>>>>>>>480     string          x                       \b.%-.3s
806 #MSDOS.SYS
807 >>>>>>>483      ubyte&0xDF      >0                      \b+
808 >>>>>>>>483     string          x                       \b%-.5s
809 >>>>>>>>>488    ubyte&0xDF      >0                      
810 >>>>>>>>>>488   string          x                       \b%-.3s
811 >>>>>>>>491     ubyte&0xDF      >0                      
812 >>>>>>>>>491    string          x                       \b.%-.3s
813 #
814 >>390   string  Ungueltiges\ System\ \xFF\r\n           
815 >>>412  string  E/A-Fehler\ \ \ \ \xFF\r\n              
816 >>>>429 string  Datentraeger\ wechseln\ und\            
817 >>>>>455 string Taste\ druecken\r                       \b, Microsoft Windows 95/98/ME Bootloader (German)
818 #WINBOOT.SYS only not spaces (0xDF)
819 >>>>>>497       ubyte&0xDF      >0                      
820 >>>>>>>497      string          x                       %-.7s
821 >>>>>>>>504     ubyte&0xDF      >0                      
822 >>>>>>>>>504    string          x                       \b%-.1s
823 >>>>>>505       ubyte&0xDF      >0                      
824 >>>>>>>505      string          x                       \b.%-.3s
825 #IO.SYS
826 >>>>>>472       ubyte&0xDF      >0                      or
827 >>>>>>>472      string          x                       \b %-.2s
828 >>>>>>>>474     ubyte&0xDF      >0                      
829 >>>>>>>>>474    string          x                       \b%-.6s
830 >>>>>>>480      ubyte&0xDF      >0                      
831 >>>>>>>>480     string          x                       \b.%-.3s
832 #MSDOS.SYS
833 >>>>>>>483      ubyte&0xDF      >0                      \b+
834 >>>>>>>>483     string          x                       \b%-.5s
835 >>>>>>>>>488    ubyte&0xDF      >0                      
836 >>>>>>>>>>488   string          x                       \b%-.3s
837 >>>>>>>>491     ubyte&0xDF      >0                      
838 >>>>>>>>>491    string          x                       \b.%-.3s
839 #
840 >>389   string  Ungueltiges\ System\ \xFF\r\n           
841 >>>411  string  E/A-Fehler\ \ \ \ \xFF\r\n              
842 >>>>428 string  Datentraeger\ wechseln\ und\            
843 >>>>>454 string Taste\ druecken\r                       \b, Microsoft Windows 95/98/ME Bootloader (GERMAN)
844 # DOS names like IO.SYS,WINBOOT.SYS,MSDOS.SYS,WINBOOT.INI are 8 right space padded bytes+3 bytes
845 >>>>>>472       string          x                       %-.2s
846 >>>>>>>474      ubyte&0xDF      >0                      
847 >>>>>>>>474     string          x                       \b%-.5s
848 >>>>>>>>479     ubyte&0xDF      >0                      
849 >>>>>>>>>479    string          x                       \b%-.1s
850 >>>>>>480       ubyte&0xDF      >0                      
851 >>>>>>>480      string          x                       \b.%-.3s
852 >>>>>>483       ubyte&0xDF      >0                      \b+
853 >>>>>>>483      string          x                       \b%-.5s
854 >>>>>>>488      ubyte&0xDF      >0                      
855 >>>>>>>>488     string          x                       \b%-.2s
856 >>>>>>>>490     ubyte&0xDF      >0                      
857 >>>>>>>>>490    string          x                       \b%-.1s
858 >>>>>>>491      ubyte&0xDF      >0                      
859 >>>>>>>>491     string          x                       \b.%-.3s
860 >479    ubyte&0xDF      >0
861 >>416   string  Kein\ System\ oder\                     
862 >>>433  string  Laufwerksfehler                         
863 >>>>450 string  Wechseln\ und\ Taste\ dr\201cken        \b, Microsoft DOS Bootloader (german)
864 #IO.SYS
865 >>>>>479        string          x                       \b %-.2s
866 >>>>>>481       ubyte&0xDF      >0                      
867 >>>>>>>481      string          x                       \b%-.6s
868 >>>>>487        ubyte&0xDF      >0                      
869 >>>>>>487       string          x                       \b.%-.3s
870 #MSDOS.SYS
871 >>>>>>490       ubyte&0xDF      >0                      \b+
872 >>>>>>>490      string          x                       \b%-.5s
873 >>>>>>>>495     ubyte&0xDF      >0                      
874 >>>>>>>>>495    string          x                       \b%-.3s
875 >>>>>>>498      ubyte&0xDF      >0                      
876 >>>>>>>>498     string          x                       \b.%-.3s
877 #
878 >376    search/41       Non-System\ disk\ or\           
879 >>395   search/41       disk\ error\r                   
880 >>>407  search/41       Replace\ and\                   
881 >>>>419 search/41       press\                          \b,
882 >>>>419 search/41       strike\                         \b, old
883 >>>>426 search/41       any\ key\ when\ ready\r         MS or PC-DOS bootloader
884 #449                    Disk\ Boot\ failure\r           MS 3.21
885 #466                    Boot\ Failure\r                 MS 3.30
886 >>>>>468 search/18      \0                              
887 #IO.SYS,IBMBIO.COM
888 >>>>>>&0        string          x                       \b %-.2s
889 >>>>>>>&-20     ubyte&0xDF      >0                      
890 >>>>>>>>&-1     string          x                       \b%-.4s
891 >>>>>>>>>&-16   ubyte&0xDF      >0                      
892 >>>>>>>>>>&-1   string          x                       \b%-.2s
893 >>>>>>&8        ubyte&0xDF      >0                      \b.
894 >>>>>>>&-1      string          x                       \b%-.3s
895 #MSDOS.SYS,IBMDOS.COM
896 >>>>>>&11       ubyte&0xDF      >0                      \b+
897 >>>>>>>&-1      string          x                       \b%-.5s
898 >>>>>>>>&-6     ubyte&0xDF      >0                      
899 >>>>>>>>>&-1    string          x                       \b%-.1s
900 >>>>>>>>>>&-5   ubyte&0xDF      >0                      
901 >>>>>>>>>>>&-1  string          x                       \b%-.2s
902 >>>>>>>&7       ubyte&0xDF      >0                      \b.
903 >>>>>>>>&-1     string          x                       \b%-.3s
904 >441    string  Cannot\ load\ from\ harddisk.\n\r
905 >>469   string  Insert\ Systemdisk\                     
906 >>>487  string  and\ press\ any\ key.\n\r               \b, MS (2.11) DOS bootloader
907 #>43    string  \224R-LOADER\ \ SYS                     =label                                  
908 >54     string  SYS
909 >>324   string  VASKK
910 >>>495  string  NEWLDR\0                                \b, DR-DOS Bootloader (LOADER.SYS)
911 #
912 >98     string  Press\ a\ key\ to\ retry\0\r            
913 >>120   string  Cannot\ find\ file\ \0\r                
914 >>>139  string  Disk\ read\ error\0\r                   
915 >>>>156 string  Loading\ ...\0                          \b, DR-DOS (3.41) Bootloader
916 #DRBIOS.SYS
917 >>>>>44         ubyte&0xDF      >0                      
918 >>>>>>44        string          x                       \b %-.6s
919 >>>>>>>50       ubyte&0xDF      >0                      
920 >>>>>>>>50      string          x                       \b%-.2s
921 >>>>>>52        ubyte&0xDF      >0                      
922 >>>>>>>52       string          x                       \b.%-.3s
923 #
924 >70     string  IBMBIO\ \ COM                           
925 >>472   string  Cannot\ load\ DOS!\                     
926 >>>489  string  Any\ key\ to\ retry                     \b, DR-DOS Bootloader
927 >>471   string  Cannot\ load\ DOS\                      
928 >>487   string  press\ key\ to\ retry                   \b, Open-DOS Bootloader
929 #??
930 >444    string  KERNEL\ \ SYS                                   
931 >>314   string  BOOT\ error!                            \b, FREE-DOS Bootloader
932 >499    string  KERNEL\ \ SYS                           
933 >>305   string  BOOT\ err!\0                            \b, Free-DOS Bootloader
934 >449    string  KERNEL\ \ SYS                           
935 >>319   string  BOOT\ error!                            \b, FREE-DOS 0.5 Bootloader
936 #
937 >449    string  Loading\ FreeDOS                        
938 >>0x1AF         ulelong         >0                      \b, FREE-DOS 0.95,1.0 Bootloader
939 >>>497          ubyte&0xDF      >0                      
940 >>>>497         string          x                       \b %-.6s
941 >>>>>503        ubyte&0xDF      >0                      
942 >>>>>>503       string          x                       \b%-.1s
943 >>>>>>>504      ubyte&0xDF      >0                      
944 >>>>>>>>504     string          x                       \b%-.1s
945 >>>>505         ubyte&0xDF      >0                      
946 >>>>>505        string          x                       \b.%-.3s
947 #
948 >331    string  Error!.0                                \b, FREE-DOS 1.0 bootloader
949 #
950 >125    string  Loading\ FreeDOS...\r                   
951 >>311   string  BOOT\ error!\r                          \b, FREE-DOS bootloader
952 >>>441          ubyte&0xDF      >0                      
953 >>>>441         string          x                       \b %-.6s
954 >>>>>447        ubyte&0xDF      >0                      
955 >>>>>>447       string          x                       \b%-.1s
956 >>>>>>>448      ubyte&0xDF      >0                      
957 >>>>>>>>448     string          x                       \b%-.1s
958 >>>>449         ubyte&0xDF      >0                      
959 >>>>>449        string          x                       \b.%-.3s
960 >124    string  FreeDOS\0                               
961 >>331   string  \ err\0                                 \b, FREE-DOS BETa 0.9 Bootloader
962 # DOS names like KERNEL.SYS,KERNEL16.SYS,KERNEL32.SYS,METAKERN.SYS are 8 right space padded bytes+3 bytes
963 >>>497          ubyte&0xDF      >0                      
964 >>>>497         string          x                       \b %-.6s
965 >>>>>503        ubyte&0xDF      >0                      
966 >>>>>>503       string          x                       \b%-.1s
967 >>>>>>>504      ubyte&0xDF      >0                      
968 >>>>>>>>504     string          x                       \b%-.1s
969 >>>>505         ubyte&0xDF      >0                      
970 >>>>>505        string          x                       \b.%-.3s
971 >>333   string  \ err\0                                 \b, FREE-DOS BEta 0.9 Bootloader
972 >>>497          ubyte&0xDF      >0                      
973 >>>>497         string          x                       \b %-.6s
974 >>>>>503        ubyte&0xDF      >0                      
975 >>>>>>503       string          x                       \b%-.1s
976 >>>>>>>504      ubyte&0xDF      >0                      
977 >>>>>>>>504     string          x                       \b%-.1s
978 >>>>505         ubyte&0xDF      >0                      
979 >>>>>505        string          x                       \b.%-.3s
980 >>334   string  \ err\0                                 \b, FREE-DOS Beta 0.9 Bootloader
981 >>>497          ubyte&0xDF      >0                      
982 >>>>497         string          x                       \b %-.6s
983 >>>>>503        ubyte&0xDF      >0                      
984 >>>>>>503       string          x                       \b%-.1s
985 >>>>>>>504      ubyte&0xDF      >0                      
986 >>>>>>>>504     string          x                       \b%-.1s
987 >>>>505         ubyte&0xDF      >0                      
988 >>>>>505        string          x                       \b.%-.3s
989 >336    string  Error!\                                 
990 >>343   string  Hit\ a\ key\ to\ reboot.                \b, FREE-DOS Beta 0.9sr1 Bootloader
991 >>>497          ubyte&0xDF      >0                      
992 >>>>497         string          x                       \b %-.6s
993 >>>>>503        ubyte&0xDF      >0                      
994 >>>>>>503       string          x                       \b%-.1s
995 >>>>>>>504      ubyte&0xDF      >0                      
996 >>>>>>>>504     string          x                       \b%-.1s
997 >>>>505         ubyte&0xDF      >0                      
998 >>>>>505        string          x                       \b.%-.3s
999 # added by Joerg Jenderek
1000 # http://www.visopsys.org/
1001 # http://partitionlogic.org.uk/
1002 # OEM-ID=Visopsys
1003 >478            ulelong 0                                       
1004 >>(1.b+326)     string  I/O\ Error\ reading\                    
1005 >>>(1.b+344)    string  Visopsys\ loader\r                      
1006 >>>>(1.b+361)   string  Press\ any\ key\ to\ continue.\r        \b, Visopsys loader
1007 # http://alexfru.chat.ru/epm.html#bootprog
1008 >494    ubyte   >0x4D                                   
1009 >>495   string  >E                                      
1010 >>>495  string  <S                                      
1011 #OEM-ID is not reliable
1012 >>>>3   string  BootProg                                
1013 # It just looks for a program file name at the root directory
1014 # and loads corresponding file with following execution.
1015 # DOS names like STARTUP.BIN,STARTUPC.COM,STARTUPE.EXE are 8 right space padded bytes+3 bytes
1016 >>>>499                 ubyte&0xDF      >0              \b, COM/EXE Bootloader 
1017 >>>>>499                use             DOS-filename
1018 #If the boot sector fails to read any other sector,
1019 #it prints a very short message ("RE") to the screen and hangs the computer.
1020 #If the boot sector fails to find needed program in the root directory,
1021 #it also hangs with another message ("NF").
1022 >>>>>492                string          RENF            \b, FAT (12 bit)
1023 >>>>>495                string          RENF            \b, FAT (16 bit)
1024 #If the boot sector fails to read any other sector,
1025 #it prints a very short message ("RE") to the screen and hangs the computer.
1026 # x86 bootloader end
1027
1028 # added by Joerg Jenderek at Feb 2013 according to http://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
1029 # and http://en.wikipedia.org/wiki/File_Allocation_Table#FS_Information_Sector
1030 >0              string          RRaA            
1031 >>0x1E4         string          rrAa            \b, FSInfosector
1032 #>>0x1FC        uleshort        =0              SHOULD BE ZERO
1033 >>>0x1E8        ulelong         <0xffffffff     \b, %u free clusters
1034 >>>0x1EC        ulelong         <0xffffffff     \b, last allocated cluster %u
1035
1036 # updated by Joerg Jenderek at Sep 2007
1037 >3      ubyte   0                       
1038 #no active flag
1039 >>446   ubyte   0                       
1040 # partition 1 not empty
1041 >>>450  ubyte   >0                      
1042 # partitions 3,4 empty
1043 >>>>482         ubyte   0                       
1044 >>>>>498        ubyte   0                       
1045 # partition 2 ID=0,5,15
1046 >>>>>>466       ubyte   <0x10                   
1047 >>>>>>>466      ubyte   0x05                    \b, extended partition table
1048 >>>>>>>466      ubyte   0x0F                    \b, extended partition table (LBA)
1049 >>>>>>>466      ubyte   0x0                     \b, extended partition table (last)
1050
1051 # DOS x86 sector separated and moved from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
1052
1053 >0x200  lelong  0x82564557              \b, BSD disklabel
1054
1055 # by Joerg Jenderek at Apr 2013
1056 #       Print the DOS filenames from directory entry form with 8 right space padded bytes + 3 bytes for extension
1057 #       like IO.SYS. MSDOS.SYS , KERNEL.SYS , DRBIO.SYS
1058 0       name                    DOS-filename
1059 # space=0x20 (00100000b) means empty 
1060 >0                      ubyte&0xDF      >0              
1061 >>0                     ubyte           x               \b%c
1062 >>>1                    ubyte&0xDF      >0              
1063 >>>>1                   ubyte           x               \b%c
1064 >>>>>2                  ubyte&0xDF      >0              
1065 >>>>>>2                 ubyte           x               \b%c
1066 >>>>>>>3                ubyte&0xDF      >0              
1067 >>>>>>>>3               ubyte           x               \b%c
1068 >>>>>>>>>4              ubyte&0xDF      >0              
1069 >>>>>>>>>>4             ubyte           x               \b%c
1070 >>>>>>>>>>>5            ubyte&0xDF      >0              
1071 >>>>>>>>>>>>5           ubyte           x               \b%c
1072 >>>>>>>>>>>>>6          ubyte&0xDF      >0              
1073 >>>>>>>>>>>>>>6         ubyte           x               \b%c
1074 >>>>>>>>>>>>>>>7        ubyte&0xDF      >0              
1075 >>>>>>>>>>>>>>>>7       ubyte           x               \b%c
1076 # DOS filename extension
1077 >>8                     ubyte&0xDF      >0              \b.
1078 >>>8                    ubyte           x               \b%c
1079 >>>>9                   ubyte&0xDF      >0              
1080 >>>>>9                  ubyte           x               \b%c
1081 >>>>>>10                ubyte&0xDF      >0              
1082 >>>>>>>10               ubyte           x               \b%c
1083 #       Print 2 following DOS filenames from directory entry form
1084 #       like IO.SYS+MSDOS.SYS or ibmbio.com+ibmdos.com
1085 0       name                    2xDOS-filename
1086 # display 1 space
1087 >0                      ubyte           x               \b 
1088 >0                      use             DOS-filename
1089 >11                     ubyte           x               \b+
1090 >11                     use             DOS-filename
1091
1092 # http://en.wikipedia.org/wiki/Master_boot_record#PTE
1093 # display standard partition table
1094 0       name                            partition-table
1095 #>0             ubyte           x       PARTITION-TABLE
1096 # test and display 1st til 4th partition table entry
1097 >0              use                     partition-entry-test
1098 >16             use                     partition-entry-test
1099 >32             use                     partition-entry-test
1100 >48             use                     partition-entry-test
1101 #               test for entry of partition table
1102 0       name                            partition-entry-test
1103 # partition type ID > 0
1104 >4              ubyte           >0
1105 # active flag 0
1106 >>0             ubyte           0       
1107 >>>0            use             partition-entry
1108 # active flag 0x80, 0x81, ... 
1109 >>0             ubyte           >0x7F   
1110 >>>0            use             partition-entry
1111 #               Print entry of partition table
1112 0       name                            partition-entry
1113 # partition type ID > 0
1114 >4              ubyte           >0      \b; partition
1115 >>64            leshort         0xAA55  1
1116 >>48            leshort         0xAA55  2
1117 >>32            leshort         0xAA55  3
1118 >>16            leshort         0xAA55  4
1119 >>4             ubyte           x       : ID=0x%x
1120 >>0             ubyte&0x80      0x80    \b, active
1121 >>0             ubyte           >0x80   0x%x
1122 >>1             ubyte           x       \b, start-CHS (
1123 >>1             use             partition-chs
1124 >>5             ubyte           x       \b), end-CHS (
1125 >>5             use             partition-chs
1126 >>8             ulelong         x       \b), startsector %u
1127 >>12            ulelong         x       \b, %u sectors
1128 #               Print cylinder,head,sector (CHS) of partition entry
1129 0       name                            partition-chs
1130 # cylinder
1131 >1              ubyte           x       \b0x
1132 >1              ubyte&0xC0      0x40    \b1
1133 >1              ubyte&0xC0      0x80    \b2
1134 >1              ubyte&0xC0      0xC0    \b3
1135 >2              ubyte           x       \b%x
1136 # head
1137 >0              ubyte           x       \b,%u
1138 # sector
1139 >1              ubyte&0x3F      x       \b,%u
1140
1141 # FATX 
1142 0               string          FATX            FATX filesystem data
1143
1144 # romfs filesystems - Juan Cespedes <cespedes@debian.org>
1145 0       string          -rom1fs-        romfs filesystem, version 1
1146 >8      belong  x                       %d bytes,
1147 >16     string  x                       named %s.
1148
1149 # netboot image - Juan Cespedes <cespedes@debian.org>
1150 0       lelong          0x1b031336L     Netboot image,
1151 >4      lelong&0xFFFFFF00       0
1152 >>4     lelong&0x100    0x000           mode 2
1153 >>4     lelong&0x100    0x100           mode 3
1154 >4      lelong&0xFFFFFF00       !0      unknown mode
1155
1156 0x18b   string  OS/2    OS/2 Boot Manager
1157
1158 # updated by Joerg Jenderek at Oct 2008 and Sep 2012
1159 # http://syslinux.zytor.com/iso.php
1160 # tested with versions 1.47,1.48,1.49,1.50,1.62,1.76,2.00,2.10;3.00,3.11,3.31,;3.70,3.71,3.73,3.75,3.80,3.82,3.84,3.86,4.01,4.03 and 4.05
1161 # assembler instructions: cli;jmp 0:7Cyy (yy=0x40,0x5e,0x6c,0x6e,0x77);nop;nop
1162 0       ulequad&0x909000007cc0eafa      0x909000007c40eafa      
1163 >631    search/689      ISOLINUX\       isolinux Loader
1164 >>&0    string          x               (version %-4.4s)
1165 # http://syslinux.zytor.com/pxe.php
1166 # assembler instructions: jmp 7C05
1167 0       ulelong 0x007c05ea              pxelinux loader (version 2.13 or older)
1168 # assembler instructions: pushfd;pushad
1169 0       ulelong 0x60669c66              pxelinux loader
1170 # assembler instructions: jmp 05
1171 0       ulelong 0xc00005ea              pxelinux loader (version 3.70 or newer)
1172 # http://syslinux.zytor.com/wiki/index.php/SYSLINUX
1173 0       string  LDLINUX\ SYS\           SYSLINUX loader
1174 >12     string  x                       (older version %-4.4s)
1175 0       string  \r\nSYSLINUX\           SYSLINUX loader
1176 >11     string  x                       (version %-4.4s)
1177 # syslinux updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
1178 # assembler instructions: jmp yy (yy=0x3c,0x58);nop;"SYSLINUX"
1179 0       ulelong&0x80909bEB      0x009018EB      
1180 # OEM-ID not always "SYSLINUX"
1181 >434    search/47       Boot\ failed            
1182 # followed by \r\n\0 or :\ 
1183 >>482   search/132      \0LDLINUX\ SYS          Syslinux bootloader (version 2.13 or older)
1184 >>1     ubyte           0x58                    Syslinux bootloader (version 3.0-3.9)
1185 >459    search/30       Boot\ error\r\n\0       
1186 >>1     ubyte           0x58                    Syslinux bootloader (version 3.10 or newer)
1187 # SYSLINUX MBR updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
1188 # assembler instructions: mov di,0600h;mov cx,0100h
1189 16      search/4        \xbf\x00\x06\xb9\x00\x01                
1190 # to display SYSLINUX MBR (36) before old DOS/MBR boot sector one with partition table (strength=50+21)
1191 !:strength +36
1192 >94     search/249      Missing\ operating\ system              
1193 # followed by \r for versions older 3.35 , .\r for versions newer 3.52 and point for other
1194 # skip Ranish MBR
1195 >>408   search/4        HD1/\0                                  
1196 >>408   default         x                                       
1197 >>>250  search/118      \0Operating\ system\ load               SYSLINUX MBR
1198 # followed by "ing " or space
1199 >>>>292 search/98       error                                   
1200 >>>>>&0 string          \r                                      (version 3.35 or older)
1201 >>>>>&0 string          .\r                                     (version 3.52 or newer)
1202 >>>>>&0 default         x                                       (version 3.36-3.51 )
1203 >368    search/106      \0Disk\ error\ on\ boot\r\n             SYSLINUX GPT-MBR
1204 >>156   search/10       \0Boot\ partition\ not\ found\r\n       
1205 >>>270  search/10       \0OS\ not\ bootable\r\n                 (version 3.86 or older)
1206 >>174   search/10       \0Missing\ OS\r\n                       
1207 >>>189  search/10       \0Multiple\ active\ partitions\r\n      (version 4.00 or newer)
1208 # SYSLINUX END
1209
1210 # NetBSD mbr variants (master-boot-code version 1.22) added by Joerg Jenderek at Nov 2012
1211 # assembler instructions: xor ax,ax;mov ax,ss;mov sp,0x7c00;mov ax,
1212 0       ubequad         0x31c08ed0bc007c8e                      
1213 # mbr_bootsel magic before partition table not reliable with small ipl fragments
1214 #>444   uleshort        0xb5e1                                  
1215 >0004   uleshort        x                                       
1216 # ERRorTeXT
1217 >>181   search/166              Error\ \0\r\n                           NetBSD mbr
1218 # NT Drive Serial Number http://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DS
1219 >>>0x1B8        ubelong         >0                                      \b,Serial 0x%-.8x
1220 # BOOTSEL definitions contains assembler instructions: int 0x13;pop dx;push dx;push dx
1221 >>>0xbb         search/71       \xcd\x13\x5a\x52\x52                    \b,bootselector
1222 # BOOT_EXTENDED definitions contains assembler instructions: 
1223 # xchg ecx,edx;addl ecx,edx;movw lba_info,si;movb 0x42,ah;pop dx;push dx;int 0x13
1224 >>>0x96 search/1        \x66\x87\xca\x66\x01\xca\x66\x89\x16\x3a\x07\xbe\x32\x07\xb4\x42\x5a\x52\xcd\x13        \b,boot extended
1225 # COM_PORT_VAL definitions contains assembler instructions: outb al,dx;add 5,dl;inb %dx;test 0x40,al
1226 >>>0x130        search/55       \xee\x80\xc2\x05\xec\xa8\x40            \b,serial IO
1227 # not TERSE_ERROR
1228 >>>196          search/106      No\ active\ partition\0                 
1229 >>>>&0          string          Disk\ read\ error\0                     
1230 >>>>>&0         string          No\ operating\ system\0                 \b,verbose
1231 # not NO_CHS definitions contains assembler instructions: pop dx;push dx;movb $8,ah;int0x13
1232 >>>0x7d         search/7        \x5a\x52\xb4\x08\xcd\x13                \b,CHS
1233 # not NO_LBA_CHECK definitions contains assembler instructions: movw 0x55aa,bx;movb 0x41,ah;pop dx;push dx;int 0x13
1234 >>>0xa4         search/84       \xbb\xaa\x55\xb4\x41\x5a\x52\xcd\x13    \b,LBA-check
1235 # assembler instructions: movw nametab,bx
1236 >>>0x26     search/21   \xBB\x94\x07                                    
1237 # not NO_BANNER definitions contains assembler instructions: mov banner,si;call message_crlf
1238 >>>>&-9 ubequad&0xBE00f0E800febb94      0xBE0000E80000bb94              
1239 >>>>>181        search/166              Error\ \0                       
1240 # "a: disk" , "Fn: diskn" or "NetBSD MBR boot"
1241 >>>>>>&3        string                  x                               \b,"%s"
1242 >>>446  use             partition-table
1243 # Andrea Mazzoleni AdvanceCD mbr loader of http://advancemame.sourceforge.net/boot-readme.html
1244 # added by Joerg Jenderek at Nov 2012 for versions 1.3 - 1.4
1245 # assembler instructions: jmp short 0x58;nop;ASCII
1246 0       ubequad&0xeb58908000000000      0xeb58900000000000      
1247 # assembler instructions: cli;xor ax,ax;mov ds,ax;mov es,ax;mov ss,
1248 >(1.b+2)        ubequad                 0xfa31c08ed88ec08e      
1249 # Error messages at end of code
1250 >>376           string  No\ operating\ system\r\n\0             
1251 >>>398          string  Disk\ error\r\n\0FDD\0HDD\0             
1252 >>>>419         string  \ EBIOS\r\n\0                           AdvanceMAME mbr
1253
1254 # Neil Turton mbr loader variant of http://www.chiark.greenend.org.uk/~neilt/mbr/ 
1255 # added by Joerg Jenderek at Mar 2011 for versions 1.0.0 - 1.1.11
1256 # for 1st version assembler instructions:       cld;xor ax,ax;mov DS,ax;MOV ES,AX;mov SI,
1257 # or                                            cld;xor ax,ax;mov SS,ax;XOR SP,SP;mov DS,
1258 0       ulequad&0xcE1b40D48EC031FC      0x8E0000D08EC031FC      
1259 # pointer to the data starting with Neil Turton signature string
1260 >(0x1BC.s)              string          NDTmbr                  
1261 >>&-14                  string          1234F\0                 Turton mbr (
1262 # parameters also viewed by install-mbr --list
1263 >>>(0x1BC.s+7)          ubyte           x                       \b%u<=
1264 >>>(0x1BC.s+9)          ubyte           x                       \bVersion<=%u
1265 #>>>(0x1BC.s+8)         ubyte           x                       asm_flag_%x
1266 >>>(0x1BC.s+8)          ubyte&1         1                       \b,Y2K-Fix
1267 # variant used by testdisk of http://www.cgsecurity.org/wiki/Menu_MBRCode
1268 >>>(0x1BC.s+8)          ubyte&2         2                       \b,TestDisk
1269 #0x1~1,..,0x8~4,0x10~F,0x80~A enabled
1270 #>>>(0x1BC.s+10)                ubyte           x                       \b,flags 0x%x
1271 #0x0~1,0x1~2,...,0x3~4,0x4~F,0x7~D default boot
1272 #>>>(0x1BC.s+11)                ubyte           x                       \b,cfg_def 0x%x
1273 # for older versions
1274 >>>(0x1BC.s+9)          ubyte           <2                      
1275 #>>>>(0x1BC.s+12)       ubyte           18                      \b,%hhu/18 seconds
1276 >>>>(0x1BC.s+12)        ubyte           !18                     \b,%u/18 seconds
1277 # floppy A: or B:
1278 >>>>(0x1BC.s+13)        ubyte           <2                      \b,floppy 0x%x
1279 >>>>(0x1BC.s+13)        ubyte           >1                      
1280 # 1st hard disc
1281 #>>>>>(0x1BC.s+13)      ubyte           0x80                    \b,drive 0x%x
1282 # not 1st hard disc
1283 >>>>>(0x1BC.s+13)       ubyte           !0x80                   \b,drive 0x%x
1284 # for version >= 2 maximal timeout can be 65534
1285 >>>(0x1BC.s+9)          ubyte           >1                      
1286 #>>>>(0x1BC.s+12)       uleshort        18                      \b,%u/18 seconds
1287 >>>>(0x1BC.s+12)        uleshort        !18                     \b,%u/18 seconds
1288 # floppy A: or B:
1289 >>>>(0x1BC.s+14)        ubyte           <2                      \b,floppy 0x%x
1290 >>>>(0x1BC.s+14)        ubyte           >1                      
1291 # 1st hard disc
1292 #>>>>>(0x1BC.s+14)      ubyte           0x80                    \b,drive 0x%x
1293 # not 1st hard disc
1294 >>>>>(0x1BC.s+14)       ubyte           !0x80                   \b,drive 0x%x
1295 >>>0    ubyte           x                                       \b)
1296
1297 # added by Joerg Jenderek
1298 # In the second sector (+0x200) are variables according to grub-0.97/stage2/asm.S or
1299 # grub-1.94/kern/i386/pc/startup.S
1300 # http://www.gnu.org/software/grub/manual/grub.html#Embedded-data
1301 # usual values are marked with comments to get only informations of strange GRUB loaders
1302 0x200   uleshort                0x70EA          
1303 # found only version 3.{1,2}
1304 >0x206          ubeshort        >0x0300         
1305 # GRUB version (0.5.)95,0.93,0.94,0.96,0.97 > "00"
1306 >>0x212         ubyte           >0x29           
1307 >>>0x213        ubyte           >0x29           
1308 # not iso9660_stage1_5
1309 #>>>0   ulelong&0x00BE5652      0x00BE5652      
1310 >>>>0x213       ubyte           >0x29           GRand Unified Bootloader
1311 # config_file for stage1_5 is 0xffffffff + default "/boot/grub/stage2"
1312 >>>>0x217       ubyte           0xFF            stage1_5
1313 >>>>0x217       ubyte           <0xFF           stage2
1314 >>>>0x206       ubyte           x               \b version %u
1315 >>>>0x207       ubyte           x               \b.%u
1316 # module_size for 1.94
1317 >>>>0x208       ulelong         <0xffffff       \b, installed partition %u
1318 #>>>>0x208      ulelong         =0xffffff       \b, %lu (default)
1319 >>>>0x208       ulelong         >0xffffff       \b, installed partition %u
1320 # GRUB 0.5.95 unofficial
1321 >>>>0x20C       ulelong&0x2E300000 0x2E300000   
1322 # 0=stage2      1=ffs   2=e2fs  3=fat   4=minix 5=reiserfs
1323 >>>>>0x20C      ubyte           x               \b, identifier 0x%x
1324 #>>>>>0x20D     ubyte           =0              \b, LBA flag 0x%x (default)
1325 >>>>>0x20D      ubyte           >0              \b, LBA flag 0x%x
1326 # GRUB version as string
1327 >>>>>0x20E      string          >\0             \b, GRUB version %-s
1328 # for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default
1329 >>>>>>0x215     ulong           0xffffffff      
1330 >>>>>>>0x219    string          >\0             \b, configuration file %-s
1331 >>>>>>0x215     ulong           !0xffffffff     
1332 >>>>>>>0x215    string          >\0             \b, configuration file %-s
1333 # newer GRUB versions
1334 >>>>0x20C       ulelong&0x2E300000 !0x2E300000  
1335 ##>>>>>0x20C    ulelong         =0              \b, saved entry %d (usual)
1336 >>>>>0x20C      ulelong         >0              \b, saved entry %d
1337 # for 1.94 contains kernel image size
1338 # for 0.93,0.94,0.96,0.97
1339 # 0=stage2      1=ffs   2=e2fs  3=fat   4=minix 5=reiserfs      6=vstafs        7=jfs   8=xfs   9=iso9660       a=ufs2  
1340 >>>>>0x210      ubyte           x               \b, identifier 0x%x
1341 # The flag for LBA forcing is in most cases 0
1342 #>>>>>0x211     ubyte           =0              \b, LBA flag 0x%x (default)
1343 >>>>>0x211      ubyte           >0              \b, LBA flag 0x%x
1344 # GRUB version as string
1345 >>>>>0x212      string          >\0             \b, GRUB version %-s
1346 # for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default
1347 >>>>>0x217      ulong           0xffffffff      
1348 >>>>>>0x21b     string          >\0             \b, configuration file %-s
1349 >>>>>0x217      ulong           !0xffffffff     
1350 >>>>>>0x217     string          >\0             \b, configuration file %-s
1351
1352 # DOS x86 sector updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
1353 # JuMP short     bootcodeoffset NOP assembler instructions will usually be EB xx 90
1354 # over BIOS parameter block (BPB)
1355 # http://thestarman.pcministry.com/asm/2bytejumps.htm#FWD
1356 # older drives may use Near JuMP instruction E9 xx xx
1357 # minimal short forward jump found 0x29 for bootloaders or 0x0
1358 # maximal short forward jump is 0x7f
1359 # OEM-ID is empty or contain readable bytes
1360 0               ulelong&0x804000E9      0x000000E9
1361 !:strength      +60
1362 # mtools-3.9.8/msdos.h
1363 # usual values are marked with comments to get only informations of strange FAT systems
1364 # valid sectorsize must be a power of 2 from 32 to 32768
1365 >11             uleshort&0x001f 0       
1366 >>11            uleshort        <32769          
1367 >>>11           uleshort        >31             
1368 >>>>21          ubyte&0xf0      0xF0            
1369 >>>>>0          ubyte           0xEB            DOS/MBR boot sector
1370 >>>>>>1         ubyte           x               \b, code offset 0x%x+2
1371 >>>>>0          ubyte           0xE9            
1372 >>>>>>1         uleshort        x               \b, code offset 0x%x+3
1373 >>>>>3          string          >\0             \b, OEM-ID "%-.8s"
1374 #http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC
1375 >>>>>>8         string          IHC             \b cached by Windows 9M
1376 >>>>>11         uleshort        >512            \b, Bytes/sector %u
1377 #>>>>>11        uleshort        =512            \b, Bytes/sector %u=512 (usual)
1378 >>>>>11         uleshort        <512            \b, Bytes/sector %u
1379 >>>>>13         ubyte           >1              \b, sectors/cluster %u
1380 #>>>>>13        ubyte           =1              \b, sectors/cluster %u (usual on Floppies)
1381 # for lazy FAT32 implementation like Transcend digital photo frame PF830
1382 >>>>>82         string/c        fat32           
1383 >>>>>>14        uleshort        !32             \b, reserved sectors %u
1384 #>>>>>>14       uleshort        =32             \b, reserved sectors %u (usual Fat32)
1385 >>>>>82         string/c        !fat32          
1386 >>>>>>14        uleshort        >1              \b, reserved sectors %u
1387 #>>>>>>14       uleshort        =1              \b, reserved sectors %u (usual FAT12,FAT16)
1388 #>>>>>>14       uleshort        0               \b, reserved sectors %u (usual NTFS)
1389 >>>>>16         ubyte           >2              \b, FATs %u
1390 #>>>>>16        ubyte           =2              \b, FATs %u (usual)
1391 >>>>>16         ubyte           =1              \b, FAT  %u
1392 >>>>>16         ubyte           >0
1393 >>>>>17         uleshort        >0              \b, root entries %u
1394 #>>>>>17        uleshort        =0              \b, root entries %hu=0 (usual Fat32)
1395 >>>>>19         uleshort        >0              \b, sectors %u (volumes <=32 MB) 
1396 #>>>>>19        uleshort        =0              \b, sectors %hu=0 (usual Fat32)
1397 >>>>>21         ubyte           >0xF0           \b, Media descriptor 0x%x
1398 #>>>>>21        ubyte           =0xF0           \b, Media descriptor 0x%x (usual floppy)
1399 >>>>>21         ubyte           <0xF0           \b, Media descriptor 0x%x
1400 >>>>>22         uleshort        >0              \b, sectors/FAT %u
1401 #>>>>>22        uleshort        =0              \b, sectors/FAT %hu=0 (usual Fat32)
1402 >>>>>24         uleshort        x               \b, sectors/track %u
1403 >>>>>26         ubyte           >2              \b, heads %u
1404 #>>>>>26        ubyte           =2              \b, heads %u (usual floppy)
1405 >>>>>26         ubyte           =1              \b, heads %u
1406 # valid only for sector sizes with more then 32 Bytes
1407 >>>>>11         uleshort        >32             
1408 # http://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Extended_BIOS_Parameter_Block
1409 # skip for values 2,2Ah,70h,73h,DFh
1410 # and continue for extended boot signature values 0,28h,29h,80h
1411 >>>>>>38        ubyte&0x56      =0              
1412 >>>>>>>28       ulelong         >0              \b, hidden sectors %u
1413 #>>>>>>>28      ulelong         =0              \b, hidden sectors %u (usual floppy)
1414 >>>>>>>32       ulelong         >0              \b, sectors %u (volumes > 32 MB) 
1415 #>>>>>>>32      ulelong         =0              \b, sectors %u (volumes > 32 MB)
1416 # FAT<32 bit specific 
1417 >>>>>>>82       string/c        !fat32          
1418 #>>>>>>>>36     ubyte           0x80            \b, physical drive 0x%x=0x80 (usual harddisk)
1419 #>>>>>>>>36     ubyte           0               \b, physical drive 0x%x=0 (usual floppy)
1420 >>>>>>>>36      ubyte           !0x80           
1421 >>>>>>>>>36     ubyte           !0              \b, physical drive 0x%x
1422 # VGA-copy CRC or
1423 # in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
1424 >>>>>>>>37      ubyte           >0              \b, reserved 0x%x
1425 #>>>>>>>>37     ubyte           =0              \b, reserved 0x%x
1426 # extended boot signatur value is 0x80 for NTFS, 0x28 or 0x29 for others
1427 >>>>>>>>38      ubyte           !0x29           \b, dos < 4.0 BootSector (0x%x)
1428 >>>>>>>>38      ubyte&0xFE      =0x28
1429 >>>>>>>>>39     ulelong         x               \b, serial number 0x%x
1430 >>>>>>>>38      ubyte           =0x29
1431 >>>>>>>>>43     string          <NO\ NAME       \b, label: "%11.11s"
1432 >>>>>>>>>43     string          >NO\ NAME       \b, label: "%11.11s"
1433 >>>>>>>>>43     string          =NO\ NAME       \b, unlabeled
1434 # there exist some old floppies without word FAT at offset 54
1435 # a word like "FATnm   " is only a hint for a FAT size on nm-bits
1436 # Normally the number of clusters is calculated by the values of BPP.
1437 # if it is small enough FAT is 12 bit, if it is too big enough FAT is 32 bit,
1438 # otherwise FAT is 16 bit.
1439 # http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-fat-widths.html
1440 >>>>>82         string/c        !fat32          
1441 >>>>>>54        string          FAT12           \b, FAT (12 bit)
1442 >>>>>>54        string          FAT16           \b, FAT (16 bit)
1443 >>>>>>54        default         x               
1444 # determinate FAT bit size by media descriptor
1445 # small floppies implies FAT12
1446 >>>>>>>21       ubyte           <0xF0           \b, FAT (12 bit by descriptor)
1447 # with media descriptor F0h floppy or maybe superfloppy with FAT16
1448 >>>>>>>21       ubyte           =0xF0           
1449 # superfloppy (many sectors) implies FAT16
1450 >>>>>>>>32      ulelong         >0xFFFF         \b, FAT (16 bit by descriptor+sectors)
1451 # no superfloppy with media descriptor F0h implies FAT12
1452 >>>>>>>>32      default         x               \b, FAT (12 bit by descriptor+sectors)
1453 # with media descriptor F8h floppy or hard disc with FAT12 or FAT16
1454 >>>>>>>21       ubyte           =0xF8           
1455 # 360 KiB with media descriptor F8h, 9 sectors per track ,single sided floppy implies FAT12
1456 >>>>>>>>19      ubequad 0xd002f80300090001      \b, FAT (12 bit by descriptor+geometry)
1457 # hard disc with FAT12 or FAT16
1458 >>>>>>>>19      default         x               \b, FAT (1Y bit by descriptor)
1459 # with media descriptor FAh floppy, RAM disc with FAT12 or FAT16 or Tandy hard disc
1460 >>>>>>>21       ubyte           =0xFA           
1461 # 320 KiB with media descriptor FAh, 8 sectors per track ,single sided floppy implies FAT12
1462 >>>>>>>>19      ubequad 0x8002fa0200080001      \b, FAT (12 bit by descriptor+geometry)
1463 # RAM disc with FAT12 or FAT16 or Tandy hard disc
1464 >>>>>>>>19      default         x               \b, FAT (1Y bit by descriptor)
1465 # others are floppy
1466 >>>>>>>21       default         x               \b, FAT (12 bit by descriptor)
1467 # FAT32 bit specific
1468 >>>>>82         string/c        fat32           \b, FAT (32 bit)
1469 >>>>>>36        ulelong         x               \b, sectors/FAT %u
1470 # http://technet.microsoft.com/en-us/library/cc977221.aspx
1471 >>>>>>40        uleshort        >0              \b, extension flags 0x%x
1472 #>>>>>>40       uleshort        =0              \b, extension flags %hu
1473 >>>>>>42        uleshort        >0              \b, fsVersion %u
1474 #>>>>>>42       uleshort        =0              \b, fsVersion %u (usual)
1475 >>>>>>44        ulelong         >2              \b, rootdir cluster %u
1476 #>>>>>>44       ulelong         =2              \b, rootdir cluster %u
1477 #>>>>>>44       ulelong         =1              \b, rootdir cluster %u
1478 >>>>>>48        uleshort        >1              \b, infoSector %u
1479 #>>>>>>48       uleshort        =1              \b, infoSector %u (usual)
1480 >>>>>>48        uleshort        <1              \b, infoSector %u
1481 # 0 or 0xFFFF instead of usual 6 means no backup sector
1482 >>>>>>50        uleshort        =0xFFFF         \b, no Backup boot sector
1483 >>>>>>50        uleshort        =0              \b, no Backup boot sector
1484 #>>>>>>50       uleshort        =6              \b, Backup boot sector %u (usual) 
1485 >>>>>>50        default         x               
1486 >>>>>>>50       uleshort        x               \b, Backup boot sector %u
1487 # corrected by Joerg Jenderek at Feb 2011 according to http://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
1488 >>>>>>52        ulelong         >0              \b, reserved1 0x%x
1489 >>>>>>56        ulelong         >0              \b, reserved2 0x%x
1490 >>>>>>60        ulelong         >0              \b, reserved3 0x%x
1491 # same structure as FAT1X 
1492 #>>>>>>64       ubyte           =0x80           \b, physical drive 0x%x=80 (usual harddisk)
1493 #>>>>>>64       ubyte           =0              \b, physical drive 0x%x=0 (usual floppy)
1494 >>>>>>64        ubyte           !0x80           
1495 >>>>>>>64       ubyte           >0              \b, physical drive 0x%x
1496 # in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
1497 >>>>>>65        ubyte           >0              \b, reserved 0x%x
1498 >>>>>>66        ubyte           !0x29           \b, dos < 4.0 BootSector (0x%x)
1499 >>>>>>66        ubyte           =0x29
1500 >>>>>>>67       ulelong         x               \b, serial number 0x%x
1501 >>>>>>>71       string          <NO\ NAME       \b, label: "%11.11s"
1502 >>>>>>>71       string          >NO\ NAME       \b, label: "%11.11s"
1503 >>>>>>>71       string          =NO\ NAME       \b, unlabeled
1504 # additional tests for floppy image added by Joerg Jenderek
1505 # no fixed disk 
1506 >>>>>21         ubyte           !0xF8           
1507 # floppy media with 12 bit FAT
1508 >>>>>>54        string          !FAT16          
1509 # test for FAT after bootsector
1510 >>>>>>>(11.s)   ulelong&0x00ffffF0      0x00ffffF0      \b, followed by FAT
1511 # floppy image
1512 !:mime application/x-ima
1513 # NTFS specific added by Joerg Jenderek at Mar 2011 according to http://thestarman.pcministry.com/asm/mbr/NTFSBR.htm
1514 # and http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/bios-parameter-block.html
1515 # 0 FATs
1516 >>>>>16 ubyte           =0              
1517 # 0 root entries
1518 >>>>>>17        uleshort        =0              
1519 # 0 DOS sectors
1520 >>>>>>>19       uleshort        =0              
1521 # 0 sectors/FAT
1522 # dos < 4.0 BootSector value found is 0x80
1523 #38     ubyte           =0x80                   \b, dos < 4.0 BootSector (0x%x)
1524 >>>>>>>>22      uleshort        =0              \b; NTFS
1525 >>>>>>>>>24     uleshort        >0              \b, sectors/track %u
1526 >>>>>>>>>36     ulelong         !0x800080       \b, physical drive 0x%x
1527 >>>>>>>>>40     ulequad         >0              \b, sectors %lld
1528 >>>>>>>>>48     ulequad         >0              \b, $MFT start cluster %lld
1529 >>>>>>>>>56     ulequad         >0              \b, $MFTMirror start cluster %lld
1530 # Values 0 to 127 represent MFT record sizes of 0 to 127 clusters.
1531 # Values 128 to 255 represent MFT record sizes of 2^(256-N) bytes. 
1532 >>>>>>>>>64     lelong          <256            
1533 >>>>>>>>>>64    lelong          <128            \b, clusters/RecordSegment %d
1534 >>>>>>>>>>64    ubyte           >127            \b, bytes/RecordSegment 2^(-1*%i)
1535 # Values 0 to 127 represent index block sizes of 0 to 127 clusters.
1536 # Values 128 to 255 represent index block sizes of 2^(256-N) byte
1537 >>>>>>>>>68     ulelong         <256            
1538 >>>>>>>>>>68    ulelong         <128            \b, clusters/index block %d
1539 #>>>>>>>>>>68   ulelong         >127            \b, bytes/index block 2^(256-%d)
1540 >>>>>>>>>>68    ubyte           >127            \b, bytes/index block 2^(-1*%i)
1541 >>>>>>>>>72     ulequad         x               \b, serial number 0%llx
1542 >>>>>>>>>80     ulelong         >0              \b, checksum 0x%x
1543 #>>>>>>>>>80    ulelong         =0              \b, checksum 0x%x=0 (usual)
1544 >>>>>>>>>0x258  ulelong&0x00009090      =0x00009090     
1545 >>>>>>>>>>&-92          indirect        x       \b; contains 
1546 # For 2nd NTFS sector added by Joerg Jenderek at Jan 2013
1547 # http://thestarman.pcministry.com/asm/mbr/NTFSbrHexEd.htm
1548 # unused assembler instructions JMP y2;NOP;NOP
1549 0x056           ulelong&0xFFFF0FFF      0x909002EB      
1550 # unicode loadername terminated by CTRL-D
1551 >(0.s*2)        ulelong&0xFFFFFF00      0x00040000              
1552 # loadernames are NTLDR,CMLDR,PELDR,$LDR$ or BOOTMGR
1553 >>0x002         lestring16      x       Microsoft Windows XP/VISTA bootloader %-5.5s
1554 >>0x12          string          $       
1555 >>>0x0c         lestring16      x       \b%-2.2s
1556 ### DOS,NTFS boot sectors end
1557
1558 9564    lelong          0x00011954      Unix Fast File system [v1] (little-endian),
1559 >8404   string          x               last mounted on %s,
1560 #>9504  ledate          x               last checked at %s,
1561 >8224   ledate          x               last written at %s,
1562 >8401   byte            x               clean flag %d,
1563 >8228   lelong          x               number of blocks %d,
1564 >8232   lelong          x               number of data blocks %d,
1565 >8236   lelong          x               number of cylinder groups %d,
1566 >8240   lelong          x               block size %d,
1567 >8244   lelong          x               fragment size %d,
1568 >8252   lelong          x               minimum percentage of free blocks %d,
1569 >8256   lelong          x               rotational delay %dms,
1570 >8260   lelong          x               disk rotational speed %drps,
1571 >8320   lelong          0               TIME optimization
1572 >8320   lelong          1               SPACE optimization
1573
1574 42332   lelong          0x19540119      Unix Fast File system [v2] (little-endian)
1575 >&-1164 string          x               last mounted on %s,
1576 >&-696  string          >\0             volume name %s,
1577 >&-304  leqldate        x               last written at %s,
1578 >&-1167 byte            x               clean flag %d,
1579 >&-1168 byte            x               readonly flag %d,
1580 >&-296  lequad          x               number of blocks %lld,
1581 >&-288  lequad          x               number of data blocks %lld,
1582 >&-1332 lelong          x               number of cylinder groups %d,
1583 >&-1328 lelong          x               block size %d,
1584 >&-1324 lelong          x               fragment size %d,
1585 >&-180  lelong          x               average file size %d,
1586 >&-176  lelong          x               average number of files in dir %d,
1587 >&-272  lequad          x               pending blocks to free %lld,
1588 >&-264  lelong          x               pending inodes to free %d,
1589 >&-664  lequad          x               system-wide uuid %0llx,
1590 >&-1316 lelong          x               minimum percentage of free blocks %d,
1591 >&-1248 lelong          0               TIME optimization
1592 >&-1248 lelong          1               SPACE optimization
1593
1594 66908   lelong          0x19540119      Unix Fast File system [v2] (little-endian)
1595 >&-1164 string          x               last mounted on %s,
1596 >&-696  string          >\0             volume name %s,
1597 >&-304  leqldate        x               last written at %s,
1598 >&-1167 byte            x               clean flag %d,
1599 >&-1168 byte            x               readonly flag %d,
1600 >&-296  lequad          x               number of blocks %lld,
1601 >&-288  lequad          x               number of data blocks %lld,
1602 >&-1332 lelong          x               number of cylinder groups %d,
1603 >&-1328 lelong          x               block size %d,
1604 >&-1324 lelong          x               fragment size %d,
1605 >&-180  lelong          x               average file size %d,
1606 >&-176  lelong          x               average number of files in dir %d,
1607 >&-272  lequad          x               pending blocks to free %lld,
1608 >&-264  lelong          x               pending inodes to free %d,
1609 >&-664  lequad          x               system-wide uuid %0llx,
1610 >&-1316 lelong          x               minimum percentage of free blocks %d,
1611 >&-1248 lelong          0               TIME optimization
1612 >&-1248 lelong          1               SPACE optimization
1613
1614 9564    belong          0x00011954      Unix Fast File system [v1] (big-endian),
1615 >7168   belong          0x4c41424c      Apple UFS Volume
1616 >>7186  string          x               named %s,
1617 >>7176  belong          x               volume label version %d,
1618 >>7180  bedate          x               created on %s,
1619 >8404   string          x               last mounted on %s,
1620 #>9504  bedate          x               last checked at %s,
1621 >8224   bedate          x               last written at %s,
1622 >8401   byte            x               clean flag %d,
1623 >8228   belong          x               number of blocks %d,
1624 >8232   belong          x               number of data blocks %d,
1625 >8236   belong          x               number of cylinder groups %d,
1626 >8240   belong          x               block size %d,
1627 >8244   belong          x               fragment size %d,
1628 >8252   belong          x               minimum percentage of free blocks %d,
1629 >8256   belong          x               rotational delay %dms,
1630 >8260   belong          x               disk rotational speed %drps,
1631 >8320   belong          0               TIME optimization
1632 >8320   belong          1               SPACE optimization
1633
1634 42332   belong          0x19540119      Unix Fast File system [v2] (big-endian)
1635 >&-1164 string          x               last mounted on %s,
1636 >&-696  string          >\0             volume name %s,
1637 >&-304  beqldate        x               last written at %s,
1638 >&-1167 byte            x               clean flag %d,
1639 >&-1168 byte            x               readonly flag %d,
1640 >&-296  bequad          x               number of blocks %lld,
1641 >&-288  bequad          x               number of data blocks %lld,
1642 >&-1332 belong          x               number of cylinder groups %d,
1643 >&-1328 belong          x               block size %d,
1644 >&-1324 belong          x               fragment size %d,
1645 >&-180  belong          x               average file size %d,
1646 >&-176  belong          x               average number of files in dir %d,
1647 >&-272  bequad          x               pending blocks to free %lld,
1648 >&-264  belong          x               pending inodes to free %d,
1649 >&-664  bequad          x               system-wide uuid %0llx,
1650 >&-1316 belong          x               minimum percentage of free blocks %d,
1651 >&-1248 belong          0               TIME optimization
1652 >&-1248 belong          1               SPACE optimization
1653
1654 66908   belong          0x19540119      Unix Fast File system [v2] (big-endian)
1655 >&-1164 string          x               last mounted on %s,
1656 >&-696  string          >\0             volume name %s,
1657 >&-304  beqldate        x               last written at %s,
1658 >&-1167 byte            x               clean flag %d,
1659 >&-1168 byte            x               readonly flag %d,
1660 >&-296  bequad          x               number of blocks %lld,
1661 >&-288  bequad          x               number of data blocks %lld,
1662 >&-1332 belong          x               number of cylinder groups %d,
1663 >&-1328 belong          x               block size %d,
1664 >&-1324 belong          x               fragment size %d,
1665 >&-180  belong          x               average file size %d,
1666 >&-176  belong          x               average number of files in dir %d,
1667 >&-272  bequad          x               pending blocks to free %lld,
1668 >&-264  belong          x               pending inodes to free %d,
1669 >&-664  bequad          x               system-wide uuid %0llx,
1670 >&-1316 belong          x               minimum percentage of free blocks %d,
1671 >&-1248 belong          0               TIME optimization
1672 >&-1248 belong          1               SPACE optimization
1673
1674 # ext2/ext3 filesystems - Andreas Dilger <adilger@dilger.ca>
1675 # ext4 filesystem - Eric Sandeen <sandeen@sandeen.net>
1676 # volume label and UUID Russell Coker
1677 # http://etbe.coker.com.au/2008/07/08/label-vs-uuid-vs-device/
1678 0x438   leshort         0xEF53          Linux
1679 >0x44c  lelong          x               rev %d
1680 >0x43e  leshort         x               \b.%d
1681 # No journal?  ext2
1682 >0x45c  lelong          ^0x0000004      ext2 filesystem data
1683 >>0x43a leshort         ^0x0000001      (mounted or unclean)
1684 # Has a journal?  ext3 or ext4
1685 >0x45c  lelong          &0x0000004
1686 #  and small INCOMPAT?
1687 >>0x460 lelong          <0x0000040
1688 #   and small RO_COMPAT?
1689 >>>0x464 lelong         <0x0000008      ext3 filesystem data
1690 #   else large RO_COMPAT?
1691 >>>0x464 lelong         >0x0000007      ext4 filesystem data
1692 #  else large INCOMPAT?
1693 >>0x460 lelong          >0x000003f      ext4 filesystem data
1694 >0x468  belong          x               \b, UUID=%08x
1695 >0x46c  beshort         x               \b-%04x
1696 >0x46e  beshort         x               \b-%04x
1697 >0x470  beshort         x               \b-%04x
1698 >0x472  belong          x               \b-%08x
1699 >0x476  beshort         x               \b%04x
1700 >0x478  string          >0              \b, volume name "%s"
1701 # General flags for any ext* fs
1702 >0x460  lelong          &0x0000004      (needs journal recovery)
1703 >0x43a  leshort         &0x0000002      (errors)
1704 # INCOMPAT flags
1705 >0x460  lelong          &0x0000001      (compressed)
1706 #>0x460 lelong          &0x0000002      (filetype)
1707 #>0x460 lelong          &0x0000010      (meta bg)
1708 >0x460  lelong          &0x0000040      (extents)
1709 >0x460  lelong          &0x0000080      (64bit)
1710 #>0x460 lelong          &0x0000100      (mmp)
1711 #>0x460 lelong          &0x0000200      (flex bg)
1712 # RO_INCOMPAT flags
1713 #>0x464 lelong          &0x0000001      (sparse super)
1714 >0x464  lelong          &0x0000002      (large files)
1715 >0x464  lelong          &0x0000008      (huge files)
1716 #>0x464 lelong          &0x0000010      (gdt checksum)
1717 #>0x464 lelong          &0x0000020      (many subdirs)
1718 #>0x463 lelong          &0x0000040      (extra isize)
1719
1720 # Minix filesystems - Juan Cespedes <cespedes@debian.org>
1721 0x410   leshort         0x137f
1722 !:strength / 2
1723 >0x402  beshort         < 100
1724 >0x402  beshort         > -1            Minix filesystem, V1, %d zones
1725 >0x1e   string          minix           \b, bootable
1726 0x410   beshort         0x137f
1727 !:strength / 2
1728 >0x402  beshort         < 100
1729 >0x402  beshort         > -1            Minix filesystem, V1 (big endian), %d zones
1730 >0x1e   string          minix           \b, bootable
1731 0x410   leshort         0x138f
1732 !:strength / 2
1733 >0x402  beshort         < 100
1734 >0x402  beshort         > -1            Minix filesystem, V1, 30 char names, %d zones
1735 >0x1e   string          minix           \b, bootable
1736 0x410   beshort         0x138f
1737 !:strength / 2
1738 >0x402  beshort         < 100
1739 >0x402  beshort         > -1            Minix filesystem, V1, 30 char names (big endian), %d zones
1740 >0x1e   string          minix           \b, bootable
1741 0x410   leshort         0x2468
1742 >0x402  beshort         < 100
1743 >>0x402 beshort         > -1            Minix filesystem, V2, %d zones
1744 >0x1e   string          minix           \b, bootable
1745 0x410   beshort         0x2468
1746 >0x402  beshort         < 100
1747 >0x402  beshort         > -1            Minix filesystem, V2 (big endian), %d zones
1748 >0x1e   string          minix           \b, bootable
1749
1750 0x410   leshort         0x2478
1751 >0x402  beshort         < 100
1752 >0x402  beshort         > -1            Minix filesystem, V2, 30 char names, %d zones
1753 >0x1e   string          minix           \b, bootable
1754 0x410   leshort         0x2478
1755 >0x402  beshort         < 100
1756 >0x402  beshort         > -1            Minix filesystem, V2, 30 char names, %d zones
1757 >0x1e   string          minix           \b, bootable
1758 0x410   beshort         0x2478
1759 >0x402  beshort         !0              Minix filesystem, V2, 30 char names (big endian), %d zones
1760 >0x1e   string          minix           \b, bootable
1761 0x410   leshort         0x4d5a
1762 >0x402  beshort         !0              Minix filesystem, V3, %d zones
1763 >0x1e   string          minix           \b, bootable
1764
1765 # SGI disk labels - Nathan Scott <nathans@debian.org>
1766 0       belong          0x0BE5A941      SGI disk label (volume header)
1767
1768 # SGI XFS filesystem - Nathan Scott <nathans@debian.org>
1769 0       belong          0x58465342      SGI XFS filesystem data
1770 >0x4    belong          x               (blksz %d,
1771 >0x68   beshort         x               inosz %d,
1772 >0x64   beshort         ^0x2004         v1 dirs)
1773 >0x64   beshort         &0x2004         v2 dirs)
1774
1775 ############################################################################
1776 # Minix-ST kernel floppy
1777 0x800   belong          0x46fc2700      Atari-ST Minix kernel image
1778 # http://en.wikipedia.org/wiki/BIOS_parameter_block
1779 # floppies with valid BPB and any instruction at beginning
1780 >19     string          \240\005\371\005\0\011\0\2\0    \b, 720k floppy
1781 >19     string          \320\002\370\005\0\011\0\1\0    \b, 360k floppy
1782
1783 ############################################################################
1784 # Hmmm, is this a better way of detecting _standard_ floppy images ?
1785 19      string          \320\002\360\003\0\011\0\1\0    DOS floppy 360k
1786 >0x1FE  leshort         0xAA55          \b, DOS/MBR hard disk boot sector
1787 19      string          \240\005\371\003\0\011\0\2\0    DOS floppy 720k
1788 >0x1FE  leshort         0xAA55          \b, DOS/MBR hard disk boot sector
1789 19      string          \100\013\360\011\0\022\0\2\0    DOS floppy 1440k
1790 >0x1FE  leshort         0xAA55          \b, DOS/MBR hard disk boot sector
1791
1792 19      string          \240\005\371\005\0\011\0\2\0    DOS floppy 720k, IBM
1793 >0x1FE  leshort         0xAA55          \b, DOS/MBR hard disk boot sector
1794 19      string          \100\013\371\005\0\011\0\2\0    DOS floppy 1440k, mkdosfs
1795 >0x1FE  leshort         0xAA55          \b, DOS/MBR hard disk boot sector
1796
1797 19      string          \320\002\370\005\0\011\0\1\0    Atari-ST floppy 360k
1798 19      string          \240\005\371\005\0\011\0\2\0    Atari-ST floppy 720k
1799 #                       |       |   |     |     |
1800 #                       |       |   |     |     heads
1801 #                       |       |   |     sectors/track
1802 #                       |       |   sectors/FAT
1803 #                       |       media descriptor
1804 #               BPB:    sectors
1805
1806 #  Valid media descriptor bytes for MS-DOS:
1807 #
1808 #     Byte   Capacity   Media Size and Type
1809 #     -------------------------------------------------
1810 #
1811 #     F0     2.88 MB    3.5-inch, 2-sided, 36-sector
1812 #     F0     1.44 MB    3.5-inch, 2-sided, 18-sector
1813 #     F9     720K       3.5-inch, 2-sided, 9-sector
1814 #     F9     1.2 MB     5.25-inch, 2-sided, 15-sector
1815 #     FD     360K       5.25-inch, 2-sided, 9-sector
1816 #     FF     320K       5.25-inch, 2-sided, 8-sector
1817 #     FC     180K       5.25-inch, 1-sided, 9-sector
1818 #     FE     160K       5.25-inch, 1-sided, 8-sector
1819 #     FE     250K       8-inch, 1-sided, single-density
1820 #     FD     500K       8-inch, 2-sided, single-density
1821 #     FE     1.2 MB     8-inch, 2-sided, double-density
1822 #     F8     -----      Fixed disk 
1823 #
1824 #     FC     xxxK       Apricot 70x1x9 boot disk.
1825 #
1826 # Originally a bitmap:
1827 #  xxxxxxx0     Not two sided
1828 #  xxxxxxx1     Double sided
1829 #  xxxxxx0x     Not 8 SPT
1830 #  xxxxxx1x     8 SPT
1831 #  xxxxx0xx     Not Removable drive
1832 #  xxxxx1xx     Removable drive
1833 #  11111xxx     Must be one.
1834 #
1835 # But now it's rather random:
1836 #  111111xx     Low density disk
1837 #        00     SS, Not 8 SPT
1838 #        01     DS, Not 8 SPT
1839 #        10     SS, 8 SPT
1840 #        11     DS, 8 SPT
1841 #
1842 #  11111001     Double density 3 1/2 floppy disk, high density 5 1/4
1843 #  11110000     High density 3 1/2 floppy disk
1844 #  11111000     Hard disk any format
1845 #
1846
1847 # all FAT12 (strength=70) floppies with sectorsize 512 added by Joerg Jenderek at Jun 2013
1848 # http://en.wikipedia.org/wiki/File_Allocation_Table#Exceptions
1849 # Too Weak.
1850 #512            ubelong&0xE0ffff00      0xE0ffff00              
1851 # without valid Media descriptor in place of BPB, cases with are done at other places
1852 #>21            ubyte                   <0xE5                   floppy with old FAT filesystem
1853 # but valid Media descriptor at begin of FAT
1854 #>>512          ubyte                   =0xed                   720k
1855 #>>512          ubyte                   =0xf0                   1440k
1856 #>>512          ubyte                   =0xf8                   720k
1857 #>>512          ubyte                   =0xf9                   1220k
1858 #>>512          ubyte                   =0xfa                   320k
1859 #>>512          ubyte                   =0xfb                   640k
1860 #>>512          ubyte                   =0xfc                   180k
1861 # look like an an old DOS directory entry
1862 #>>>0xA0E       ubequad                 0                       
1863 #>>>>0xA00      ubequad                 !0                      
1864 #!:mime application/x-ima
1865 #>>512          ubyte                   =0xfd                   
1866 # look for 2nd FAT at different location to distinguish between 360k and 500k
1867 #>>>0x600       ubelong&0xE0ffff00      0xE0ffff00              360k
1868 #>>>0x500       ubelong&0xE0ffff00      0xE0ffff00              500k
1869 #>>>0xA0E       ubequad                 0                       
1870 #!:mime application/x-ima
1871 #>>512          ubyte                   =0xfe                   
1872 #>>>0x400       ubelong&0xE0ffff00      0xE0ffff00              160k
1873 #>>>>0x60E      ubequad                 0                       
1874 #>>>>>0x600     ubequad                 !0                      
1875 #!:mime application/x-ima
1876 #>>>0xC00       ubelong&0xE0ffff00      0xE0ffff00              1200k
1877 #>>512          ubyte                   =0xff                   320k
1878 #>>>0x60E       ubequad                 0                       
1879 #>>>>0x600      ubequad                 !0                      
1880 #!:mime application/x-ima
1881 #>>512          ubyte                   x                       \b, Media descriptor 0x%x
1882 # without x86 jump instruction
1883 #>>0            ulelong&0x804000E9      !0x000000E9             
1884 # assembler instructions: CLI;MOV SP,1E7;MOV AX;07c0;MOV        
1885 #>>>0   ubequad                         0xfabce701b8c0078e      \b, MS-DOS 1.12 bootloader
1886 # IOSYS.COM+MSDOS.COM
1887 #>>>>0xc4       use                     2xDOS-filename
1888 #>>0            ulelong&0x804000E9      =0x000000E9     
1889 # only x86 short jump instruction found
1890 #>>>0           ubyte                   =0xEB
1891 #>>>>1          ubyte                   x                       \b, code offset 0x%x+2
1892 # http://thestarman.pcministry.com/DOS/ibm100/Boot.htm
1893 # assembler instructions: CLI;MOV AX,CS;MOV DS,AX;MOV DX,0              
1894 #>>>>(1.b+2)    ubequad                 0xfa8cc88ed8ba0000      \b, PC-DOS 1.0 bootloader 
1895 # ibmbio.com+ibmdos.com
1896 #>>>>>0x176     use                     DOS-filename
1897 #>>>>>0x181     ubyte                   x                       \b+
1898 #>>>>>0x182     use                     DOS-filename
1899 # http://thestarman.pcministry.com/DOS/ibm110/Boot.htm
1900 # assembler instructions: CLI;MOV AX,CS;MOV DS,AX;XOR DX,DX;MOV         
1901 #>>>>(1.b+2)    ubequad                 0xfa8cc88ed833d28e      \b, PC-DOS 1.1 bootloader 
1902 # ibmbio.com+ibmdos.com
1903 #>>>>>0x18b     use                     DOS-filename
1904 #>>>>>0x196     ubyte                   x                       \b+
1905 #>>>>>0x197     use                     DOS-filename
1906 # http://en.wikipedia.org/wiki/Zenith_Data_Systems
1907 # assembler instructions: MOV BX,07c0;MOV SS,BX;MOV SP,01c6             
1908 #>>>>(1.b+2)    ubequad                 0xbbc0078ed3bcc601      \b, Zenith Data Systems MS-DOS 1.25 bootloader
1909 # IO.SYS+MSDOS.SYS
1910 #>>>>>0x20      use                     2xDOS-filename
1911 # http://en.wikipedia.org/wiki/Corona_Data_Systems
1912 # assembler instructions: MOV AX,CS;MOV DS,AX;CLI;MOV SS,AX;            
1913 #>>>>(1.b+2)    ubequad                 0x8cc88ed8fa8ed0bc      \b, MS-DOS 1.25 bootloader
1914 # IO.SYS+MSDOS.SYS
1915 #>>>>>0x69      use                     2xDOS-filename
1916 # assembler instructions: CLI;PUSH CS;POP SS;MOV SP,7c00;               
1917 #>>>>(1.b+2)    ubequad                 0xfa0e17bc007cb860      \b, MS-DOS 2.11 bootloader
1918 # defect IO.SYS+MSDOS.SYS ?
1919 #>>>>>0x162     use                     2xDOS-filename
1920
1921 0       name                            cdrom
1922 >38913  string   !NSR0      ISO 9660 CD-ROM filesystem data
1923 !:mime  application/x-iso9660-image
1924 >38913  string    NSR0      UDF filesystem data
1925 !:mime  application/x-iso9660-image
1926 >>38917 string    1         (version 1.0)
1927 >>38917 string    2         (version 1.5)
1928 >>38917 string    3         (version 2.0)
1929 >>38917 byte     >0x33      (unknown version, ID 0x%X)
1930 >>38917 byte     <0x31      (unknown version, ID 0x%X)
1931 # "application id" which appears to be used as a volume label
1932 >32808  string/T  >\0       '%s'
1933 >34816  string    \000CD001\001EL\ TORITO\ SPECIFICATION    (bootable)
1934 37633   string    CD001     ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
1935 !:mime  application/x-iso9660-image
1936 32777   string    CDROM     High Sierra CD-ROM filesystem data
1937
1938 # CDROM Filesystems
1939 # https://en.wikipedia.org/wiki/ISO_9660
1940 # Modified for UDF by gerardo.cacciari@gmail.com
1941 32769   string    CD001
1942 # mime line at that position does not work
1943 # to display CD-ROM (70=81-11) after MBR (113=40+72+1), partition-table (71=50+21) and before Apple Driver Map (51)
1944 !:strength -11
1945 # to display CD-ROM (114=81+33) before MBR (113=40+72+1), partition-table (71=50+21) and Apple Driver Map (51)
1946 # does not work
1947 #!:strength +33
1948 >0      use cdrom
1949
1950 # .cso files
1951 0    string    CISO     Compressed ISO CD image
1952
1953 # cramfs filesystem - russell@coker.com.au
1954 0       lelong    0x28cd3d45      Linux Compressed ROM File System data, little endian
1955 >4      lelong  x size %u
1956 >8      lelong  &1 version #2
1957 >8      lelong  &2 sorted_dirs
1958 >8      lelong  &4 hole_support
1959 >32     lelong  x CRC 0x%x,
1960 >36     lelong  x edition %u,
1961 >40     lelong  x %u blocks,
1962 >44     lelong  x %u files
1963
1964 0       belong    0x28cd3d45      Linux Compressed ROM File System data, big endian
1965 >4      belong  x size %u
1966 >8      belong  &1 version #2
1967 >8      belong  &2 sorted_dirs
1968 >8      belong  &4 hole_support
1969 >32     belong  x CRC 0x%x,
1970 >36     belong  x edition %u,
1971 >40     belong  x %u blocks,
1972 >44     belong  x %u files
1973
1974 # reiserfs - russell@coker.com.au
1975 0x10034         string  ReIsErFs        ReiserFS V3.5
1976 0x10034         string  ReIsEr2Fs       ReiserFS V3.6
1977 0x10034         string  ReIsEr3Fs       ReiserFS V3.6.19
1978 >0x1002c        leshort x               block size %d
1979 >0x10032        leshort &2              (mounted or unclean)
1980 >0x10000        lelong  x               num blocks %d
1981 >0x10040        lelong  1               tea hash
1982 >0x10040        lelong  2               yura hash
1983 >0x10040        lelong  3               r5 hash
1984
1985 # JFFS - russell@coker.com.au
1986 0       lelong  0x34383931      Linux Journalled Flash File system, little endian
1987 0       belong  0x34383931      Linux Journalled Flash File system, big endian
1988
1989 # EST flat binary format (which isn't, but anyway)
1990 # From: Mark Brown <broonie@sirena.org.uk>
1991 0       string  ESTFBINR        EST flat binary
1992
1993 # Aculab VoIP firmware
1994 # From: Mark Brown <broonie@sirena.org.uk>
1995 0       string  VoIP\ Startup\ and      Aculab VoIP firmware
1996 >35     string  x       format %s
1997
1998 # From: Mark Brown <broonie@sirena.org.uk> [old]
1999 # From: Behan Webster <behanw@websterwood.com>
2000 0       belong  0x27051956      u-boot legacy uImage,
2001 >32     string  x               %s,
2002 >28     byte    0               Invalid os/
2003 >28     byte    1               OpenBSD/
2004 >28     byte    2               NetBSD/
2005 >28     byte    3               FreeBSD/
2006 >28     byte    4               4.4BSD/
2007 >28     byte    5               Linux/
2008 >28     byte    6               SVR4/
2009 >28     byte    7               Esix/
2010 >28     byte    8               Solaris/
2011 >28     byte    9               Irix/
2012 >28     byte    10              SCO/
2013 >28     byte    11              Dell/
2014 >28     byte    12              NCR/
2015 >28     byte    13              LynxOS/
2016 >28     byte    14              VxWorks/
2017 >28     byte    15              pSOS/
2018 >28     byte    16              QNX/
2019 >28     byte    17              Firmware/
2020 >28     byte    18              RTEMS/
2021 >28     byte    19              ARTOS/
2022 >28     byte    20              Unity OS/
2023 >28     byte    21              INTEGRITY/
2024 >29     byte    0               \bInvalid CPU,
2025 >29     byte    1               \bAlpha,
2026 >29     byte    2               \bARM,
2027 >29     byte    3               \bIntel x86,
2028 >29     byte    4               \bIA64,
2029 >29     byte    5               \bMIPS,
2030 >29     byte    6               \bMIPS 64-bit,
2031 >29     byte    7               \bPowerPC,
2032 >29     byte    8               \bIBM S390,
2033 >29     byte    9               \bSuperH,
2034 >29     byte    10              \bSparc,
2035 >29     byte    11              \bSparc 64-bit,
2036 >29     byte    12              \bM68K,
2037 >29     byte    13              \bNios-32,
2038 >29     byte    14              \bMicroBlaze,
2039 >29     byte    15              \bNios-II,
2040 >29     byte    16              \bBlackfin,
2041 >29     byte    17              \bAVR32,
2042 >29     byte    18              \bSTMicroelectronics ST200,
2043 >30     byte    0               Invalid Image
2044 >30     byte    1               Standalone Program
2045 >30     byte    2               OS Kernel Image
2046 >30     byte    3               RAMDisk Image
2047 >30     byte    4               Multi-File Image
2048 >30     byte    5               Firmware Image
2049 >30     byte    6               Script File
2050 >30     byte    7               Filesystem Image (any type)
2051 >30     byte    8               Binary Flat Device Tree BLOB
2052 >31     byte    0               (Not compressed),
2053 >31     byte    1               (gzip),
2054 >31     byte    2               (bzip2),
2055 >31     byte    3               (lzma),
2056 >12     belong  x               %d bytes,
2057 >8      bedate  x               %s,
2058 >16     belong  x               Load Address: 0x%08X,
2059 >20     belong  x               Entry Point: 0x%08X,
2060 >4      belong  x               Header CRC: 0x%08X,
2061 >24     belong  x               Data CRC: 0x%08X
2062
2063 # JFFS2 file system
2064 0       leshort 0x1984          Linux old jffs2 filesystem data little endian
2065 0       leshort 0x1985          Linux jffs2 filesystem data little endian
2066
2067 # Squashfs
2068 0       string  sqsh    Squashfs filesystem, big endian,
2069 >28     beshort x       version %d.
2070 >30     beshort x       \b%d,
2071 >28     beshort <3
2072 >>8     belong  x       %d bytes,
2073 >28     beshort >2
2074 >>28 beshort <4
2075 >>>63   bequad x        %lld bytes,
2076 >>28 beshort >3
2077 >>>40   bequad x        %lld bytes,
2078 #>>67   belong  x       %d bytes,
2079 >4      belong  x       %d inodes,
2080 >28     beshort <2
2081 >>32    beshort x       blocksize: %d bytes,
2082 >28     beshort >1
2083 >>28 beshort <4
2084 >>>51   belong  x       blocksize: %d bytes,
2085 >>28 beshort >3
2086 >>>12   belong  x       blocksize: %d bytes,
2087 >28 beshort <4
2088 >>39    bedate  x       created: %s
2089 >28 beshort >3
2090 >>8     bedate  x       created: %s
2091 0       string  hsqs    Squashfs filesystem, little endian,
2092 >28     leshort x       version %d.
2093 >30     leshort x       \b%d,
2094 >28     leshort <3
2095 >>8     lelong  x       %d bytes,
2096 >28     leshort >2
2097 >>28 leshort <4
2098 >>>63   lequad x        %lld bytes,
2099 >>28 leshort >3
2100 >>>40   lequad x        %lld bytes,
2101 #>>63   lelong  x       %d bytes,
2102 >4      lelong  x       %d inodes,
2103 >28     leshort <2
2104 >>32    leshort x       blocksize: %d bytes,
2105 >28     leshort >1
2106 >>28 leshort <4
2107 >>>51   lelong  x       blocksize: %d bytes,
2108 >>28 leshort >3
2109 >>>12   lelong  x       blocksize: %d bytes,
2110 >28 leshort <4
2111 >>39    ledate  x       created: %s
2112 >28 leshort >3
2113 >>8     ledate  x       created: %s
2114
2115 # AFS Dump Magic
2116 # From: Ty Sarna <tsarna@sarna.org> 
2117 0       string                  \x01\xb3\xa1\x13\x22    AFS Dump
2118 >&0     belong                  x                       (v%d)
2119 >>&0    byte                    0x76
2120 >>>&0   belong                  x                       Vol %d,
2121 >>>>&0  byte                    0x6e
2122 >>>>>&0 string                  x                       %s
2123 >>>>>>&1        byte            0x74
2124 >>>>>>>&0       beshort         2
2125 >>>>>>>>&4      bedate          x                       on: %s
2126 >>>>>>>>&0      bedate          =0                      full dump
2127 >>>>>>>>&0      bedate          !0                      incremental since: %s
2128
2129 #----------------------------------------------------------
2130 #delta ISO    Daniel Novotny (dnovotny@redhat.com)
2131 0       string  DISO    Delta ISO data
2132 !:strength +50
2133 >4      belong  x       version %d
2134
2135 # VMS backup savesets - gerardo.cacciari@gmail.com
2136 #
2137 4            string  \x01\x00\x01\x00\x01\x00
2138 >(0.s+16)    string  \x01\x01
2139 >>&(&0.b+8)  byte    0x42       OpenVMS backup saveset data
2140 >>>40        lelong  x          (block size %d,
2141 >>>49        string  >\0        original name '%s',
2142 >>>2         short   1024       VAX generated)
2143 >>>2         short   2048       AXP generated)
2144 >>>2         short   4096       I64 generated)
2145
2146 # Summary: Oracle Clustered Filesystem
2147 # Created by: Aaron Botsis <redhat@digitalmafia.org>
2148 8       string          OracleCFS       Oracle Clustered Filesystem,
2149 >4      long            x               rev %d
2150 >0      long            x               \b.%d,
2151 >560    string          x               label: %.64s,
2152 >136    string          x               mountpoint: %.128s
2153
2154 # Summary: Oracle ASM tagged volume
2155 # Created by: Aaron Botsis <redhat@digitalmafia.org>
2156 32      string          ORCLDISK        Oracle ASM Volume,
2157 >40     string          x               Disk Name: %0.12s
2158 32      string          ORCLCLRD        Oracle ASM Volume (cleared),
2159 >40     string          x               Disk Name: %0.12s
2160
2161 # Oracle Clustered Filesystem - Aaron Botsis <redhat@digitalmafia.org>
2162 8       string          OracleCFS       Oracle Clustered Filesystem,
2163 >4      long            x               rev %d
2164 >0      long            x               \b.%d,
2165 >560    string          x               label: %.64s,
2166 >136    string          x               mountpoint: %.128s
2167
2168 # Oracle ASM tagged volume - Aaron Botsis <redhat@digitalmafia.org>
2169 32      string          ORCLDISK        Oracle ASM Volume,
2170 >40     string          x               Disk Name: %0.12s
2171 32      string          ORCLCLRD        Oracle ASM Volume (cleared),
2172 >40     string          x               Disk Name: %0.12s
2173
2174 # Compaq/HP RILOE floppy image
2175 # From: Dirk Jagdmann <doj@cubic.org>
2176 0       string  CPQRFBLO        Compaq/HP RILOE floppy image
2177
2178 #------------------------------------------------------------------------------
2179 # Files-11 On-Disk Structure (File system for various RSX-11 and VMS flavours).
2180 # These bits come from LBN 1 (home block) of ODS-1, ODS-2 and ODS-5 volumes,
2181 # which is mapped to VBN 2 of [000000]INDEXF.SYS;1 - gerardo.cacciari@gmail.com
2182 #
2183 1008    string          DECFILE11       Files-11 On-Disk Structure
2184 >525    byte            x               (ODS-%d);
2185 >1017   string          A               RSX-11, VAX/VMS or OpenVMS VAX file system;
2186 >1017   string          B
2187 >>525   byte            2               VAX/VMS or OpenVMS file system;
2188 >>525   byte            5               OpenVMS Alpha or Itanium file system;
2189 >984    string          x               volume label is '%-12.12s'
2190
2191 # From: Thomas Klausner <wiz@NetBSD.org>
2192 # http://filext.com/file-extension/DAA
2193 # describes the daa file format. The magic would be:
2194 0       string          DAA\x0\x0\x0\x0\x0      PowerISO Direct-Access-Archive
2195
2196 # From Albert Cahalan <acahalan@gmail.com>
2197 # really le32 operation,destination,payloadsize (but quite predictable)
2198 # 01 00 00 00 00 00 00 c0 00 02 00 00
2199 0       string          \1\0\0\0\0\0\0\300\0\2\0\0      Marvell Libertas firmware
2200
2201 # From Eric Sandeen
2202 # GFS2
2203 0x10000         belong          0x01161970
2204 >0x10018        belong          0x0000051d      GFS1 Filesystem
2205 >>0x10024        belong          x               (blocksize %d,
2206 >>0x10060        string          >\0             lockproto %s)
2207 >0x10018        belong          0x00000709      GFS2 Filesystem
2208 >>0x10024        belong          x               (blocksize %d,
2209 >>0x10060        string          >\0             lockproto %s)
2210
2211 # BTRFS
2212 0x10040         string          _BHRfS_M        BTRFS Filesystem
2213 >0x1012b        string          >\0             (label "%s",
2214 >0x10090        lelong          x               sectorsize %d,
2215 >0x10094        lelong          x               nodesize %d,
2216 >0x10098        lelong          x               leafsize %d)
2217
2218
2219 # dvdisaster's .ecc
2220 # From: "Nelson A. de Oliveira" <naoliv@gmail.com>
2221 0       string  *dvdisaster*    dvdisaster error correction file
2222
2223 # xfs metadump image 
2224 # mb_magic XFSM at 0; superblock magic XFSB at 1 << mb_blocklog
2225 # but can we do the << ?  For now it's always 512 (0x200) anyway.
2226 0       string XFSM
2227 >0x200  string XFSB     XFS filesystem metadump image
2228
2229 # Type: CROM filesystem
2230 # From: Werner Fink <werner@suse.de>
2231 0       string  CROMFS  CROMFS
2232 >6      string  >\0     \b version %2.2s,
2233 >8      ulequad >0      \b block data at %lld,
2234 >16     ulequad >0      \b fblock table at %lld,
2235 >24     ulequad >0      \b inode table at %lld,
2236 >32     ulequad >0      \b root at %lld,
2237 >40     ulelong >0      \b fblock size = %d,
2238 >44     ulelong >0      \b block size = %d,
2239 >48     ulequad >0      \b bytes = %lld
2240
2241 # Type: xfs metadump image
2242 # From: Daniel Novotny <dnovotny@redhat.com>
2243 # mb_magic XFSM at 0; superblock magic XFSB at 1 << mb_blocklog
2244 # but can we do the << ? For now it's always 512 (0x200) anyway.
2245 0       string  XFSM
2246 >0x200  string  XFSB    XFS filesystem metadump image
2247
2248 # Type: delta ISO
2249 # From: Daniel Novotny <dnovotny@redhat.com>
2250 0       string  DISO    Delta ISO data,
2251 >4      belong  x       version %d
2252
2253 # JFS2 (Journaling File System) image. (Old JFS1 has superblock at 0x1000.)
2254 # See linux/fs/jfs/jfs_superblock.h for layout; see jfs_filsys.h for flags.
2255 # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2256 0x8000  string  JFS1
2257 # Because it's text-only magic, check a binary value (version) to be sure.
2258 # Should always be 2, but mkfs.jfs writes it as 1. Needs to be 2 or 1 to be
2259 # mountable.
2260 >&0     lelong  <3      JFS2 filesystem image
2261 # Label is followed by a UUID; we have to limit string length to avoid
2262 # appending the UUID in the case of a 16-byte label.
2263 >>&144  regex   [\x20-\x7E]{1,16}       (label "%s")
2264 >>&0    lequad  x       \b, %lld blocks
2265 >>&8    lelong  x       \b, blocksize %d
2266 >>&32   lelong&0x00000006       >0      (dirty)
2267 >>&36   lelong  >0      (compressed)
2268
2269 # LFS
2270 0       lelong  0x070162        LFS filesystem image
2271 >4      lelong  1               version 1,
2272 >>8     lelong  x               \b blocks %u,
2273 >>12    lelong  x               \b blocks per segment %u,
2274 >4      lelong  2               version 2,
2275 >>8     lelong  x               \b fragments %u,
2276 >>12    lelong  x               \b bytes per segment %u,
2277 >16     lelong  x               \b disk blocks %u,
2278 >20     lelong  x               \b block size %u,
2279 >24     lelong  x               \b fragment size %u,
2280 >28     lelong  x               \b fragments per block %u,
2281 >32     lelong  x               \b start for free list %u,
2282 >36     lelong  x               \b number of free blocks %d,
2283 >40     lelong  x               \b number of files %u,
2284 >44     lelong  x               \b blocks available for writing %d,
2285 >48     lelong  x               \b inodes in cache %d,
2286 >52     lelong  x               \b inode file disk address 0x%x,
2287 >56     lelong  x               \b inode file inode number %u,
2288 >60     lelong  x               \b address of last segment written 0x%x,
2289 >64     lelong  x               \b address of next segment to write 0x%x,
2290 >68     lelong  x               \b address of current segment written 0x%x
2291
2292 0       string  td\000          floppy image data (TeleDisk, compressed)
2293 0       string  TD\000          floppy image data (TeleDisk)
2294
2295 0       string  CQ\024          floppy image data (CopyQM, 
2296 >16     leshort x               %d sectors, 
2297 >18     leshort x               %d heads.)
2298
2299 0       string  ACT\020Apricot\020disk\020image\032\004 floppy image data (ApriDisk)
2300
2301 0       beshort 0xAA58          floppy image data (IBM SaveDskF, old)
2302 0       beshort 0xAA59          floppy image data (IBM SaveDskF)
2303 0       beshort 0xAA5A          floppy image data (IBM SaveDskF, compressed)
2304
2305 0       string  \074CPM_Disk\076        disk image data (YAZE)
2306
2307 # ReFS
2308 # Richard W.M. Jones <rjones@redhat.com>
2309 0       string  \0\0\0ReFS\0    ReFS filesystem image
2310
2311 # EFW encase image file format:
2312 # Gregoire Passault
2313 # http://www.forensicswiki.org/wiki/Encase_image_file_format
2314 0       string  EVF\x09\x0d\x0a\xff\x00 EWF/Expert Witness/EnCase image file format
2315
2316 # UBIfs
2317 # Linux kernel sources: fs/ubifs/ubifs-media.h
2318 0       lelong  0x06101831
2319 >0x16   leshort 0               UBIfs image
2320 >0x08   lequad  x               \b, sequence number %llu
2321 >0x10   leshort x               \b, length %u
2322 >0x04   lelong  x               \b, CRC 0x%08x
2323
2324 0       lelong  0x23494255
2325 >0x04   leshort <2
2326 >0x05   string  \0\0\0
2327 >0x1c   string  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
2328 >0x04   leshort x               UBI image, version %u
2329
2330 # NEC PC-88 2D disk image
2331 # From Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
2332 0x20            ulelong&0xFFFFFEFF      0x2A0
2333 >0x10           string                  \0\0\0\0\0\0\0\0\0\0
2334 >>0x280         string                  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
2335 >>>0x1A         ubyte&0xEF              0
2336 >>>>0x1B        ubyte&0x8F              0
2337 >>>>>0x1B       ubyte&70                <0x40
2338 >>>>>>0x1C      ulelong                 >0x21
2339 >>>>>>>0        regex   [[:print:]]*    NEC PC-88 disk image, name=%s
2340 >>>>>>>>0x1B    ubyte   0               \b, media=2D
2341 >>>>>>>>0x1B    ubyte   0x10            \b, media=2DD
2342 >>>>>>>>0x1B    ubyte   0x20            \b, media=2HD
2343 >>>>>>>>0x1B    ubyte   0x30            \b, media=1D
2344 >>>>>>>>0x1B    ubyte   0x40            \b, media=1DD
2345 >>>>>>>>0x1A    ubyte   0x10            \b, write-protected