xref: /freebsd/contrib/file/magic/Magdir/filesystems (revision ae316d1d1cffd71ab7751f94e10118777a88e027)
1#------------------------------------------------------------------------------
2# $File: filesystems,v 1.165 2024/09/01 15:51:51 christos Exp $
3# filesystems:  file(1) magic for different filesystems
4#
50	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
1870	string	\366\366\366\366	PC formatted floppy with no filesystem
188# Sun disk labels
189# From /usr/include/sun/dklabel.h:
1900774	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)
2140		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 %#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
2310	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
2440	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
2490	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
25430		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# ExFAT
2653		string/w	=EXFAT
266>0x1FE		leshort		0xAA55
267>>0x6E		ubyte		1
268>>>0x6F		ubyte		0x80
269>>>0		ubyte		0xEB	DOS/MBR boot sector,
270>>>0x69		ubyte		x	ExFAT Filesystem version %d.
271>>>0x68		ubyte		x	\b%d
272>>>0x6d		ubyte		x	\b, (1<<%d) sectors per cluster
273>>>0x48		ulequad		x	\b, sectors %lld
274>>>0x64		ulelong		x	\b, serial number %#x
275
276# keep old DOS/MBR boot sector as dummy for mbr and bootloader displaying
277# only for sector sizes with 512 or more Bytes
2780x1FE          leshort         0xAA55         	DOS/MBR boot sector
279#
280# to display information (50) before DOS BPB (strength=70) and after DOS floppy (120) like in old file version
281!:strength +65
282>2		string		OSBS		OS/BS MBR
283# added by Joerg Jenderek at Feb 2013 according to https://thestarman.pcministry.com/asm/mbr/
284# and https://en.wikipedia.org/wiki/Master_Boot_Record
285# test for nearly all MS-DOS Master Boot Record initial program loader (IPL) is now done by
286# characteristic assembler instructions: xor ax,ax;mov ss,ax;mov sp,7c00
287>0	search/2	\x33\xc0\x8e\xd0\xbc\x00\x7c	MS-MBR
288# Microsoft Windows 95A and early ( https://thestarman.pcministry.com/asm/mbr/STDMBR.htm )
289# assembler instructions: mov si,sp;push ax;pop es;push ax;pop ds;sti;cld
290>>8	ubequad		0x8bf45007501ffbfc
291# https://thestarman.pcministry.com/asm/mbr/200MBR.htm
292>>>0x16	ubyte		0xF3				\b,DOS 2
293>>>>219	regex		Author\ -\ 			Author:
294# found "David Litton" , "A Pehrsson  "
295>>>>>&0	string		x				"%s"
296>>>0x16	ubyte		0xF2
297# NEC MS-DOS 3.30 Rev. 3 . See https://thestarman.pcministry.com/asm/mbr/DOS33MBR.htm
298# assembler instructions: mov di,077c;cmp word ptrl[di],a55a;jnz
299>>>>0x22	ubequad	0xbf7c07813d5aa575		\b,NEC 3.3
300# version MS-DOS 3.30 til MS-Windows 95A (WinVer=4.00.1111)
301>>>>0x22	default	x				\b,D0S version 3.3-7.0
302# error messages are printed by assembler instructions: mov si,06nn;...;int 10 (0xBEnn06;...)
303# where nn is string offset varying for different languages
304# "Invalid partition table"				nn=0x8b for english version
305>>>>>(0x49.b)	string		Invalid\ partition\ table		english
306>>>>>(0x49.b)	string		Ung\201ltige\ Partitionstabelle		german
307>>>>>(0x49.b)	string		Table\ de\ partition\ invalide		french
308>>>>>(0x49.b)	string		Tabela\ de\ parti\207ao\ inv\240lida	portuguese
309>>>>>(0x49.b)	string		Tabla\ de\ partici\242n\ no\ v\240lida	spanish
310>>>>>(0x49.b)	string		Tavola\ delle\ partizioni\ non\ valida	italian
311>>>>>0x49	ubyte		>0			at offset %#x
312>>>>>>(0x49.b)	string		>\0			"%s"
313# "Error loading operating system"			nn=0xa3 for english version
314# "Fehler beim Laden des Betriebssystems"		nn=0xa7 for german version
315# "Erreur en chargeant syst\212me d'exploitation"	nn=0xa7 for french version
316# "Erro na inicializa\207ao do sistema operacional"	nn=0xa7 for portuguese Brazilian version
317# "Error al cargar sistema operativo"			nn=0xa8 for spanish version
318# "Errore durante il caricamento del sistema operativo"	nn=0xae for italian version
319>>>>>0x74	ubyte		>0			at offset %#x
320>>>>>>(0x74.b)	string		>\0			"%s"
321# "Missing operating system"				nn=0xc2 for english version
322# "Betriebssystem fehlt"				nn=0xcd for german version
323# "Syst\212me d'exploitation absent"			nn=0xd2 for french version
324# "Sistema operacional nao encontrado"			nn=0xd4 for portuguese Brazilian version
325# "Falta sistema operativo"				nn=0xca for spanish version
326# "Sistema operativo mancante"				nn=0xe2 for italian version
327>>>>>0x79	ubyte		>0			at offset %#x
328>>>>>>(0x79.b)	string		>\0			"%s"
329# Microsoft Windows 95B to XP (https://thestarman.pcministry.com/asm/mbr/95BMEMBR.htm)
330# assembler instructions: push ax;pop es;push  ax;pop ds;cld;mov si,7c1b
331>>8	ubequad		0x5007501ffcbe1b7c
332# assembler instructions: rep;movsb;retf;mov si,07be;mov cl,04
333>>>24		ubequad	0xf3a4cbbebe07b104		9M
334# "Invalid partition table"				nn=0x10F for english version
335# "Ung\201ltige Partitionstabelle"				nn=0x10F for german version
336# "Table de partition erron\202e"				nn=0x10F for french version
337# "\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
338>>>>(0x3C.b+0x0FF)	string	Invalid\ partition\ table		english
339>>>>(0x3C.b+0x0FF)	string	Ung\201ltige\ Partitionstabelle		german
340>>>>(0x3C.b+0x0FF)	string	Table\ de\ partition\ erron\202e	french
341>>>>(0x3C.b+0x0FF)	string	\215\245\257\340\240\242\250\253\354\255\240\357\ \342\240\241\253\250\346\240	russian
342>>>>0x3C		ubyte	x			at offset %#x+0xFF
343>>>>(0x3C.b+0x0FF)	string	>\0			"%s"
344# "Error loading operating system"			nn=0x127 for english version
345# "Fehler beim Laden des Betriebssystems"		nn=0x12b for german version
346# "Erreur lors du chargement du syst\212me d'exploitation"	nn=0x12a for french version
347# "\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
348>>>>0xBD		ubyte	x			at offset 0x1%x
349>>>>(0xBD.b+0x100)	string	>\0			"%s"
350# "Missing operating system"				nn=0x146 for english version
351# "Betriebssystem fehlt"				nn=0x151 for german version
352# "Syst\212me d'exploitation manquant"			nn=0x15e for french version
353# "\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
354>>>>0xA9		ubyte	x			at offset 0x1%x
355>>>>(0xA9.b+0x100)	string	>\0			"%s"
356# https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm
357# assembler instructions: rep;movsb;retf;mov BP,07be;mov cl,04
358>>>24		ubequad	0xf3a4cbbdbe07b104		XP
359# where xxyyzz are lower bits from offsets of error messages varying for different languages
360>>>>0x1B4	ubelong&0x00FFFFFF	0x002c4463	english
361>>>>0x1B4	ubelong&0x00FFFFFF	0x002c486e	german
362# "Invalid partition table"				xx=0x12C for english version
363# "Ung\201ltige Partitionstabelle"				xx=0x12C for german version
364>>>>0x1b5	ubyte		>0			at offset 0x1%x
365>>>>(0x1b5.b+0x100)	string	>\0			"%s"
366# "Error loading operating system"			yy=0x144 for english version
367# "Fehler beim Laden des Betriebssystems"		yy=0x148 for german version
368>>>>0x1b6	ubyte		>0			at offset 0x1%x
369>>>>(0x1b6.b+0x100)	string	>\0			"%s"
370# "Missing operating system"				zz=0x163 for english version
371# "Betriebssystem nicht vorhanden"			zz=0x16e for german version
372>>>>0x1b7	ubyte		>0			at offset 0x1%x
373>>>>(0x1b7.b+0x100)	string	>\0			"%s"
374# Microsoft Windows Vista or 7
375# assembler instructions: ..;mov ds,ax;mov si,7c00;mov di,..00
376>>8	ubequad		0xc08ed8be007cbf00
377# Microsoft Windows Vista (https://thestarman.pcministry.com/asm/mbr/VistaMBR.htm)
378# assembler instructions: jnz 0729;cmp ebx,"TCPA"
379>>>0xEC		ubequad	0x753b6681fb544350		Vista
380# where xxyyzz are lower bits from offsets of error messages varying for different languages
381>>>>0x1B4	ubelong&0x00FFFFFF	0x00627a99	english
382#>>>>0x1B4	ubelong&0x00FFFFFF	?		german
383# "Invalid partition table"				xx=0x162 for english version
384# "Ung\201ltige Partitionstabelle"				xx=0x1?? for german version
385>>>>0x1b5	ubyte		>0			at offset 0x1%x
386>>>>(0x1b5.b+0x100)	string	>\0			"%s"
387# "Error loading operating system"			yy=0x17a for english version
388# "Fehler beim Laden des Betriebssystems"		yy= 0x1?? for german version
389>>>>0x1b6	ubyte		>0			at offset 0x1%x
390>>>>(0x1b6.b+0x100)	string	>\0			"%s"
391# "Missing operating system"				zz=0x199 for english version
392# "Betriebssystem nicht vorhanden"			zz=0x1?? for german version
393>>>>0x1b7	ubyte		>0			at offset 0x1%x
394>>>>(0x1b7.b+0x100)	string	>\0			"%s"
395# Microsoft Windows 7 (https://thestarman.pcministry.com/asm/mbr/W7MBR.htm)
396# assembler instructions: cmp ebx,"TCPA";cmp
397>>>0xEC		ubequad	0x6681fb5443504175		Windows 7
398# where xxyyzz are lower bits from offsets of error messages varying for different languages
399>>>>0x1B4	ubelong&0x00FFFFFF	0x00637b9a	english
400#>>>>0x1B4	ubelong&0x00FFFFFF	?		german
401# "Invalid partition table"				xx=0x163 for english version
402# "Ung\201ltige Partitionstabelle"				xx=0x1?? for german version
403>>>>0x1b5	ubyte		>0			at offset 0x1%x
404>>>>(0x1b5.b+0x100)	string	>\0			"%s"
405# "Error loading operating system"			yy=0x17b for english version
406# "Fehler beim Laden des Betriebssystems"		yy=0x1?? for german version
407>>>>0x1b6	ubyte		>0			at offset 0x1%x
408>>>>(0x1b6.b+0x100)	string	>\0			"%s"
409# "Missing operating system"				zz=0x19a for english version
410# "Betriebssystem nicht vorhanden"			zz=0x1?? for german version
411>>>>0x1b7	ubyte		>0			at offset 0x1%x
412>>>>(0x1b7.b+0x100)	string	>\0			"%s"
413# https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DiskSigs
414# https://en.wikipedia.org/wiki/MBR_disk_signature#ID
415>>0x1b8	ulelong		>0				\b, disk signature %#-.4x
416# driveID/timestamp for Win 95B,98,98SE and ME. See https://thestarman.pcministry.com/asm/mbr/mystery.htm
417>>0xDA	uleshort		0
418>>>0xDC 	ulelong		>0			\b, created
419# physical drive number (0x80-0xFF) when the Windows wrote that byte to the drive
420>>>>0xDC	ubyte		x			with driveID %#x
421# hours, minutes and seconds
422>>>>0xDf	ubyte		x			at %x
423>>>>0xDe	ubyte		x			\b:%x
424>>>>0xDd	ubyte		x			\b:%x
425# special case for Microsoft MS-DOS 3.21 spanish
426# assembler instructions: cli;mov $0x30,%ax;mov %ax,%ss;mov
427>0	ubequad		0xfab830008ed0bc00
428# assembler instructions: $0x1f00,%sp;mov $0x80cb,%di;add %cl,(%bx,%si);in (%dx),%ax;mov
429>>8	ubequad		0x1fbfcb800008ed8		MS-MBR,D0S version 3.21 spanish
430# Microsoft MBR IPL end
431
432# dr-dos with some upper-, lowercase variants
433>0x9D	string	Invalid\ partition\ table$
434>>181	string	No\ Operating\ System$
435>>>201	string	Operating\ System\ load\ error$	\b, DR-DOS MBR, Version 7.01 to 7.03
436>0x9D	string	Invalid\ partition\ table$
437>>181	string	No\ operating\ system$
438>>>201	string	Operating\ system\ load\ error$	\b, DR-DOS MBR, Version 7.01 to 7.03
439>342	string	Invalid\ partition\ table$
440>>366	string	No\ operating\ system$
441>>>386	string	Operating\ system\ load\ error$	\b, DR-DOS MBR, version 7.01 to 7.03
442>295	string	NEWLDR\0
443>>302	string	Bad\ PT\ $
444>>>310	string	No\ OS\ $
445>>>>317	string	OS\ load\ err$
446>>>>>329	string	Moved\ or\ missing\ IBMBIO.LDR\n\r
447>>>>>>358	string	Press\ any\ key\ to\ continue.\n\r$
448>>>>>>>387	string	Copyright\ (c)\ 1984,1998
449>>>>>>>>411	string	Caldera\ Inc.\0		\b, DR-DOS MBR (IBMBIO.LDR)
450#
451# tests for different MS-DOS Master Boot Records (MBR) moved and merged
452#
453#>0x145	string	Default:\ F				\b, FREE-DOS MBR
454#>0x14B	string	Default:\ F				\b, FREE-DOS 1.0 MBR
455>0x145	search/7	Default:\ F			\b, FREE-DOS MBR
456#>>313		string	F0\ .\ .\ .
457#>>>322		string	disk\ 1
458#>>>>382	string	FAT3
459>64	string	no\ active\ partition\ found
460>>96	string	read\ error\ while\ reading\ drive	\b, FREE-DOS Beta 0.9 MBR
461# Ranish Partition Manager http://www.ranish.com/part/
462>387	search/4	\0\ Error!\r
463>>378	search/7	Virus!
464>>>397	search/4	Booting\040
465>>>>408	search/4	HD1/\0	 			\b, Ranish MBR (
466>>>>>416	string	Writing\ changes...		\b2.37
467>>>>>>438	ubyte		x			\b,%#x dots
468>>>>>>440	ubyte		>0			\b,virus check
469>>>>>>441	ubyte		>0			\b,partition %c
470#2.38,2.42,2.44
471>>>>>416	string	!Writing\ changes...		\b
472>>>>>>418	ubyte	1				\bvirus check,
473>>>>>>419	ubyte	x				\b%#x seconds
474>>>>>>420	ubyte&0x0F	>0			\b,partition
475>>>>>>>420	ubyte&0x0F	<5			\b %x
476>>>>>>>420	ubyte&0x0F	0Xf			\b ask
477>>>>>420	ubyte		x			\b)
478#
479# SYSLINUX MBR moved
480# https://www.acronis.de/
481>362	string	MBR\ Error\ \0\r
482>>376	string	ress\ any\ key\ to\040
483>>>392	string	boot\ from\ floppy...\0			\b, Acronis MBR
484# added by Joerg Jenderek
485# https://www.visopsys.org/
486# https://partitionlogic.org.uk/
487>309	string	No\ bootable\ partition\ found\r
488>>339	string	I/O\ Error\ reading\ boot\ sector\r	\b, Visopsys MBR
489>349	string	No\ bootable\ partition\ found\r
490>>379	string	I/O\ Error\ reading\ boot\ sector\r	\b, simple Visopsys MBR
491# bootloader, bootmanager
492>0x40	string	SBML
493# label with 11 characters of FAT 12 bit filesystem
494>>43	string	SMART\ BTMGR
495>>>430	string	SBMK\ Bad!\r			\b, Smart Boot Manager
496# OEM-ID not always "SBM"
497#>>>>3	strings	SBM
498>>>>6	string	>\0                             \b, version %s
499>382	string	XOSLLOADXCF			\b, eXtended Operating System Loader
500>6	string	LILO				\b, LInux i386 boot LOader
501>>120	string	LILO				\b, version 22.3.4 SuSe
502>>172	string	LILO				\b, version 22.5.8 Debian
503# updated by Joerg Jenderek at Oct 2008
504# variables according to grub-0.97/stage1/stage1.S or
505# https://www.gnu.org/software/grub/manual/grub.html#Embedded-data
506# usual values are marked with comments to get only information of strange GRUB loaders
507>342		search/60	\0Geom\0
508#>0		ulelong		x		%x=0x009048EB ,	0x2a9048EB  0
509>>0x41		ubyte		<2
510>>>0x3E		ubyte		>2		\b; GRand Unified Bootloader
511# 0x3 for 0.5.95,0.93,0.94,0.96 0x4 for 1.90
512>>>>0x3E	ubyte		x		\b, stage1 version %#x
513#If it is 0xFF, use a drive passed by BIOS
514>>>>0x40	ubyte		<0xFF		\b, boot drive %#x
515# in most case 0,1,0x2e for GRUB 0.5.95
516>>>>0x41	ubyte		>0		\b, LBA flag %#x
517>>>>0x42	uleshort	<0x8000		\b, stage2 address %#x
518#>>>>0x42	uleshort	=0x8000		\b, stage2 address %#x (usual)
519>>>>0x42	uleshort	>0x8000		\b, stage2 address %#x
520#>>>>0x44	ulelong		=1		\b, 1st sector stage2 %#x (default)
521>>>>0x44	ulelong		>1		\b, 1st sector stage2 %#x
522>>>>0x48	uleshort	<0x800		\b, stage2 segment %#x
523#>>>>0x48	uleshort	=0x800		\b, stage2 segment %#x (usual)
524>>>>0x48	uleshort	>0x800		\b, stage2 segment %#x
525>>>>402		string	Geom\0Hard\ Disk\0Read\0\ Error\0
526>>>>>394	string	stage1			\b, GRUB version 0.5.95
527>>>>382		string	Geom\0Hard\ Disk\0Read\0\ Error\0
528>>>>>376	string	GRUB\ \0		\b, GRUB version 0.93 or 1.94
529>>>>383		string	Geom\0Hard\ Disk\0Read\0\ Error\0
530>>>>>377	string	GRUB\ \0		\b, GRUB version 0.94
531>>>>385		string	Geom\0Hard\ Disk\0Read\0\ Error\0
532>>>>>379	string	GRUB\ \0		\b, GRUB version 0.95 or 0.96
533>>>>391		string	Geom\0Hard\ Disk\0Read\0\ Error\0
534>>>>>385	string	GRUB\ \0		\b, GRUB version 0.97
535# unknown version
536>>>343		string	Geom\0Read\0\ Error\0
537>>>>321		string	Loading\ stage1.5	\b, GRUB version x.y
538>>>380		string	Geom\0Hard\ Disk\0Read\0\ Error\0
539>>>>374		string	GRUB\ \0		\b, GRUB version n.m
540# SYSLINUX bootloader moved
541>395	string	chksum\0\ ERROR!\0		\b, Gujin bootloader
542# http://www.bcdwb.de/bcdw/index_e.htm
543>3	string	BCDL
544>>498	string	BCDL\ \ \ \ BIN			\b, Bootable CD Loader (1.50Z)
545# mbr partition table entries updated by Joerg Jenderek at Sep 2013
546# skip Norton Utilities disc image data
547>3		string		!IHISK
548# skip Linux style boot sector starting with assembler instructions mov 0x7c0,ax;
549>>0		belong		!0xb8c0078e
550# not Linux kernel
551>>>514		string		!HdrS
552# not BeOS
553>>>>422		string		!Be\ Boot\ Loader
554# jump over BPB instruction implies DOS bootsector or AdvanceMAME mbr
555>>>>>0		ubelong&0xFD000000	=0xE9000000
556# AdvanceMAME mbr
557>>>>>>(1.b+2)	ubequad		0xfa31c08ed88ec08e
558>>>>>>>446	use		partition-table
559# mbr, Norton Utilities disc image data, or 2nd,etc. sector of x86 bootloader
560>>>>>0		ubelong&0xFD000000	!0xE9000000
561# skip FSInfosector
562>>>>>>0		string		!RRaA
563# skip 3rd sector of MS x86 bootloader with assembler instructions cli;MOVZX EAX,BYTE PTR [BP+10];MOV ECX,
564# https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm
565>>>>>>>0	ubequad		!0xfa660fb64610668b
566# skip 13rd sector of MS x86 bootloader
567>>>>>>>>0	ubequad		!0x660fb64610668b4e
568# skip sector starting with DOS new line
569>>>>>>>>>0	string		!\r\n
570# allowed active flag 0,80h-FFh
571>>>>>>>>>>446	ubyte		0
572>>>>>>>>>>>446	use		partition-table
573>>>>>>>>>>446	ubyte		>0x7F
574>>>>>>>>>>>446	use		partition-table
575# TODO: test for extended bootrecord (ebr) moved and merged with mbr partition table entries
576# mbr partition table entries end
577# https://www.acronis.de/
578#FAT label=ACRONIS\ SZ
579#OEM-ID=BOOTWIZ0
580>442	string	Non-system\ disk,\040
581>>459	string	press\ any\ key...\x7\0		\b, Acronis Startup Recovery Loader
582# updated by Joerg Jenderek at Nov 2012, Sep 2013
583# DOS names like F11.SYS or BOOTWIZ.SYS are 8 right space padded bytes+3 bytes
584# display 1 space
585>>>447	ubyte	x		\b
586>>>477	use	DOS-filename
587#
588>185	string	FDBOOT\ Version\040
589>>204	string	\rNo\ Systemdisk.\040
590>>>220	string	Booting\ from\ harddisk.\n\r
591>>>245	string	Cannot\ load\ from\ harddisk.\n\r
592>>>>273 string	Insert\ Systemdisk\040
593>>>>>291 string and\ press\ any\ key.\n\r		\b, FDBOOT harddisk Bootloader
594>>>>>>200 string	>\0                             \b, version %-3s
595>242	string	Bootsector\ from\ C.H.\ Hochst\204
596# http://freecode.com/projects/dosfstools	dosfstools-n.m/src/mkdosfs.c
597# updated by Joerg Jenderek at Nov 2012. Use search directive with offset instead of string
598# skip name "C.H. Hochstaetter" partly because it is sometimes written without umlaut
599>242	search/127	Bootsector\ from\ C.H.\ Hochst
600>>278	search/127	No\ Systemdisk.\ Booting\ from\ harddisk
601# followed by variants with point,CR-NL or NL-CR
602>>>208	search/261	Cannot\ load\ from\ harddisk.
603# followed by variants CR-NL or NL-CR
604>>>>236	search/235	Insert\ Systemdisk\ and\ press\ any\ key.
605# followed by variants with point,CR-NL or NL-CR
606>>>>>180	search/96	Disk\ formatted\ with\ WinImage\ 	\b, WinImage harddisk Bootloader
607# followed by string like "6.50 (c) 1993-2004 Gilles Vollant"
608>>>>>>&0	string		x 					\b, version %-4.4s
609>(1.b+2)	ubyte		0xe
610>>(1.b+3)	ubyte		0x1f
611>>>(1.b+4)	ubyte		0xbe
612# message offset found at (1.b+5) is 0x77 for FAT32 or 0x5b for others
613>>>>(1.b+5)	ubyte&0xd3	0x53
614>>>>>(1.b+6)	ubyte		0x7c
615# assembler instructions: lodsb;and al,al;jz 0xb;push si;mov ah,
616>>>>>>(1.b+7)	ubyte		0xac
617>>>>>>>(1.b+8)	ubyte		0x22
618>>>>>>>>(1.b+9)	ubyte		0xc0
619>>>>>>>>>(1.b+10)	ubyte	0x74
620>>>>>>>>>>(1.b+11)	ubyte	0x0b
621>>>>>>>>>>>(1.b+12)	ubyte	0x56
622>>>>>>>>>>>>(1.b+13)	ubyte	0xb4			\b, mkdosfs boot message display
623# FAT1X version
624>>>>>>>>>>>>>(1.b+5)	ubyte	0x5b
625>>>>>>>>>>>>>>0x5b	string	>\0			"%-s"
626# FAT32 version
627>>>>>>>>>>>>>(1.b+5)	ubyte	0x77
628>>>>>>>>>>>>>>0x77	string	>\0			"%-s"
629>214	string	Please\ try\ to\ install\ FreeDOS\ 	\b, DOS Emulator boot message display
630#>>244	string	from\ dosemu-freedos-*-bin.tgz\r
631#>>>170	string	Sorry,\ could\ not\ load\ an\040
632#>>>>195	string	operating\ system.\r\n
633#
634>103	string	This\ is\ not\ a\ bootable\ disk.\040
635>>132	string	Please\ insert\ a\ bootable\040
636>>>157	string	floppy\ and\r\n
637>>>>169	string	press\ any\ key\ to\ try\ again...\r	\b, FREE-DOS message display
638#
639>66	string	Solaris\ Boot\ Sector
640>>99	string	Incomplete\ MDBoot\ load.
641>>>89	string	Version 				\b, Sun Solaris Bootloader
642>>>>97	byte	x					version %c
643#
644>408	string	OS/2\ !!\ SYS01475\r\0
645>>429	string	OS/2\ !!\ SYS02025\r\0
646>>>450	string	OS/2\ !!\ SYS02027\r\0
647>>>469	string	OS2BOOT\ \ \ \ 				\b, IBM OS/2 Warp bootloader
648#
649>409	string	OS/2\ !!\ SYS01475\r\0
650>>430	string	OS/2\ !!\ SYS02025\r\0
651>>>451	string	OS/2\ !!\ SYS02027\r\0
652>>>470	string	OS2BOOT\ \ \ \ 				\b, IBM OS/2 Warp Bootloader
653>112		string	This\ disk\ is\ not\ bootable\r
654>>142		string	If\ you\ wish\ to\ make\ it\ bootable
655>>>176		string	run\ the\ DOS\ program\ SYS\040
656>>>200		string	after\ the\r
657>>>>216		string	system\ has\ been\ loaded\r\n
658>>>>>242	string	Please\ insert\ a\ DOS\ diskette\040
659>>>>>271	string	into\r\n\ the\ drive\ and\040
660>>>>>>292	string	strike\ any\ key...\0		\b, IBM OS/2 Warp message display
661# XP
662>430	string	NTLDR\ is\ missing\xFF\r\n
663>>449	string	Disk\ error\xFF\r\n
664>>>462	string	Press\ any\ key\ to\ restart\r		\b, Microsoft Windows XP Bootloader
665# DOS names like NTLDR,CMLDR,$LDR$ are 8 right space padded bytes+3 bytes
666>>>>417		ubyte&0xDF	>0
667>>>>>417	string		x			%-.5s
668>>>>>>422	ubyte&0xDF	>0
669>>>>>>>422	string		x 			\b%-.3s
670>>>>>425	ubyte&0xDF	>0
671>>>>>>425	string		>\ 			\b.%-.3s
672#
673>>>>371		ubyte		>0x20
674>>>>>368	ubyte&0xDF	>0
675>>>>>>368	string		x 			%-.5s
676>>>>>>>373	ubyte&0xDF	>0
677>>>>>>>>373	string		x 			\b%-.3s
678>>>>>>376	ubyte&0xDF	>0
679>>>>>>>376	string		x 			\b.%-.3s
680#
681>430	string	NTLDR\ nicht\ gefunden\xFF\r\n
682>>453	string	Datentr\204gerfehler\xFF\r\n
683>>>473	string	Neustart\ mit\ beliebiger\ Taste\r	\b, Microsoft Windows XP Bootloader (german)
684>>>>417		ubyte&0xDF	>0
685>>>>>417	string		x			%-.5s
686>>>>>>422	ubyte&0xDF	>0
687>>>>>>>422	string		x 			\b%-.3s
688>>>>>425	ubyte&0xDF	>0
689>>>>>>425	string		>\ 			\b.%-.3s
690# offset variant
691>>>>379	string	\0
692>>>>>368	ubyte&0xDF	>0
693>>>>>>368	string		x 			%-.5s
694>>>>>>>373	ubyte&0xDF	>0
695>>>>>>>>373	string		x 			\b%-.3s
696#
697>430	string	NTLDR\ fehlt\xFF\r\n
698>>444	string	Datentr\204gerfehler\xFF\r\n
699>>>464	string	Neustart\ mit\ beliebiger\ Taste\r	\b, Microsoft Windows XP Bootloader (2.german)
700>>>>417		ubyte&0xDF	>0
701>>>>>417	string		x			%-.5s
702>>>>>>422	ubyte&0xDF	>0
703>>>>>>>422	string		x 			\b%-.3s
704>>>>>425	ubyte&0xDF	>0
705>>>>>>425	string		>\ 			\b.%-.3s
706# variant
707>>>>371		ubyte		>0x20
708>>>>>368	ubyte&0xDF	>0
709>>>>>>368	string		x 			%-.5s
710>>>>>>>373	ubyte&0xDF	>0
711>>>>>>>>373	string		x 			\b%-.3s
712>>>>>>376	ubyte&0xDF	>0
713>>>>>>>376	string		x 			\b.%-.3s
714#
715>430	string	NTLDR\ fehlt\xFF\r\n
716>>444	string	Medienfehler\xFF\r\n
717>>>459	string	Neustart:\ Taste\ dr\201cken\r		\b, Microsoft Windows XP Bootloader (3.german)
718>>>>371		ubyte		>0x20
719>>>>>368	ubyte&0xDF	>0
720>>>>>>368	string		x 			%-.5s
721>>>>>>>373	ubyte&0xDF	>0
722>>>>>>>>373	string		x 			\b%-.3s
723>>>>>>376	ubyte&0xDF	>0
724>>>>>>>376	string		x 			\b.%-.3s
725# variant
726>>>>417		ubyte&0xDF	>0
727>>>>>417	string		x			%-.5s
728>>>>>>422	ubyte&0xDF	>0
729>>>>>>>422	string		x 			\b%-.3s
730>>>>>425	ubyte&0xDF	>0
731>>>>>>425	string		>\ 			\b.%-.3s
732#
733>430	string	Datentr\204ger\ entfernen\xFF\r\n
734>>454	string	Medienfehler\xFF\r\n
735>>>469	string	Neustart:\ Taste\ dr\201cken\r		\b, Microsoft Windows XP Bootloader (4.german)
736>>>>379		string		\0
737>>>>>368	ubyte&0xDF	>0
738>>>>>>368	string		x 			%-.5s
739>>>>>>>373	ubyte&0xDF	>0
740>>>>>>>>373	string		x 			\b%-.3s
741>>>>>>376	ubyte&0xDF	>0
742>>>>>>>376	string		x 			\b.%-.3s
743# variant
744>>>>417		ubyte&0xDF	>0
745>>>>>417	string		x			%-.5s
746>>>>>>422	ubyte&0xDF	>0
747>>>>>>>422	string		x 			\b%-.3s
748>>>>>425	ubyte&0xDF	>0
749>>>>>>425	string		>\ 			\b.%-.3s
750#
751
752#>3	string	NTFS\ \ \ \040
753>389	string	Fehler\ beim\ Lesen\040
754>>407	string	des\ Datentr\204gers
755>>>426	string	NTLDR\ fehlt
756>>>>440	string	NTLDR\ ist\ komprimiert
757>>>>>464 string	Neustart\ mit\ Strg+Alt+Entf\r		\b, Microsoft Windows XP Bootloader NTFS (german)
758#>3	string	NTFS\ \ \ \040
759>313	string	A\ disk\ read\ error\ occurred.\r
760>>345	string	A\ kernel\ file\ is\ missing\040
761>>>370	string	from\ the\ disk.\r
762>>>>484	string	NTLDR\ is\ compressed
763>>>>>429 string	Insert\ a\ system\ diskette\040
764>>>>>>454 string and\ restart\r\nthe\ system.\r		\b, Microsoft Windows XP Bootloader NTFS
765# DOS loader variants different languages,offsets
766>472	ubyte&0xDF	>0
767>>389	string	Invalid\ system\ disk\xFF\r\n
768>>>411	string	Disk\ I/O\ error
769>>>>428	string	Replace\ the\ disk,\ and\040
770>>>>>455 string	press\ any\ key				\b, Microsoft Windows 98 Bootloader
771#IO.SYS
772>>>>>>472	ubyte&0xDF	>0
773>>>>>>>472	string		x 			\b %-.2s
774>>>>>>>>474	ubyte&0xDF	>0
775>>>>>>>>>474	string		x 			\b%-.5s
776>>>>>>>>>>479	ubyte&0xDF	>0
777>>>>>>>>>>>479 string		x 			\b%-.1s
778>>>>>>>480	ubyte&0xDF	>0
779>>>>>>>>480	string		x 			\b.%-.3s
780#MSDOS.SYS
781>>>>>>>483	ubyte&0xDF	>0			\b+
782>>>>>>>>483	string		x 			\b%-.5s
783>>>>>>>>>488	ubyte&0xDF	>0
784>>>>>>>>>>488	string		x 			\b%-.3s
785>>>>>>>>491	ubyte&0xDF	>0
786>>>>>>>>>491	string		x 			\b.%-.3s
787#
788>>390	string	Invalid\ system\ disk\xFF\r\n
789>>>412	string	Disk\ I/O\ error\xFF\r\n
790>>>>429	string	Replace\ the\ disk,\ and\040
791>>>>>451 string	then\ press\ any\ key\r			\b, Microsoft Windows 98 Bootloader
792>>388	string	Ungueltiges\ System\ \xFF\r\n
793>>>410	string	E/A-Fehler\ \ \ \ \xFF\r\n
794>>>>427	string	Datentraeger\ wechseln\ und\040
795>>>>>453 string	Taste\ druecken\r			\b, Microsoft Windows 95/98/ME Bootloader (german)
796#WINBOOT.SYS only not spaces (0xDF)
797>>>>>>497	ubyte&0xDF	>0
798>>>>>>>497	string		x 			%-.5s
799>>>>>>>>502	ubyte&0xDF	>0
800>>>>>>>>>502	string		x 			\b%-.1s
801>>>>>>>>>>503	ubyte&0xDF	>0
802>>>>>>>>>>>503	string		x 			\b%-.1s
803>>>>>>>>>>>>504	ubyte&0xDF	>0
804>>>>>>>>>>>>>504 string		x 			\b%-.1s
805>>>>>>505	ubyte&0xDF	>0
806>>>>>>>505	string		x 			\b.%-.3s
807#IO.SYS
808>>>>>>472	ubyte&0xDF	>0			or
809>>>>>>>472	string		x 			\b %-.2s
810>>>>>>>>474	ubyte&0xDF	>0
811>>>>>>>>>474	string		x 			\b%-.5s
812>>>>>>>>>>479	ubyte&0xDF	>0
813>>>>>>>>>>>479 string		x 			\b%-.1s
814>>>>>>>480	ubyte&0xDF	>0
815>>>>>>>>480	string		x 			\b.%-.3s
816#MSDOS.SYS
817>>>>>>>483	ubyte&0xDF	>0			\b+
818>>>>>>>>483	string		x 			\b%-.5s
819>>>>>>>>>488	ubyte&0xDF	>0
820>>>>>>>>>>488	string		x 			\b%-.3s
821>>>>>>>>491	ubyte&0xDF	>0
822>>>>>>>>>491	string		x 			\b.%-.3s
823#
824>>390	string	Ungueltiges\ System\ \xFF\r\n
825>>>412	string	E/A-Fehler\ \ \ \ \xFF\r\n
826>>>>429	string	Datentraeger\ wechseln\ und\040
827>>>>>455 string	Taste\ druecken\r			\b, Microsoft Windows 95/98/ME Bootloader (German)
828#WINBOOT.SYS only not spaces (0xDF)
829>>>>>>497	ubyte&0xDF	>0
830>>>>>>>497	string		x 			%-.7s
831>>>>>>>>504	ubyte&0xDF	>0
832>>>>>>>>>504	string		x 			\b%-.1s
833>>>>>>505	ubyte&0xDF	>0
834>>>>>>>505	string		x 			\b.%-.3s
835#IO.SYS
836>>>>>>472	ubyte&0xDF	>0			or
837>>>>>>>472	string		x 			\b %-.2s
838>>>>>>>>474	ubyte&0xDF	>0
839>>>>>>>>>474	string		x 			\b%-.6s
840>>>>>>>480	ubyte&0xDF	>0
841>>>>>>>>480	string		x 			\b.%-.3s
842#MSDOS.SYS
843>>>>>>>483	ubyte&0xDF	>0			\b+
844>>>>>>>>483	string		x 			\b%-.5s
845>>>>>>>>>488	ubyte&0xDF	>0
846>>>>>>>>>>488	string		x 			\b%-.3s
847>>>>>>>>491	ubyte&0xDF	>0
848>>>>>>>>>491	string		x 			\b.%-.3s
849#
850>>389	string	Ungueltiges\ System\ \xFF\r\n
851>>>411	string	E/A-Fehler\ \ \ \ \xFF\r\n
852>>>>428	string	Datentraeger\ wechseln\ und\040
853>>>>>454 string	Taste\ druecken\r			\b, Microsoft Windows 95/98/ME Bootloader (GERMAN)
854# DOS names like IO.SYS,WINBOOT.SYS,MSDOS.SYS,WINBOOT.INI are 8 right space padded bytes+3 bytes
855>>>>>>472	string		x 			%-.2s
856>>>>>>>474	ubyte&0xDF	>0
857>>>>>>>>474	string		x 			\b%-.5s
858>>>>>>>>479	ubyte&0xDF	>0
859>>>>>>>>>479	string		x 			\b%-.1s
860>>>>>>480	ubyte&0xDF	>0
861>>>>>>>480	string		x 			\b.%-.3s
862>>>>>>483	ubyte&0xDF	>0			\b+
863>>>>>>>483	string		x 			\b%-.5s
864>>>>>>>488	ubyte&0xDF	>0
865>>>>>>>>488	string		x 			\b%-.2s
866>>>>>>>>490	ubyte&0xDF	>0
867>>>>>>>>>490	string		x 			\b%-.1s
868>>>>>>>491	ubyte&0xDF	>0
869>>>>>>>>491	string		x 			\b.%-.3s
870>479	ubyte&0xDF	>0
871>>416	string	Kein\ System\ oder\040
872>>>433	string	Laufwerksfehler
873>>>>450	string	Wechseln\ und\ Taste\ dr\201cken	\b, Microsoft DOS Bootloader (german)
874#IO.SYS
875>>>>>479	string		x 			\b %-.2s
876>>>>>>481	ubyte&0xDF	>0
877>>>>>>>481	string		x 			\b%-.6s
878>>>>>487	ubyte&0xDF	>0
879>>>>>>487	string		x 			\b.%-.3s
880#MSDOS.SYS
881>>>>>>490	ubyte&0xDF	>0			\b+
882>>>>>>>490	string		x 			\b%-.5s
883>>>>>>>>495	ubyte&0xDF	>0
884>>>>>>>>>495	string		x 			\b%-.3s
885>>>>>>>498	ubyte&0xDF	>0
886>>>>>>>>498	string		x 			\b.%-.3s
887#
888>376	search/41	Non-System\ disk\ or\040
889>>395	search/41	disk\ error\r
890>>>407	search/41	Replace\ and\040
891>>>>419	search/41	press\ 				\b,
892>>>>419	search/41	strike\ 			\b, old
893>>>>426	search/41	any\ key\ when\ ready\r		MS or PC-DOS bootloader
894#449			Disk\ Boot\ failure\r		MS 3.21
895#466			Boot\ Failure\r			MS 3.30
896>>>>>468 search/18	\0
897#IO.SYS,IBMBIO.COM
898>>>>>>&0	string		x 			\b %-.2s
899>>>>>>>&-20	ubyte&0xDF	>0
900>>>>>>>>&-1	string		x 			\b%-.4s
901>>>>>>>>>&-16	ubyte&0xDF	>0
902>>>>>>>>>>&-1	string		x 			\b%-.2s
903>>>>>>&8	ubyte&0xDF	>0			\b.
904>>>>>>>&-1	string		x 			\b%-.3s
905#MSDOS.SYS,IBMDOS.COM
906>>>>>>&11	ubyte&0xDF	>0			\b+
907>>>>>>>&-1	string		x 			\b%-.5s
908>>>>>>>>&-6	ubyte&0xDF	>0
909>>>>>>>>>&-1	string		x 			\b%-.1s
910>>>>>>>>>>&-5	ubyte&0xDF	>0
911>>>>>>>>>>>&-1	string		x 			\b%-.2s
912>>>>>>>&7	ubyte&0xDF	>0			\b.
913>>>>>>>>&-1	string		x 			\b%-.3s
914>441	string	Cannot\ load\ from\ harddisk.\n\r
915>>469	string	Insert\ Systemdisk\040
916>>>487	string	and\ press\ any\ key.\n\r		\b, MS (2.11) DOS bootloader
917#>43	string	\224R-LOADER\ \ SYS			=label
918>54	string	SYS
919>>324	string	VASKK
920>>>495	string	NEWLDR\0				\b, DR-DOS Bootloader (LOADER.SYS)
921#
922>98	string	Press\ a\ key\ to\ retry\0\r
923>>120	string	Cannot\ find\ file\ \0\r
924>>>139	string	Disk\ read\ error\0\r
925>>>>156	string	Loading\ ...\0				\b, DR-DOS (3.41) Bootloader
926#DRBIOS.SYS
927>>>>>44		ubyte&0xDF	>0
928>>>>>>44	string		x			\b %-.6s
929>>>>>>>50	ubyte&0xDF	>0
930>>>>>>>>50	string		x 			\b%-.2s
931>>>>>>52	ubyte&0xDF	>0
932>>>>>>>52	string		x 			\b.%-.3s
933#
934>70	string	IBMBIO\ \ COM
935>>472	string	Cannot\ load\ DOS!\040
936>>>489	string	Any\ key\ to\ retry			\b, DR-DOS Bootloader
937>>471	string	Cannot\ load\ DOS\040
938>>487	string	press\ key\ to\ retry			\b, Open-DOS Bootloader
939#??
940>444	string	KERNEL\ \ SYS
941>>314	string	BOOT\ error!				\b, FREE-DOS Bootloader
942>499	string	KERNEL\ \ SYS
943>>305	string	BOOT\ err!\0				\b, Free-DOS Bootloader
944>449	string	KERNEL\ \ SYS
945>>319	string	BOOT\ error!				\b, FREE-DOS 0.5 Bootloader
946#
947>449	string	Loading\ FreeDOS
948>>0x1AF		ulelong		>0			\b, FREE-DOS 0.95,1.0 Bootloader
949>>>497		ubyte&0xDF	>0
950>>>>497		string		x 			\b %-.6s
951>>>>>503	ubyte&0xDF	>0
952>>>>>>503	string		x 			\b%-.1s
953>>>>>>>504	ubyte&0xDF	>0
954>>>>>>>>504	string		x 			\b%-.1s
955>>>>505		ubyte&0xDF	>0
956>>>>>505	string		x 			\b.%-.3s
957#
958>331	string	Error!.0				\b, FREE-DOS 1.0 bootloader
959#
960>125	string	Loading\ FreeDOS...\r
961>>311	string	BOOT\ error!\r				\b, FREE-DOS bootloader
962>>>441		ubyte&0xDF	>0
963>>>>441		string		x 			\b %-.6s
964>>>>>447	ubyte&0xDF	>0
965>>>>>>447	string		x 			\b%-.1s
966>>>>>>>448	ubyte&0xDF	>0
967>>>>>>>>448	string		x 			\b%-.1s
968>>>>449		ubyte&0xDF	>0
969>>>>>449	string		x 			\b.%-.3s
970>124	string	FreeDOS\0
971>>331	string	\ err\0					\b, FREE-DOS BETa 0.9 Bootloader
972# DOS names like KERNEL.SYS,KERNEL16.SYS,KERNEL32.SYS,METAKERN.SYS are 8 right space padded bytes+3 bytes
973>>>497		ubyte&0xDF	>0
974>>>>497		string		x 			\b %-.6s
975>>>>>503	ubyte&0xDF	>0
976>>>>>>503	string		x 			\b%-.1s
977>>>>>>>504	ubyte&0xDF	>0
978>>>>>>>>504	string		x 			\b%-.1s
979>>>>505		ubyte&0xDF	>0
980>>>>>505	string		x 			\b.%-.3s
981>>333	string	\ err\0					\b, FREE-DOS BEta 0.9 Bootloader
982>>>497		ubyte&0xDF	>0
983>>>>497		string		x 			\b %-.6s
984>>>>>503	ubyte&0xDF	>0
985>>>>>>503	string		x 			\b%-.1s
986>>>>>>>504	ubyte&0xDF	>0
987>>>>>>>>504	string		x 			\b%-.1s
988>>>>505		ubyte&0xDF	>0
989>>>>>505	string		x 			\b.%-.3s
990>>334	string	\ err\0					\b, FREE-DOS Beta 0.9 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>336	string	Error!\040
1000>>343	string	Hit\ a\ key\ to\ reboot.		\b, FREE-DOS Beta 0.9sr1 Bootloader
1001>>>497		ubyte&0xDF	>0
1002>>>>497		string		x 			\b %-.6s
1003>>>>>503	ubyte&0xDF	>0
1004>>>>>>503	string		x 			\b%-.1s
1005>>>>>>>504	ubyte&0xDF	>0
1006>>>>>>>>504	string		x 			\b%-.1s
1007>>>>505		ubyte&0xDF	>0
1008>>>>>505	string		x 			\b.%-.3s
1009# added by Joerg Jenderek
1010# https://www.visopsys.org/
1011# https://partitionlogic.org.uk/
1012# OEM-ID=Visopsys
1013>478		ulelong	0
1014>>(1.b+326)	string	I/O\ Error\ reading\040
1015>>>(1.b+344)	string	Visopsys\ loader\r
1016>>>>(1.b+361)	string	Press\ any\ key\ to\ continue.\r	\b, Visopsys loader
1017# http://alexfru.chat.ru/epm.html#bootprog
1018>494	ubyte	>0x4D
1019>>495	string	>E
1020>>>495	string	<S
1021#OEM-ID is not reliable
1022>>>>3	string	BootProg
1023# It just looks for a program file name at the root directory
1024# and loads corresponding file with following execution.
1025# DOS names like STARTUP.BIN,STARTUPC.COM,STARTUPE.EXE are 8 right space padded bytes+3 bytes
1026>>>>499			ubyte&0xDF	>0		\b, COM/EXE Bootloader
1027>>>>>499		use		DOS-filename
1028#If the boot sector fails to read any other sector,
1029#it prints a very short message ("RE") to the screen and hangs the computer.
1030#If the boot sector fails to find needed program in the root directory,
1031#it also hangs with another message ("NF").
1032>>>>>492		string		RENF		\b, FAT (12 bit)
1033>>>>>495		string		RENF		\b, FAT (16 bit)
1034#If the boot sector fails to read any other sector,
1035#it prints a very short message ("RE") to the screen and hangs the computer.
1036# x86 bootloader end
1037
1038# added by Joerg Jenderek at Feb 2013 according to https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
1039# and https://en.wikipedia.org/wiki/File_Allocation_Table#FS_Information_Sector
1040>0		string		RRaA
1041>>0x1E4		string		rrAa		\b, FSInfosector
1042#>>0x1FC	uleshort	=0		SHOULD BE ZERO
1043>>>0x1E8	ulelong		<0xffffffff	\b, %u free clusters
1044>>>0x1EC	ulelong		<0xffffffff	\b, last allocated cluster %u
1045
1046# updated by Joerg Jenderek at Sep 2007
1047>3	ubyte	0
1048#no active flag
1049>>446	ubyte	0
1050# partition 1 not empty
1051>>>450	ubyte	>0
1052# partitions 3,4 empty
1053>>>>482		ubyte	0
1054>>>>>498	ubyte	0
1055# partition 2 ID=0,5,15
1056>>>>>>466	ubyte	<0x10
1057>>>>>>>466	ubyte	0x05			\b, extended partition table
1058>>>>>>>466	ubyte	0x0F			\b, extended partition table (LBA)
1059>>>>>>>466	ubyte	0x0			\b, extended partition table (last)
1060
1061# DOS x86 sector separated and moved from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
1062
1063>0x200	lelong	0x82564557		\b, BSD disklabel
1064
1065# by Joerg Jenderek at Apr 2013
1066#	Print the DOS filenames from directory entry form with 8 right space padded bytes + 3 bytes for extension
1067#	like IO.SYS. MSDOS.SYS , KERNEL.SYS , DRBIO.SYS
10680	name			DOS-filename
1069# space=0x20 (00100000b) means empty
1070>0			ubyte&0xDF	>0
1071>>0			ubyte		x 		\b%c
1072>>>1			ubyte&0xDF	>0
1073>>>>1			ubyte		x 		\b%c
1074>>>>>2			ubyte&0xDF	>0
1075>>>>>>2			ubyte		x 		\b%c
1076>>>>>>>3		ubyte&0xDF	>0
1077>>>>>>>>3		ubyte		x 		\b%c
1078>>>>>>>>>4		ubyte&0xDF	>0
1079>>>>>>>>>>4		ubyte		x 		\b%c
1080>>>>>>>>>>>5		ubyte&0xDF	>0
1081>>>>>>>>>>>>5		ubyte		x 		\b%c
1082>>>>>>>>>>>>>6		ubyte&0xDF	>0
1083>>>>>>>>>>>>>>6		ubyte		x 		\b%c
1084>>>>>>>>>>>>>>>7	ubyte&0xDF	>0
1085>>>>>>>>>>>>>>>>7	ubyte		x 		\b%c
1086# DOS filename extension
1087>>8			ubyte&0xDF	>0		\b.
1088>>>8			ubyte		x 		\b%c
1089>>>>9			ubyte&0xDF	>0
1090>>>>>9			ubyte		x 		\b%c
1091>>>>>>10		ubyte&0xDF	>0
1092>>>>>>>10		ubyte		x 		\b%c
1093#	Print 2 following DOS filenames from directory entry form
1094#	like IO.SYS+MSDOS.SYS or ibmbio.com+ibmdos.com
10950	name			2xDOS-filename
1096# display 1 space
1097>0			ubyte		x		\b
1098>0			use		DOS-filename
1099>11			ubyte		x		\b+
1100>11			use		DOS-filename
1101
1102# https://en.wikipedia.org/wiki/Master_boot_record#PTE
1103# display standard partition table
11040	name				partition-table
1105#>0		ubyte		x	PARTITION-TABLE
1106# test and display 1st til 4th partition table entry
1107>0		use			partition-entry-test
1108>16		use			partition-entry-test
1109>32		use			partition-entry-test
1110>48		use			partition-entry-test
1111#		test for entry of partition table
11120	name				partition-entry-test
1113# partition type ID > 0
1114>4		ubyte		>0
1115# active flag 0
1116>>0		ubyte		0
1117>>>0		use		partition-entry
1118# active flag 0x80, 0x81, ...
1119>>0		ubyte		>0x7F
1120>>>0		use		partition-entry
1121#		Print entry of partition table
11220	name				partition-entry
1123# partition type ID > 0
1124>4		ubyte		>0	\b; partition
1125>>64		leshort		0xAA55	1
1126>>48		leshort		0xAA55	2
1127>>32		leshort		0xAA55	3
1128>>16		leshort		0xAA55	4
1129>>4		ubyte		x	: ID=%#x
1130>>0		ubyte&0x80	0x80	\b, active
1131>>0		ubyte		>0x80	%#x
1132>>1		ubyte		x	\b, start-CHS (
1133>>1		use		partition-chs
1134>>5		ubyte		x	\b), end-CHS (
1135>>5		use		partition-chs
1136>>8		ulelong		x	\b), startsector %u
1137>>12		ulelong		x	\b, %u sectors
1138#		Print cylinder,head,sector (CHS) of partition entry
11390	name				partition-chs
1140# cylinder
1141>1		ubyte		x	\b0x
1142>1		ubyte&0xC0	0x40	\b1
1143>1		ubyte&0xC0	0x80	\b2
1144>1		ubyte&0xC0	0xC0	\b3
1145>2		ubyte		x	\b%x
1146# head
1147>0		ubyte		x	\b,%u
1148# sector
1149>1		ubyte&0x3F	x	\b,%u
1150
1151# FATX
11520		string		FATX		FATX filesystem data
1153
1154# romfs filesystems - Juan Cespedes <cespedes@debian.org>
11550	string		-rom1fs-	romfs filesystem, version 1
1156>8	belong	x			%d bytes,
1157>16	string	x			named %s.
1158
1159# netboot image - Juan Cespedes <cespedes@debian.org>
11600	lelong		0x1b031336L	Netboot image,
1161>4	lelong&0xFFFFFF00	0
1162>>4	lelong&0x100	0x000		mode 2
1163>>4	lelong&0x100	0x100		mode 3
1164>4	lelong&0xFFFFFF00	!0	unknown mode
1165
11660x18b	string	OS/2	OS/2 Boot Manager
1167
1168# updated by Joerg Jenderek at Oct 2008 and Sep 2012
1169# https://syslinux.zytor.com/iso.php
1170# 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
1171# assembler instructions: cli;jmp 0:7Cyy (yy=0x40,0x5e,0x6c,0x6e,0x77);nop;nop
11720	ulequad&0x909000007cc0eafa	0x909000007c40eafa
1173>631	search/689	ISOLINUX\ 	isolinux Loader
1174>>&0	string		x		(version %-4.4s)
1175# https://syslinux.zytor.com/pxe.php
1176# assembler instructions: jmp 7C05
11770	ulelong	0x007c05ea		pxelinux loader (version 2.13 or older)
1178# assembler instructions: pushfd;pushad
11790	ulelong	0x60669c66		pxelinux loader
1180# assembler instructions: jmp 05
11810	ulelong	0xc00005ea		pxelinux loader (version 3.70 or newer)
1182# https://syslinux.zytor.com/wiki/index.php/SYSLINUX
11830	string	LDLINUX\ SYS\ 		SYSLINUX loader
1184>12	string	x			(older version %-4.4s)
11850	string	\r\nSYSLINUX\ 		SYSLINUX loader
1186>11	string	x			(version %-4.4s)
1187# syslinux updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
1188# assembler instructions: jmp yy (yy=0x3c,0x58);nop;"SYSLINUX"
11890	ulelong&0x80909bEB	0x009018EB
1190# OEM-ID not always "SYSLINUX"
1191>434	search/47	Boot\ failed
1192# followed by \r\n\0 or :\
1193>>482	search/132	\0LDLINUX\ SYS		Syslinux bootloader (version 2.13 or older)
1194>>1	ubyte		0x58			Syslinux bootloader (version 3.0-3.9)
1195>459	search/30	Boot\ error\r\n\0
1196>>1	ubyte		0x58			Syslinux bootloader (version 3.10 or newer)
1197# SYSLINUX MBR updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
1198# assembler instructions: mov di,0600h;mov cx,0100h
119916	search/4	\xbf\x00\x06\xb9\x00\x01
1200# to display SYSLINUX MBR (36) before old DOS/MBR boot sector one with partition table (strength=50+21)
1201!:strength +36
1202>94	search/249	Missing\ operating\ system
1203# followed by \r for versions older 3.35 , .\r for versions newer 3.52 and point for other
1204# skip Ranish MBR
1205>>408	search/4	HD1/\0
1206>>408	default		x
1207>>>250	search/118	\0Operating\ system\ load		SYSLINUX MBR
1208# followed by "ing " or space
1209>>>>292	search/98	error
1210>>>>>&0	string		\r		    			(version 3.35 or older)
1211>>>>>&0	string		.\r					(version 3.52 or newer)
1212>>>>>&0	default		x					(version 3.36-3.51 )
1213>368	search/106	\0Disk\ error\ on\ boot\r\n		SYSLINUX GPT-MBR
1214>>156	search/10	\0Boot\ partition\ not\ found\r\n
1215>>>270	search/10	\0OS\ not\ bootable\r\n			(version 3.86 or older)
1216>>174	search/10	\0Missing\ OS\r\n
1217>>>189	search/10	\0Multiple\ active\ partitions\r\n	(version 4.00 or newer)
1218# SYSLINUX END
1219
1220# NetBSD mbr variants (master-boot-code version 1.22) added by Joerg Jenderek at Nov 2012
1221# assembler instructions: xor ax,ax;mov	ax,ss;mov sp,0x7c00;mov	ax,
12220	ubequad		0x31c08ed0bc007c8e
1223# mbr_bootsel magic before partition table not reliable with small ipl fragments
1224#>444	uleshort	0xb5e1
1225>0004	uleshort	x
1226# ERRorTeXT
1227>>181	search/166		Error\ \0\r\n				NetBSD mbr
1228# NT Drive Serial Number https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DS
1229>>>0x1B8	ubelong		>0					\b,Serial %#-.8x
1230# BOOTSEL definitions contains assembler instructions: int 0x13;pop dx;push dx;push dx
1231>>>0xbb		search/71	\xcd\x13\x5a\x52\x52			\b,bootselector
1232# BOOT_EXTENDED definitions contains assembler instructions:
1233# xchg ecx,edx;addl ecx,edx;movw lba_info,si;movb 0x42,ah;pop dx;push dx;int 0x13
1234>>>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
1235# COM_PORT_VAL definitions contains assembler instructions: outb al,dx;add 5,dl;inb %dx;test 0x40,al
1236>>>0x130	search/55	\xee\x80\xc2\x05\xec\xa8\x40		\b,serial IO
1237# not TERSE_ERROR
1238>>>196		search/106	No\ active\ partition\0
1239>>>>&0		string		Disk\ read\ error\0
1240>>>>>&0		string		No\ operating\ system\0			\b,verbose
1241# not NO_CHS definitions contains assembler instructions: pop dx;push dx;movb $8,ah;int0x13
1242>>>0x7d		search/7	\x5a\x52\xb4\x08\xcd\x13		\b,CHS
1243# not NO_LBA_CHECK definitions contains assembler instructions: movw 0x55aa,bx;movb 0x41,ah;pop	dx;push	dx;int 0x13
1244>>>0xa4		search/84	\xbb\xaa\x55\xb4\x41\x5a\x52\xcd\x13	\b,LBA-check
1245# assembler instructions: movw nametab,bx
1246>>>0x26	    search/21	\xBB\x94\x07
1247# not NO_BANNER definitions contains assembler instructions: mov banner,si;call message_crlf
1248>>>>&-9	ubequad&0xBE00f0E800febb94	0xBE0000E80000bb94
1249>>>>>181	search/166		Error\ \0
1250# "a: disk" , "Fn: diskn" or "NetBSD MBR boot"
1251>>>>>>&3	string			x				\b,"%s"
1252>>>446	use		partition-table
1253# Andrea Mazzoleni AdvanceCD mbr loader of http://advancemame.sourceforge.net/boot-readme.html
1254# added by Joerg Jenderek at Nov 2012 for versions 1.3 - 1.4
1255# assembler instructions: jmp short 0x58;nop;ASCII
12560	ubequad&0xeb58908000000000	0xeb58900000000000
1257# assembler instructions: cli;xor ax,ax;mov ds,ax;mov es,ax;mov ss,
1258>(1.b+2)	ubequad			0xfa31c08ed88ec08e
1259# Error messages at end of code
1260>>376		string	No\ operating\ system\r\n\0
1261>>>398		string	Disk\ error\r\n\0FDD\0HDD\0
1262>>>>419		string	\ EBIOS\r\n\0				AdvanceMAME mbr
1263
1264# Neil Turton mbr loader variant of https://www.chiark.greenend.org.uk/~neilt/mbr/
1265# added by Joerg Jenderek at Mar 2011 for versions 1.0.0 - 1.1.11
1266# for 1st version assembler instructions:	cld;xor ax,ax;mov DS,ax;MOV ES,AX;mov SI,
1267# or  	  	  	    			cld;xor ax,ax;mov SS,ax;XOR SP,SP;mov DS,
12680	ulequad&0xcE1b40D48EC031FC	0x8E0000D08EC031FC
1269# pointer to the data starting with Neil Turton signature string
1270>(0x1BC.s)		string		NDTmbr
1271>>&-14			string		1234F\0			Turton mbr (
1272# parameters also viewed by install-mbr --list
1273>>>(0x1BC.s+7)		ubyte		x			\b%u<=
1274>>>(0x1BC.s+9)		ubyte		x			\bVersion<=%u
1275#>>>(0x1BC.s+8)		ubyte		x			asm_flag_%x
1276>>>(0x1BC.s+8)		ubyte&1		1			\b,Y2K-Fix
1277# variant used by testdisk of https://www.cgsecurity.org/wiki/Menu_MBRCode
1278>>>(0x1BC.s+8)		ubyte&2		2			\b,TestDisk
1279#0x1~1,..,0x8~4,0x10~F,0x80~A enabled
1280#>>>(0x1BC.s+10)		ubyte		x			\b,flags %#x
1281#0x0~1,0x1~2,...,0x3~4,0x4~F,0x7~D default boot
1282#>>>(0x1BC.s+11)		ubyte		x			\b,cfg_def %#x
1283# for older versions
1284>>>(0x1BC.s+9)		ubyte		<2
1285#>>>>(0x1BC.s+12)	ubyte		18			\b,%u/18 seconds
1286>>>>(0x1BC.s+12)	ubyte		!18			\b,%u/18 seconds
1287# floppy A: or B:
1288>>>>(0x1BC.s+13)	ubyte		<2			\b,floppy %#x
1289>>>>(0x1BC.s+13)	ubyte		>1
1290# 1st hard disc
1291#>>>>>(0x1BC.s+13)	ubyte		0x80			\b,drive %#x
1292# not 1st hard disc
1293>>>>>(0x1BC.s+13)	ubyte		!0x80			\b,drive %#x
1294# for version >= 2 maximal timeout can be 65534
1295>>>(0x1BC.s+9)		ubyte		>1
1296#>>>>(0x1BC.s+12)	uleshort	18			\b,%u/18 seconds
1297>>>>(0x1BC.s+12)	uleshort	!18			\b,%u/18 seconds
1298# floppy A: or B:
1299>>>>(0x1BC.s+14)	ubyte		<2			\b,floppy %#x
1300>>>>(0x1BC.s+14)	ubyte		>1
1301# 1st hard disc
1302#>>>>>(0x1BC.s+14)	ubyte		0x80			\b,drive %#x
1303# not 1st hard disc
1304>>>>>(0x1BC.s+14)	ubyte		!0x80			\b,drive %#x
1305>>>0	ubyte		x					\b)
1306
1307# added by Joerg Jenderek
1308# In the second sector (+0x200) are variables according to grub-0.97/stage2/asm.S or
1309# grub-1.94/kern/i386/pc/startup.S
1310# https://www.gnu.org/software/grub/manual/grub.html#Embedded-data
1311# usual values are marked with comments to get only information of strange GRUB loaders
13120x200	uleshort		0x70EA
1313# found only version 3.{1,2}
1314>0x206		ubeshort	>0x0300
1315# GRUB version (0.5.)95,0.93,0.94,0.96,0.97 > "00"
1316>>0x212 	ubyte		>0x29
1317>>>0x213 	ubyte		>0x29
1318# not iso9660_stage1_5
1319#>>>0	ulelong&0x00BE5652	0x00BE5652
1320>>>>0x213 	ubyte		>0x29		GRand Unified Bootloader
1321# config_file for stage1_5 is 0xffffffff + default "/boot/grub/stage2"
1322>>>>0x217 	ubyte		0xFF		stage1_5
1323>>>>0x217 	ubyte		<0xFF		stage2
1324>>>>0x206	ubyte		x		\b version %u
1325>>>>0x207	ubyte		x		\b.%u
1326# module_size for 1.94
1327>>>>0x208	ulelong		<0xffffff	\b, installed partition %u
1328#>>>>0x208	ulelong		=0xffffff	\b, %lu (default)
1329>>>>0x208	ulelong		>0xffffff	\b, installed partition %u
1330# GRUB 0.5.95 unofficial
1331>>>>0x20C	ulelong&0x2E300000 0x2E300000
1332# 0=stage2	1=ffs	2=e2fs	3=fat	4=minix	5=reiserfs
1333>>>>>0x20C	ubyte		x		\b, identifier %#x
1334#>>>>>0x20D	ubyte		=0		\b, LBA flag %#x (default)
1335>>>>>0x20D	ubyte		>0		\b, LBA flag %#x
1336# GRUB version as string
1337>>>>>0x20E 	string		>\0		\b, GRUB version %-s
1338# for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default
1339>>>>>>0x215 	ulong		0xffffffff
1340>>>>>>>0x219 	string		>\0		\b, configuration file %-s
1341>>>>>>0x215 	ulong		!0xffffffff
1342>>>>>>>0x215 	string		>\0		\b, configuration file %-s
1343# newer GRUB versions
1344>>>>0x20C	ulelong&0x2E300000 !0x2E300000
1345##>>>>>0x20C	ulelong		=0		\b, saved entry %d (usual)
1346>>>>>0x20C	ulelong		>0		\b, saved entry %d
1347# for 1.94 contains kernel image size
1348# for 0.93,0.94,0.96,0.97
1349# 0=stage2	1=ffs	2=e2fs	3=fat	4=minix	5=reiserfs	6=vstafs	7=jfs	8=xfs	9=iso9660	a=ufs2
1350>>>>>0x210	ubyte		x		\b, identifier %#x
1351# The flag for LBA forcing is in most cases 0
1352#>>>>>0x211	ubyte		=0		\b, LBA flag %#x (default)
1353>>>>>0x211	ubyte		>0		\b, LBA flag %#x
1354# GRUB version as string
1355>>>>>0x212 	string		>\0		\b, GRUB version %-s
1356# for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default
1357>>>>>0x217 	ulong		0xffffffff
1358>>>>>>0x21b 	string		>\0		\b, configuration file %-s
1359>>>>>0x217 	ulong		!0xffffffff
1360>>>>>>0x217 	string		>\0		\b, configuration file %-s
1361
1362# DOS x86 sector updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
1363# JuMP short     bootcodeoffset NOP assembler instructions will usually be EB xx 90
1364# over BIOS parameter block (BPB)
1365# https://thestarman.pcministry.com/asm/2bytejumps.htm#FWD
1366# older drives may use Near JuMP instruction E9 xx xx
1367# minimal short forward jump found 0x29 for bootloaders or 0x0
1368# maximal short forward jump is 0x7f
1369# OEM-ID is empty or contain readable bytes
13700		ulelong&0x804000E9	0x000000E9
1371!:strength	+60
1372# mtools-3.9.8/msdos.h
1373# usual values are marked with comments to get only information of strange FAT systems
1374# valid sectorsize must be a power of 2 from 32 to 32768
1375>11		uleshort&0x001f	0
1376>>11		uleshort	<32769
1377>>>11		uleshort	>31
1378>>>>21		ubyte&0xf0	0xF0
1379>>>>>0		ubyte		0xEB		DOS/MBR boot sector
1380>>>>>>1		ubyte		x		\b, code offset %#x+2
1381>>>>>0		ubyte		0xE9
1382>>>>>>1		uleshort	x		\b, code offset %#x+3
1383>>>>>3		string		>\0		\b, OEM-ID "%-.8s"
1384#http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC
1385>>>>>>8		string		IHC		\b cached by Windows 9M
1386>>>>>11		uleshort	>512		\b, Bytes/sector %u
1387#>>>>>11	uleshort	=512		\b, Bytes/sector %u=512 (usual)
1388>>>>>11		uleshort	<512		\b, Bytes/sector %u
1389>>>>>13		ubyte		>1		\b, sectors/cluster %u
1390#>>>>>13	ubyte		=1		\b, sectors/cluster %u (usual on Floppies)
1391# for lazy FAT32 implementation like Transcend digital photo frame PF830
1392>>>>>82		string/c	fat32
1393>>>>>>14	uleshort	!32		\b, reserved sectors %u
1394#>>>>>>14	uleshort	=32		\b, reserved sectors %u (usual Fat32)
1395>>>>>82		string/c	!fat32
1396>>>>>>14	uleshort	>1		\b, reserved sectors %u
1397#>>>>>>14	uleshort	=1		\b, reserved sectors %u (usual FAT12,FAT16)
1398#>>>>>>14	uleshort	0		\b, reserved sectors %u (usual NTFS)
1399>>>>>16		ubyte		>2		\b, FATs %u
1400#>>>>>16	ubyte		=2		\b, FATs %u (usual)
1401>>>>>16		ubyte		=1		\b, FAT  %u
1402>>>>>16		ubyte		>0
1403>>>>>17		uleshort	>0		\b, root entries %u
1404#>>>>>17	uleshort	=0		\b, root entries %u=0 (usual Fat32)
1405>>>>>19		uleshort	>0		\b, sectors %u (volumes <=32 MB)
1406#>>>>>19	uleshort	=0		\b, sectors %u=0 (usual Fat32)
1407>>>>>21		ubyte		>0xF0		\b, Media descriptor %#x
1408#>>>>>21	ubyte		=0xF0		\b, Media descriptor %#x (usual floppy)
1409>>>>>21		ubyte		<0xF0		\b, Media descriptor %#x
1410>>>>>22		uleshort	>0		\b, sectors/FAT %u
1411#>>>>>22	uleshort	=0		\b, sectors/FAT %u=0 (usual Fat32)
1412>>>>>24		uleshort	x		\b, sectors/track %u
1413>>>>>26		ubyte		>2		\b, heads %u
1414#>>>>>26	ubyte		=2		\b, heads %u (usual floppy)
1415>>>>>26		ubyte		=1		\b, heads %u
1416# valid only for sector sizes with more then 32 Bytes
1417>>>>>11		uleshort	>32
1418# https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Extended_BIOS_Parameter_Block
1419# skip for values 2,2Ah,70h,73h,DFh
1420# and continue for extended boot signature values 0,28h,29h,80h
1421>>>>>>38	ubyte&0x56	=0
1422>>>>>>>28	ulelong		>0		\b, hidden sectors %u
1423#>>>>>>>28	ulelong		=0		\b, hidden sectors %u (usual floppy)
1424>>>>>>>32	ulelong		>0		\b, sectors %u (volumes > 32 MB)
1425#>>>>>>>32	ulelong		=0		\b, sectors %u (volumes > 32 MB)
1426# FAT<32 bit specific
1427>>>>>>>82	string/c	!fat32
1428#>>>>>>>>36	ubyte		0x80		\b, physical drive %#x=0x80 (usual harddisk)
1429#>>>>>>>>36	ubyte		0		\b, physical drive %#x=0 (usual floppy)
1430>>>>>>>>36	ubyte		!0x80
1431>>>>>>>>>36	ubyte		!0		\b, physical drive %#x
1432# VGA-copy CRC or
1433# in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
1434>>>>>>>>37	ubyte		>0		\b, reserved %#x
1435#>>>>>>>>37	ubyte		=0		\b, reserved %#x
1436# extended boot signature value is 0x80 for NTFS, 0x28 or 0x29 for others
1437>>>>>>>>38	ubyte		!0x29		\b, dos < 4.0 BootSector (%#x)
1438>>>>>>>>38	ubyte&0xFE	=0x28
1439>>>>>>>>>39	ulelong		x		\b, serial number %#x
1440>>>>>>>>38	ubyte		=0x29
1441>>>>>>>>>43	string		<NO\ NAME	\b, label: "%11.11s"
1442>>>>>>>>>43	string		>NO\ NAME	\b, label: "%11.11s"
1443>>>>>>>>>43	string		=NO\ NAME	\b, unlabeled
1444# there exist some old floppies without word FAT at offset 54
1445# a word like "FATnm   " is only a hint for a FAT size on nm-bits
1446# Normally the number of clusters is calculated by the values of BPP.
1447# if it is small enough FAT is 12 bit, if it is too big enough FAT is 32 bit,
1448# otherwise FAT is 16 bit.
1449# http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-fat-widths.html
1450>>>>>82		string/c	!fat32
1451>>>>>>54	string		FAT12		\b, FAT (12 bit)
1452>>>>>>54	string		FAT16		\b, FAT (16 bit)
1453>>>>>>54	default		x
1454# determinate FAT bit size by media descriptor
1455# small floppies implies FAT12
1456>>>>>>>21	ubyte		<0xF0		\b, FAT (12 bit by descriptor)
1457# with media descriptor F0h floppy or maybe superfloppy with FAT16
1458>>>>>>>21	ubyte		=0xF0
1459# superfloppy (many sectors) implies FAT16
1460>>>>>>>>32	ulelong		>0xFFFF		\b, FAT (16 bit by descriptor+sectors)
1461# no superfloppy with media descriptor F0h implies FAT12
1462>>>>>>>>32	default		x		\b, FAT (12 bit by descriptor+sectors)
1463# with media descriptor F8h floppy or hard disc with FAT12 or FAT16
1464>>>>>>>21	ubyte		=0xF8
1465# 360 KiB with media descriptor F8h, 9 sectors per track ,single sided floppy implies FAT12
1466>>>>>>>>19	ubequad	0xd002f80300090001	\b, FAT (12 bit by descriptor+geometry)
1467# hard disc with FAT12 or FAT16
1468>>>>>>>>19	default		x		\b, FAT (1Y bit by descriptor)
1469# with media descriptor FAh floppy, RAM disc with FAT12 or FAT16 or Tandy hard disc
1470>>>>>>>21	ubyte		=0xFA
1471# 320 KiB with media descriptor FAh, 8 sectors per track ,single sided floppy implies FAT12
1472>>>>>>>>19	ubequad	0x8002fa0200080001	\b, FAT (12 bit by descriptor+geometry)
1473# RAM disc with FAT12 or FAT16 or Tandy hard disc
1474>>>>>>>>19	default		x		\b, FAT (1Y bit by descriptor)
1475# others are floppy
1476>>>>>>>21	default		x		\b, FAT (12 bit by descriptor)
1477# FAT32 bit specific
1478>>>>>82		string/c	fat32		\b, FAT (32 bit)
1479>>>>>>36	ulelong		x		\b, sectors/FAT %u
1480# https://technet.microsoft.com/en-us/library/cc977221.aspx
1481>>>>>>40	uleshort	>0		\b, extension flags %#x
1482#>>>>>>40	uleshort	=0		\b, extension flags %u
1483>>>>>>42	uleshort	>0		\b, fsVersion %u
1484#>>>>>>42	uleshort	=0		\b, fsVersion %u (usual)
1485>>>>>>44	ulelong		>2		\b, rootdir cluster %u
1486#>>>>>>44	ulelong		=2		\b, rootdir cluster %u
1487#>>>>>>44	ulelong		=1		\b, rootdir cluster %u
1488>>>>>>48	uleshort	>1		\b, infoSector %u
1489#>>>>>>48	uleshort	=1		\b, infoSector %u (usual)
1490>>>>>>48	uleshort	<1		\b, infoSector %u
1491# 0 or 0xFFFF instead of usual 6 means no backup sector
1492>>>>>>50	uleshort	=0xFFFF		\b, no Backup boot sector
1493>>>>>>50	uleshort	=0		\b, no Backup boot sector
1494#>>>>>>50	uleshort	=6		\b, Backup boot sector %u (usual)
1495>>>>>>50	default		x
1496>>>>>>>50	uleshort	x		\b, Backup boot sector %u
1497# corrected by Joerg Jenderek at Feb 2011 according to https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
1498>>>>>>52	ulelong		>0		\b, reserved1 %#x
1499>>>>>>56	ulelong		>0		\b, reserved2 %#x
1500>>>>>>60	ulelong		>0		\b, reserved3 %#x
1501# same structure as FAT1X
1502#>>>>>>64	ubyte		=0x80		\b, physical drive %#x=80 (usual harddisk)
1503#>>>>>>64	ubyte		=0		\b, physical drive %#x=0 (usual floppy)
1504>>>>>>64	ubyte		!0x80
1505>>>>>>>64	ubyte		>0		\b, physical drive %#x
1506# in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
1507>>>>>>65	ubyte		>0		\b, reserved %#x
1508>>>>>>66	ubyte		!0x29		\b, dos < 4.0 BootSector (%#x)
1509>>>>>>66	ubyte		=0x29
1510>>>>>>>67	ulelong		x		\b, serial number %#x
1511>>>>>>>71	string		<NO\ NAME	\b, label: "%11.11s"
1512>>>>>>>71	string		>NO\ NAME	\b, label: "%11.11s"
1513>>>>>>>71	string		=NO\ NAME	\b, unlabeled
1514# additional tests for floppy image added by Joerg Jenderek
1515# no fixed disk
1516>>>>>21		ubyte		!0xF8
1517# floppy media with 12 bit FAT
1518>>>>>>54	string		!FAT16
1519# test for FAT after bootsector
1520>>>>>>>(11.s)	ulelong&0x00ffffF0	0x00ffffF0	\b, followed by FAT
1521# floppy image
1522!:mime application/x-ima
1523# NTFS specific added by Joerg Jenderek at Mar 2011 according to https://thestarman.pcministry.com/asm/mbr/NTFSBR.htm
1524# and http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/bios-parameter-block.html
1525# 0 FATs
1526>>>>>16	ubyte		=0
1527# 0 root entries
1528>>>>>>17	uleshort	=0
1529# 0 DOS sectors
1530>>>>>>>19	uleshort	=0
1531# 0 sectors/FAT
1532# dos < 4.0 BootSector value found is 0x80
1533#38	ubyte		=0x80			\b, dos < 4.0 BootSector (%#x)
1534>>>>>>>>22	uleshort	=0		\b; NTFS
1535>>>>>>>>>24	uleshort	>0		\b, sectors/track %u
1536>>>>>>>>>36	ulelong		!0x800080	\b, physical drive %#x
1537>>>>>>>>>40	ulequad		>0		\b, sectors %lld
1538>>>>>>>>>48	ulequad		>0		\b, $MFT start cluster %lld
1539>>>>>>>>>56	ulequad		>0		\b, $MFTMirror start cluster %lld
1540# Values 0 to 127 represent MFT record sizes of 0 to 127 clusters.
1541# Values 128 to 255 represent MFT record sizes of 2^(256-N) bytes.
1542>>>>>>>>>64	lelong		<256
1543>>>>>>>>>>64	lelong		<128		\b, clusters/RecordSegment %d
1544>>>>>>>>>>64	ubyte		>127		\b, bytes/RecordSegment 2^(-1*%i)
1545# Values 0 to 127 represent index block sizes of 0 to 127 clusters.
1546# Values 128 to 255 represent index block sizes of 2^(256-N) byte
1547>>>>>>>>>68	ulelong		<256
1548>>>>>>>>>>68	ulelong		<128		\b, clusters/index block %d
1549#>>>>>>>>>>68	ulelong		>127		\b, bytes/index block 2^(256-%d)
1550>>>>>>>>>>68	ubyte		>127		\b, bytes/index block 2^(-1*%i)
1551>>>>>>>>>72	ulequad		x		\b, serial number 0%llx
1552>>>>>>>>>80	ulelong		>0		\b, checksum %#x
1553#>>>>>>>>>80	ulelong		=0		\b, checksum %#x=0 (usual)
1554# unicode loadername size jump
1555>>>>>>>>>(0x200.s*2)	ubyte				x
1556# in next sector loadername terminated by unicode CTRL-D and $
1557>>>>>>>>>>&0x1FF	ulequad&0x0000FFffFFffFF00	0x0000002400040000 \b; contains
1558# if 2nd NTFS sectors is found then assume whole filesystem
1559#!:mime		application/x-raw-disk-image
1560!:ext		img/bin/ntfs
1561>>>>>>>>>>>0x200	use				ntfs-sector2
1562
1563# For 2nd NTFS sector added by Joerg Jenderek at Jan 2013, Mar 2019
1564# https://thestarman.pcministry.com/asm/mbr/NTFSbrHexEd.htm
1565# unused assembler instructions short JMP y2;NOP;NOP
15660x056		ulelong&0xFFFF0FFF	0x909002EB	NTFS
1567#!:mime		application/octet-stream
1568!:ext		bin
1569>0		use		ntfs-sector2
1570# https://memory.dataram.com/products-and-services/software/ramdisk
1571# assembler instructions JMP C000;NOP
15720x056		ulelong			0x9000c0e9	NTFS
1573#!:mime		application/octet-stream
1574!:ext		bin
1575>0		use		ntfs-sector2
1576# check for characteristics of second NTFS sector and then display loader name
15770		name		ntfs-sector2
1578# number of utf16 characters of loadername
1579>0		uleshort	<8
1580# unused assembler instructions JMP y2;NOP;NOP or JMP C000;NOP
1581>>0x056		ulelong&0xFF0000FD	0x900000E9
1582# loadernames are NTLDR,CMLDR,PELDR,$LDR$ or BOOTMGR
1583>>>0x002		lestring16	x	bootstrap %-5.5s
1584# check for 7 character length of loader name like BOOTMGR
1585>>>0		uleshort	7
1586>>>>0x0c	lestring16	x	\b%-2.2s
1587### DOS,NTFS boot sectors end
1588
1589# ntfsclone-image is a special save format for NTFS volumes,
1590# created and restored by the ntfsclone program
15910	string	\0ntfsclone-image	ntfsclone image,
1592>0x10	byte	x			version %d.
1593>0x11	byte	x			\b%d,
1594>0x12	lelong	x			cluster size %d,
1595>0x16	lequad	x			device size %lld,
1596>0x1e	lequad	x			%lld total clusters,
1597>0x26	lequad	x			%lld clusters in use
1598
1599
16000	name		ffsv1
1601>8404	string		x		last mounted on %s,
1602#>9504	ledate		x		last checked at %s,
1603>8224	ledate		x		last written at %s,
1604>8401	byte		x		clean flag %d,
1605>8228	lelong		x		number of blocks %d,
1606>8232	lelong		x		number of data blocks %d,
1607>8236	lelong		x		number of cylinder groups %d,
1608>8240	lelong		x		block size %d,
1609>8244	lelong		x		fragment size %d,
1610>8252	lelong		x		minimum percentage of free blocks %d,
1611>8256	lelong		x		rotational delay %dms,
1612>8260	lelong		x		disk rotational speed %drps,
1613>8320	lelong		0		TIME optimization
1614>8320	lelong		1		SPACE optimization
1615
16169564	lelong		0x00011954	Unix Fast File system [v1] (little-endian),
1617>0	use		ffsv1
1618
16199564	belong		0x00011954	Unix Fast File system [v1] (big-endian),
1620>7168   belong		0x4c41424c	Apple UFS Volume
1621>>7186  string		x		named %s,
1622>>7176  belong		x		volume label version %d,
1623>>7180  bedate		x		created on %s,
1624>0	use		\^ffsv1
1625
16260	name		ffsv2
1627>212	string		x		last mounted on %s,
1628>680	string		>\0		volume name %s,
1629>1072	leqldate	x		last written at %s,
1630>209	byte		x		clean flag %d,
1631>210	byte		x		readonly flag %d,
1632>1080	lequad		x		number of blocks %lld,
1633>1088	lequad		x		number of data blocks %lld,
1634>44	lelong		x		number of cylinder groups %d,
1635>48	lelong		x		block size %d,
1636>52	lelong		x		fragment size %d,
1637>1196	lelong		x		average file size %d,
1638>1200	lelong		x		average number of files in dir %d,
1639>1104	lequad		x		pending blocks to free %lld,
1640>1112	lelong		x		pending inodes to free %d,
1641>712	lequad		x		system-wide uuid %0llx,
1642>60	lelong		x		minimum percentage of free blocks %d,
1643>128	lelong		0		TIME optimization
1644>128	lelong		1		SPACE optimization
1645
164642332	lelong		0x19012038	Unix Fast File system [v2ea] (little-endian)
1647>40960	use		ffsv2
1648
164942332	lelong		0x19540119	Unix Fast File system [v2] (little-endian)
1650>40960	use		ffsv2
1651
165242332	belong		0x19012038	Unix Fast File system [v2ea] (little-endian)
1653>40960	use		\^ffsv2
1654
165542332	belong		0x19540119	Unix Fast File system [v2] (big-endian)
1656>40960	use		\^ffsv2
1657
165866908	lelong		0x19012038	Unix Fast File system [v2ea] (little-endian)
1659>65536	use		ffsv2
1660
166166908	lelong		0x19540119	Unix Fast File system [v2] (little-endian)
1662>65536	use		ffsv2
1663
166466908	belong		0x19012038	Unix Fast File system [v2ea] (little-endian)
1665>65536	use		\^ffsv2
1666
166766908	belong		0x19540119	Unix Fast File system [v2] (big-endian)
1668>65536	use		\^ffsv2
1669
16700	ulequad		0xc8414d4dc5523031	HAMMER filesystem (little-endian),
1671>0x90	lelong+1	x			volume %d
1672>0x94	lelong		x			(of %d),
1673>0x50	string		x			name %s,
1674>0x98	ulelong		x			version %u,
1675>0xa0	ulelong		x			flags %#x
1676
16770	ulequad		0x48414d3205172011	HAMMER2 filesystem (little-endian),
1678>0x3b	byte		x			volume %d,
1679>0x28	ulequad/1073741824 x			size %lluGB,
1680>0x30	ulelong		x			version %u,
1681>0x34	ulelong		x			flags %#x
1682
1683# ext2/ext3 filesystems - Andreas Dilger <adilger@dilger.ca>
1684# ext4 filesystem - Eric Sandeen <sandeen@sandeen.net>
1685# volume label and UUID Russell Coker
1686# https://etbe.coker.com.au/2008/07/08/label-vs-uuid-vs-device/
16870x438   leshort         0xEF53          Linux
1688>0x44c  lelong          x               rev %d
1689>0x43e  leshort         x               \b.%d
1690# No journal?  ext2
1691>0x45c  lelong          ^0x0000004      ext2 filesystem data
1692>>0x43a leshort         ^0x0000001      (mounted or unclean)
1693# Has a journal?  ext3 or ext4
1694>0x45c  lelong          &0x0000004
1695#  and small INCOMPAT?
1696>>0x460 lelong          <0x0000040
1697#   and small RO_COMPAT?
1698>>>0x464 lelong         <0x0000008      ext3 filesystem data
1699#   else large RO_COMPAT?
1700>>>0x464 lelong         >0x0000007      ext4 filesystem data
1701#  else large INCOMPAT?
1702>>0x460	lelong          >0x000003f      ext4 filesystem data
1703>0x468	ubelong		x		\b, UUID=%08x
1704>0x46c	ubeshort	x		\b-%04x
1705>0x46e	ubeshort	x		\b-%04x
1706>0x470	ubeshort	x		\b-%04x
1707>0x472	ubelong		x		\b-%08x
1708>0x476	ubeshort	x		\b%04x
1709>0x478	string		>0		\b, volume name "%s"
1710# General flags for any ext* fs
1711>0x460	lelong          &0x0000004      (needs journal recovery)
1712>0x43a	leshort         &0x0000002      (errors)
1713# INCOMPAT flags
1714>0x460	lelong          &0x0000001      (compressed)
1715#>0x460	lelong          &0x0000002      (filetype)
1716#>0x460	lelong          &0x0000010      (meta bg)
1717>0x460	lelong          &0x0000040      (extents)
1718>0x460	lelong          &0x0000080      (64bit)
1719#>0x460	lelong          &0x0000100      (mmp)
1720#>0x460	lelong          &0x0000200      (flex bg)
1721# RO_INCOMPAT flags
1722#>0x464	lelong          &0x0000001      (sparse super)
1723>0x464	lelong          &0x0000002      (large files)
1724>0x464	lelong          &0x0000008      (huge files)
1725#>0x464	lelong          &0x0000010      (gdt checksum)
1726#>0x464	lelong          &0x0000020      (many subdirs)
1727#>0x463	lelong          &0x0000040      (extra isize)
1728
1729# f2fs filesystem - Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
17300x400	lelong		0xF2F52010	F2FS filesystem
1731>0x46c	ubelong		x		\b, UUID=%08x
1732>0x470	ubeshort	x		\b-%04x
1733>0x472	ubeshort	x		\b-%04x
1734>0x474	ubeshort	x		\b-%04x
1735>0x476	ubelong		x		\b-%08x
1736>0x47a	ubeshort	x		\b%04x
1737>0x147c	lestring16	x		\b, volume name "%s"
1738
1739# Minix filesystems - Juan Cespedes <cespedes@debian.org>
17400x410	leshort		0x137f
1741!:strength / 2
1742>0x402	beshort		< 100
1743>0x402	beshort		> -1		Minix filesystem, V1, 14 char names, %d zones
1744>0x1e	string		minix		\b, bootable
17450x410	beshort		0x137f
1746!:strength / 2
1747>0x402	beshort		< 100
1748>0x402	beshort		> -1		Minix filesystem, V1 (big endian), %d zones
1749>0x1e	string		minix		\b, bootable
17500x410	leshort		0x138f
1751!:strength / 2
1752>0x402	beshort		< 100
1753>0x402	beshort		> -1		Minix filesystem, V1, 30 char names, %d zones
1754>0x1e	string		minix		\b, bootable
17550x410	beshort		0x138f
1756!:strength / 2
1757>0x402	beshort		< 100
1758>0x402	beshort		> -1		Minix filesystem, V1, 30 char names (big endian), %d zones
1759>0x1e	string		minix		\b, bootable
1760# Weak Magic: this is $x
1761#0x410	leshort		0x2468
1762#>0x402	beshort		< 100
1763#>>0x402	beshort		> -1		Minix filesystem, V2, 14 char names
1764#>0x1e	string		minix		\b, bootable
1765#0x410	beshort		0x2468
1766#>0x402	beshort		< 100
1767#>0x402	beshort		> -1		Minix filesystem, V2 (big endian)
1768#>0x1e	string		minix		\b, bootable
1769#0x410	leshort		0x2478
1770#>0x402	beshort		< 100
1771#>0x402	beshort		> -1		Minix filesystem, V2, 30 char names
1772#>0x1e	string		minix		\b, bootable
1773#0x410	leshort		0x2478
1774#>0x402	beshort		< 100
1775#>0x402	beshort		> -1		Minix filesystem, V2, 30 char names
1776#>0x1e	string		minix		\b, bootable
1777#0x410	beshort		0x2478
1778#>0x402	beshort		!0		Minix filesystem, V2, 30 char names (big endian)
1779#>0x1e	string		minix		\b, bootable
1780# Weak Magic! this is MD
1781#0x418	leshort		0x4d5a
1782#>0x402	beshort		<100
1783#>>0x402	beshort		> -1		Minix filesystem, V3, 60 char names
1784
1785# SGI disk labels - Nathan Scott <nathans@debian.org>
17860	belong		0x0BE5A941	SGI disk label (volume header)
1787
1788# SGI XFS filesystem - Nathan Scott <nathans@debian.org>
17890	belong		0x58465342	SGI XFS filesystem data
1790>0x4	belong		x		(blksz %d,
1791>0x68	beshort		x		inosz %d,
1792>0x64	beshort		^0x2004		v1 dirs)
1793>0x64	beshort		&0x2004		v2 dirs)
1794
1795############################################################################
1796# Minix-ST kernel floppy
17970x800	belong		0x46fc2700	Atari-ST Minix kernel image
1798# https://en.wikipedia.org/wiki/BIOS_parameter_block
1799# floppies with valid BPB and any instruction at beginning
1800>19	string		\240\005\371\005\0\011\0\2\0	\b, 720k floppy
1801>19	string		\320\002\370\005\0\011\0\1\0	\b, 360k floppy
1802
1803############################################################################
1804# Hmmm, is this a better way of detecting _standard_ floppy images ?
180519	string		\320\002\360\003\0\011\0\1\0	DOS floppy 360k
1806>0x1FE	leshort		0xAA55		\b, DOS/MBR hard disk boot sector
180719	string		\240\005\371\003\0\011\0\2\0	DOS floppy 720k
1808>0x1FE	leshort		0xAA55		\b, DOS/MBR hard disk boot sector
180919	string		\100\013\360\011\0\022\0\2\0	DOS floppy 1440k
1810>0x1FE	leshort		0xAA55		\b, DOS/MBR hard disk boot sector
1811
181219	string		\240\005\371\005\0\011\0\2\0	DOS floppy 720k, IBM
1813>0x1FE	leshort		0xAA55		\b, DOS/MBR hard disk boot sector
181419	string		\100\013\371\005\0\011\0\2\0	DOS floppy 1440k, mkdosfs
1815>0x1FE	leshort		0xAA55		\b, DOS/MBR hard disk boot sector
1816
181719	string		\320\002\370\005\0\011\0\1\0	Atari-ST floppy 360k
181819	string		\240\005\371\005\0\011\0\2\0	Atari-ST floppy 720k
1819#			|       |   |     |     |
1820#			|       |   |     |     heads
1821#			|       |   |     sectors/track
1822#			|       |   sectors/FAT
1823#			|       media descriptor
1824#		BPB:	sectors
1825
1826#  Valid media descriptor bytes for MS-DOS:
1827#
1828#     Byte   Capacity   Media Size and Type
1829#     -------------------------------------------------
1830#
1831#     F0     2.88 MB    3.5-inch, 2-sided, 36-sector
1832#     F0     1.44 MB    3.5-inch, 2-sided, 18-sector
1833#     F9     720K       3.5-inch, 2-sided, 9-sector
1834#     F9     1.2 MB     5.25-inch, 2-sided, 15-sector
1835#     FD     360K       5.25-inch, 2-sided, 9-sector
1836#     FF     320K       5.25-inch, 2-sided, 8-sector
1837#     FC     180K       5.25-inch, 1-sided, 9-sector
1838#     FE     160K       5.25-inch, 1-sided, 8-sector
1839#     FE     250K       8-inch, 1-sided, single-density
1840#     FD     500K       8-inch, 2-sided, single-density
1841#     FE     1.2 MB     8-inch, 2-sided, double-density
1842#     F8     -----      Fixed disk
1843#
1844#     FC     xxxK       Apricot 70x1x9 boot disk.
1845#
1846# Originally a bitmap:
1847#  xxxxxxx0	Not two sided
1848#  xxxxxxx1	Double sided
1849#  xxxxxx0x	Not 8 SPT
1850#  xxxxxx1x	8 SPT
1851#  xxxxx0xx	Not Removable drive
1852#  xxxxx1xx	Removable drive
1853#  11111xxx	Must be one.
1854#
1855# But now it's rather random:
1856#  111111xx	Low density disk
1857#        00	SS, Not 8 SPT
1858#        01	DS, Not 8 SPT
1859#        10	SS, 8 SPT
1860#        11	DS, 8 SPT
1861#
1862#  11111001	Double density 3 1/2 floppy disk, high density 5 1/4
1863#  11110000	High density 3 1/2 floppy disk
1864#  11111000	Hard disk any format
1865#
1866
1867# all FAT12 (strength=70) floppies with sectorsize 512 added by Joerg Jenderek at Jun 2013
1868# https://en.wikipedia.org/wiki/File_Allocation_Table#Exceptions
1869# Too Weak.
1870#512		ubelong&0xE0ffff00	0xE0ffff00
1871# without valid Media descriptor in place of BPB, cases with are done at other places
1872#>21		ubyte			<0xE5			floppy with old FAT filesystem
1873# but valid Media descriptor at begin of FAT
1874#>>512		ubyte			=0xed			720k
1875#>>512		ubyte			=0xf0			1440k
1876#>>512		ubyte			=0xf8			720k
1877#>>512		ubyte			=0xf9			1220k
1878#>>512		ubyte			=0xfa			320k
1879#>>512		ubyte			=0xfb			640k
1880#>>512		ubyte			=0xfc			180k
1881# look like an old DOS directory entry
1882#>>>0xA0E	ubequad			0
1883#>>>>0xA00	ubequad			!0
1884#!:mime application/x-ima
1885#>>512		ubyte			=0xfd
1886# look for 2nd FAT at different location to distinguish between 360k and 500k
1887#>>>0x600	ubelong&0xE0ffff00	0xE0ffff00		360k
1888#>>>0x500	ubelong&0xE0ffff00	0xE0ffff00		500k
1889#>>>0xA0E	ubequad			0
1890#!:mime application/x-ima
1891#>>512		ubyte			=0xfe
1892#>>>0x400	ubelong&0xE0ffff00	0xE0ffff00		160k
1893#>>>>0x60E	ubequad			0
1894#>>>>>0x600	ubequad			!0
1895#!:mime application/x-ima
1896#>>>0xC00	ubelong&0xE0ffff00	0xE0ffff00		1200k
1897#>>512		ubyte			=0xff			320k
1898#>>>0x60E	ubequad			0
1899#>>>>0x600	ubequad			!0
1900#!:mime application/x-ima
1901#>>512		ubyte			x			\b, Media descriptor %#x
1902# without x86 jump instruction
1903#>>0		ulelong&0x804000E9	!0x000000E9
1904# assembler instructions: CLI;MOV SP,1E7;MOV AX;07c0;MOV
1905#>>>0	ubequad				0xfabce701b8c0078e	\b, MS-DOS 1.12 bootloader
1906# IOSYS.COM+MSDOS.COM
1907#>>>>0xc4	use			2xDOS-filename
1908#>>0		ulelong&0x804000E9	=0x000000E9
1909# only x86 short jump instruction found
1910#>>>0		ubyte			=0xEB
1911#>>>>1		ubyte			x			\b, code offset %#x+2
1912# https://thestarman.pcministry.com/DOS/ibm100/Boot.htm
1913# assembler instructions: CLI;MOV AX,CS;MOV DS,AX;MOV DX,0
1914#>>>>(1.b+2)	ubequad			0xfa8cc88ed8ba0000	\b, PC-DOS 1.0 bootloader
1915# ibmbio.com+ibmdos.com
1916#>>>>>0x176	use			DOS-filename
1917#>>>>>0x181	ubyte			x			\b+
1918#>>>>>0x182	use			DOS-filename
1919# https://thestarman.pcministry.com/DOS/ibm110/Boot.htm
1920# assembler instructions: CLI;MOV AX,CS;MOV DS,AX;XOR DX,DX;MOV
1921#>>>>(1.b+2)	ubequad			0xfa8cc88ed833d28e	\b, PC-DOS 1.1 bootloader
1922# ibmbio.com+ibmdos.com
1923#>>>>>0x18b	use			DOS-filename
1924#>>>>>0x196	ubyte			x			\b+
1925#>>>>>0x197	use			DOS-filename
1926# https://en.wikipedia.org/wiki/Zenith_Data_Systems
1927# assembler instructions: MOV BX,07c0;MOV SS,BX;MOV SP,01c6
1928#>>>>(1.b+2)	ubequad			0xbbc0078ed3bcc601	\b, Zenith Data Systems MS-DOS 1.25 bootloader
1929# IO.SYS+MSDOS.SYS
1930#>>>>>0x20	use			2xDOS-filename
1931# https://en.wikipedia.org/wiki/Corona_Data_Systems
1932# assembler instructions: MOV AX,CS;MOV DS,AX;CLI;MOV SS,AX;
1933#>>>>(1.b+2)	ubequad			0x8cc88ed8fa8ed0bc	\b, MS-DOS 1.25 bootloader
1934# IO.SYS+MSDOS.SYS
1935#>>>>>0x69	use			2xDOS-filename
1936# assembler instructions: CLI;PUSH CS;POP SS;MOV SP,7c00;
1937#>>>>(1.b+2)	ubequad			0xfa0e17bc007cb860	\b, MS-DOS 2.11 bootloader
1938# defect IO.SYS+MSDOS.SYS ?
1939#>>>>>0x162	use			2xDOS-filename
1940
19410	name				cdrom	ISO 9660 CD-ROM filesystem data
1942!:mime	application/x-iso9660-image
1943!:ext	iso/iso9660
1944# The next line is not necessary because the MBR staff is done looking for boot signature
1945>0x1FE	leshort  0xAA55     (DOS/MBR boot sector)
1946# "application id" which appears to be used as a volume label
1947>32808	string/T  >\0       '%.32s'
1948>34816	string    \000CD001\001EL\ TORITO\ SPECIFICATION    (bootable)
1949# check for extended area (combined ISO + UDF)
1950>36865	string    BEA01     +
1951>>36864	use       extendedarea
1952
195337633	string    CD001     ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
1954!:mime	application/x-iso9660-image
1955
1956# URL:		http://fileformats.archiveteam.org/wiki/High_Sierra
1957# Update:	Joerg Jenderek
195832777	string    CDROM     High Sierra CD-ROM filesystem data
1959# https://www.unix.com/man-page/OpenSolaris/7fs/hsfs/
1960#!:mime	application/octet-stream
1961#!:mime	application/x-hsfs-image
1962# BOOKSHELF.ISO "Shareware Grab Bag.iso"
1963!:ext	iso
1964# "application id" which appears to be used as a volume label
1965>32816	string/T  >\0       '%.32s'
1966
1967
1968# CDROM Filesystems
1969# https://en.wikipedia.org/wiki/ISO_9660
1970# Modified for UDF by gerardo.cacciari@gmail.com
197132769	string    CD001
1972# mime line at that position does not work
1973# to display CD-ROM (70=81-11) after MBR (113=40+72+1), partition-table (71=50+21) and before Apple Driver Map (51)
1974#!:strength -11
1975# to display CD-ROM (114=81+33) before MBR (113=40+72+1), partition-table (71=50+21) and Apple Driver Map (51)
1976!:strength +35
1977>0	use	cdrom
1978
1979# From:		Joerg Jenderek
1980# URL:		http://fileformats.archiveteam.org/wiki/Universal_Disk_Format
1981#		https://en.wikipedia.org/wiki/Universal_Disk_Format
1982# Reference:	https://wiki.osdev.org/UDF
1983# Note:		called "UDF Disc Image" by DROID via PUID fmt/1738
1984#		verified by udftools `udfinfo nero-UDFv26.iso` and 7-Zip `7z l -tUdf nero-UDF1.iso`
1985#
1986# look for type descriptor at relative offset 1 of block 16 if it is an extended descriptor section
198732769	string	BEA01
1988>32768	use	extendedarea
1989
19900	name	extendedarea
1991# look for type descriptor at relative offset 1 of block 17 with size 2048 (valid for images with blocksize of 512, 1024 or 2048 bytes)
1992>2049		string	NSR0
1993>>2048		use	NSR0
1994>2049		default	x
1995# look for type descriptor at relative offset 1 of block 17 with size 4096 (valid for images with blocksize of 4096 bytes)
1996>>4097		string	NSR0
1997>>>4096		use	NSR0
1998>>4097		default	x
1999# look for type descriptor at relative offset 1 of block 17 with size 8192 (valid for images with blocksize of 8192 bytes)
2000>>>8193		string	NSR0
2001>>>>8192	use	NSR0
2002>>>8193		default	x
2003# look for type descriptor at relative offset 1 of block 17 with size 16384 (valid for images with blocksize of 16384 bytes)
2004>>>>16385	string	NSR0
2005>>>>>16384	use	NSR0
2006>>>>16385	default	x
2007# look for type descriptor at relative offset 1 of block 17 with size 32768 (valid for images with blocksize of 32768 bytes)
2008>>>>>32769	string	NSR0
2009>>>>>>32768	use	NSR0
2010>>>>>32769	default	x
2011
20120	name	NSR0
2013# NSR02 indicates ISO/IEC 13346 first edition, or ECMA-167 second edition
2014# OSTA UDF 1.x revisions are based on ISO/IEC 13346 first edition
2015# FIXME: This detection is incorrect as it does not detect UDF 1.x, but ECMA-167 2nd
2016>5	ubyte	0x32	UDF filesystem data (version 1.x)
2017#!:mime	application/octet-stream
2018!:mime	application/x-udf-image
2019!:ext	iso/udf
2020# NSR03 indicates ISO/IEC 13346 second edition, or ECMA-167 third edition
2021# OSTA UDF 2.x revisions are based on ECMA-167 third edition
2022# FIXME: This detection is incorrect as it does not detect UDF 2.x, but ECMA-167 3rd
2023>5	ubyte	0x33	UDF filesystem data (version 2.x)
2024#!:mime	application/octet-stream
2025!:mime	application/x-udf-image
2026!:ext	iso/udf
2027
2028# URL: https://en.wikipedia.org/wiki/NRG_(file_format)
2029# Reference: https://dl.opendesktop.org/api/files/download/id/1460731811/
2030#	11577-mount-iso-0.9.5.tar.bz2/mount-iso-0.9.5/install.sh
2031# From: Joerg Jenderek
2032# Note:	Only for nero disc with once (DAO) type after 300 KB header
2033339969	string    CD001	Nero CD image at 0x4B000
2034!:mime	application/x-nrg
2035!:ext	nrg
2036>307200	use cdrom
2037
2038# cramfs filesystem - russell@coker.com.au
20390       lelong    0x28cd3d45      Linux Compressed ROM File System data, little endian
2040>4      lelong  x size %u
2041>8      lelong  &1 version #2
2042>8      lelong  &2 sorted_dirs
2043>8      lelong  &4 hole_support
2044>32     lelong  x CRC %#x,
2045>36     lelong  x edition %u,
2046>40     lelong  x %u blocks,
2047>44     lelong  x %u files
2048
20490       belong    0x28cd3d45      Linux Compressed ROM File System data, big endian
2050>4      belong  x size %u
2051>8      belong  &1 version #2
2052>8      belong  &2 sorted_dirs
2053>8      belong  &4 hole_support
2054>32     belong  x CRC %#x,
2055>36     belong  x edition %u,
2056>40     belong  x %u blocks,
2057>44     belong  x %u files
2058
2059# reiserfs - russell@coker.com.au
20600x10034		string	ReIsErFs	ReiserFS V3.5
20610x10034		string	ReIsEr2Fs	ReiserFS V3.6
20620x10034		string	ReIsEr3Fs	ReiserFS V3.6.19
2063>0x1002c 	leshort	x		block size %d
2064>0x10032	leshort	&2		(mounted or unclean)
2065>0x10000	lelong	x		num blocks %d
2066>0x10040	lelong	1		tea hash
2067>0x10040	lelong	2		yura hash
2068>0x10040	lelong	3		r5 hash
2069
2070# EST flat binary format (which isn't, but anyway)
2071# From: Mark Brown <broonie@sirena.org.uk>
20720	string	ESTFBINR	EST flat binary
2073
2074# Aculab VoIP firmware
2075# From: Mark Brown <broonie@sirena.org.uk>
20760	string	VoIP\ Startup\ and	Aculab VoIP firmware
2077>35	string	x	format %s
2078
2079# From: Mark Brown <broonie@sirena.org.uk> [old]
2080# From: Behan Webster <behanw@websterwood.com>
20810	belong	0x27051956	u-boot legacy uImage,
2082>32	string	x		%s,
2083>28	byte	0		Invalid os/
2084>28	byte	1		OpenBSD/
2085>28	byte	2		NetBSD/
2086>28	byte	3		FreeBSD/
2087>28	byte	4		4.4BSD/
2088>28	byte	5		Linux/
2089>28	byte	6		SVR4/
2090>28	byte	7		Esix/
2091>28	byte	8		Solaris/
2092>28	byte	9		Irix/
2093>28	byte	10		SCO/
2094>28	byte	11		Dell/
2095>28	byte	12		NCR/
2096>28	byte	13		LynxOS/
2097>28	byte	14		VxWorks/
2098>28	byte	15		pSOS/
2099>28	byte	16		QNX/
2100>28	byte	17		Firmware/
2101>28	byte	18		RTEMS/
2102>28	byte	19		ARTOS/
2103>28	byte	20		Unity OS/
2104>28	byte	21		INTEGRITY/
2105>29	byte	0		\bInvalid CPU,
2106>29	byte	1		\bAlpha,
2107>29	byte	2		\bARM,
2108>29	byte	3		\bIntel x86,
2109>29	byte	4		\bIA64,
2110>29	byte	5		\bMIPS,
2111>29	byte	6		\bMIPS 64-bit,
2112>29	byte	7		\bPowerPC,
2113>29	byte	8		\bIBM S390,
2114>29	byte	9		\bSuperH,
2115>29	byte	10		\bSparc,
2116>29	byte	11		\bSparc 64-bit,
2117>29	byte	12		\bM68K,
2118>29	byte	13		\bNios-32,
2119>29	byte	14		\bMicroBlaze,
2120>29	byte	15		\bNios-II,
2121>29	byte	16		\bBlackfin,
2122>29	byte	17		\bAVR32,
2123>29	byte	18		\bSTMicroelectronics ST200,
2124>29	byte	19		\bSandbox architecture,
2125>29	byte	20		\bANDES Technology NDS32,
2126>29	byte	21		\bOpenRISC 1000,
2127>29	byte	22		\bARM 64-bit,
2128>29	byte	23		\bDesignWare ARC,
2129>29	byte	24		\bx86_64,
2130>29	byte	25		\bXtensa,
2131>29	byte	26		\bRISC-V,
2132>30	byte	0		Invalid Image
2133>30	byte	1		Standalone Program
2134>30	byte	2		OS Kernel Image
2135>30	byte	3		RAMDisk Image
2136>30	byte	4		Multi-File Image
2137>30	byte	5		Firmware Image
2138>30	byte	6		Script File
2139>30	byte	7		Filesystem Image (any type)
2140>30	byte	8		Binary Flat Device Tree BLOB
2141>31	byte	0		(Not compressed),
2142>31	byte	1		(gzip),
2143>31	byte	2		(bzip2),
2144>31	byte	3		(lzma),
2145>12	belong	x		%d bytes,
2146>8	bedate	x		%s,
2147>16	belong	x		Load Address: %#08X,
2148>20	belong	x		Entry Point: %#08X,
2149>4	belong	x		Header CRC: %#08X,
2150>24	belong	x		Data CRC: %#08X
2151
2152# JFFS2 file system
21530	leshort	0x1984		Linux old jffs2 filesystem data little endian
21540	beshort	0x1984		Linux old jffs2 filesystem data big endian
21550	leshort	0x1985		Linux jffs2 filesystem data little endian
21560	beshort	0x1985		Linux jffs2 filesystem data big endian
2157
2158# Squashfs
21590	name	squashfs
2160>28	beshort	x	version %d.
2161>30	beshort	x	\b%d,
2162>20	beshort 0	uncompressed,
2163>20	beshort 1	zlib
2164>20	beshort 2	lzma
2165>20	beshort 3	lzo
2166>20	beshort 4	xz
2167>20	beshort 5	lz4
2168>20	beshort 6	zstd
2169>20	beshort >0	compressed,
2170>28	beshort <3
2171>>8	belong	x	%d bytes,
2172>28	beshort >2
2173>>28	beshort <4
2174>>>63	bequad x	%lld bytes,
2175>>28	beshort >3
2176>>>40	bequad x	%lld bytes,
2177#>>67	belong	x	%d bytes,
2178>4	belong	x	%d inodes,
2179>28	beshort <2
2180>>32	beshort	x	blocksize: %d bytes,
2181>28	beshort >1
2182>>28	beshort <4
2183>>>51	belong	x	blocksize: %d bytes,
2184>>28	beshort >3
2185>>>12	belong	x	blocksize: %d bytes,
2186>28	beshort <4
2187>>39	bedate	x	created: %s
2188>28	beshort >3
2189>>8	bedate	x	created: %s
2190
21910	string	sqsh	Squashfs filesystem, big endian,
2192>0	use	squashfs
2193
21940	string	hsqs	Squashfs filesystem, little endian,
2195>0	use	\^squashfs
2196
2197# AFS Dump Magic
2198# From: Ty Sarna <tsarna@sarna.org>
21990       string                  \x01\xb3\xa1\x13\x22    AFS Dump
2200>&0     belong                  x                       (v%d)
2201>>&0    byte                    0x76
2202>>>&0   belong                  x                       Vol %d,
2203>>>>&0  byte                    0x6e
2204>>>>>&0 string                  x                       %s
2205>>>>>>&1        byte            0x74
2206>>>>>>>&0       beshort         2
2207>>>>>>>>&4      bedate          x                       on: %s
2208>>>>>>>>&0      bedate          =0                      full dump
2209>>>>>>>>&0      bedate          !0                      incremental since: %s
2210
2211#----------------------------------------------------------
2212#delta ISO    Daniel Novotny (dnovotny@redhat.com)
22130	string  DISO	Delta ISO data
2214!:strength +50
2215>4	belong  x	version %d
2216
2217# VMS backup savesets - gerardo.cacciari@gmail.com
2218#
22194            string  \x01\x00\x01\x00\x01\x00
2220>(0.s+16)    string  \x01\x01
2221>>&(&0.b+8)  byte    0x42       OpenVMS backup saveset data
2222>>>40        lelong  x          (block size %d,
2223>>>49        string  >\0        original name '%s',
2224>>>2         short   1024       VAX generated)
2225>>>2         short   2048       AXP generated)
2226>>>2         short   4096       I64 generated)
2227
2228# Summary: Oracle Clustered Filesystem
2229# Created by: Aaron Botsis <redhat@digitalmafia.org>
22308	string		OracleCFS	Oracle Clustered Filesystem,
2231>4	long		x		rev %d
2232>0	long		x		\b.%d,
2233>560	string		x		label: %.64s,
2234>136	string		x		mountpoint: %.128s
2235
2236# Oracle ASM tagged volume - Aaron Botsis <redhat@digitalmafia.org>
223732	string		ORCLDISK	Oracle ASM Volume,
2238>40	string		x		Disk Name: %0.12s
223932	string		ORCLCLRD	Oracle ASM Volume (cleared),
2240>40	string		x		Disk Name: %0.12s
2241
2242# Compaq/HP RILOE floppy image
2243# From: Dirk Jagdmann <doj@cubic.org>
22440	string	CPQRFBLO	Compaq/HP RILOE floppy image
2245
2246#------------------------------------------------------------------------------
2247# Files-11 On-Disk Structure (File system for various RSX-11 and VMS flavours).
2248# These bits come from LBN 1 (home block) of ODS-1, ODS-2 and ODS-5 volumes,
2249# which is mapped to VBN 2 of [000000]INDEXF.SYS;1 - gerardo.cacciari@gmail.com
2250#
22511008    string          DECFILE11       Files-11 On-Disk Structure
2252>525    byte            x               (ODS-%d);
2253>1017   string          A               RSX-11, VAX/VMS or OpenVMS VAX file system;
2254>1017   string          B
2255>>525   byte            2               VAX/VMS or OpenVMS file system;
2256>>525   byte            5               OpenVMS Alpha or Itanium file system;
2257>984    string          x               volume label is '%-12.12s'
2258
2259# From: Thomas Klausner <wiz@NetBSD.org>
2260# https://filext.com/file-extension/DAA
2261# describes the daa file format. The magic would be:
22620	string		DAA\x0\x0\x0\x0\x0	PowerISO Direct-Access-Archive
2263
2264# From Albert Cahalan <acahalan@gmail.com>
2265# really le32 operation,destination,payloadsize (but quite predictable)
2266# 01 00 00 00 00 00 00 c0 00 02 00 00
22670	string		\1\0\0\0\0\0\0\300\0\2\0\0	Marvell Libertas firmware
2268
2269# From Eric Sandeen
2270# GFS2
22710x10000         belong          0x01161970
2272>0x10018        belong          0x0000051d      GFS1 Filesystem
2273>>0x10024        belong          x               (blocksize %d,
2274>>0x10060        string          >\0             lockproto %s)
2275>0x10018        belong          0x00000709      GFS2 Filesystem
2276>>0x10024        belong          x               (blocksize %d,
2277>>0x10060        string          >\0             lockproto %s)
2278
2279# Russell Coker <russell@coker.com.au>
22800x10040		string		_BHRfS_M	BTRFS Filesystem
2281>0x1012b	string		>\0		label "%s",
2282>0x10090	lelong		x		sectorsize %d,
2283>0x10094	lelong		x		nodesize %d,
2284>0x10098	lelong		x		leafsize %d,
2285>0x10020	ubelong		x		UUID=%08x-
2286>0x10024	ubeshort	x		\b%04x-
2287>0x10026	ubeshort	x		\b%04x-
2288>0x10028	ubeshort	x		\b%04x-
2289>0x1002a	ubeshort	x		\b%04x
2290>0x1002c	ubelong		x		\b%08x,
2291>0x10078	lequad		x		%lld/
2292>0x10070	lequad		x		\b%lld bytes used,
2293>0x10088	lequad		x		%lld devices
2294
22950		string		btrfs-stream	BTRFS stream file
2296
2297# dvdisaster's .ecc
2298# From: "Nelson A. de Oliveira" <naoliv@gmail.com>
22990	string	*dvdisaster*	dvdisaster error correction file
2300
2301# Type:	CROM filesystem
2302# From:	Werner Fink <werner@suse.de>
23030	string	CROMFS	CROMFS
2304>6	string	>\0	\b version %2.2s,
2305>8	ulequad	>0	\b block data at %lld,
2306>16	ulequad	>0	\b fblock table at %lld,
2307>24	ulequad	>0	\b inode table at %lld,
2308>32	ulequad	>0	\b root at %lld,
2309>40	ulelong	>0	\b fblock size = %d,
2310>44	ulelong	>0	\b block size = %d,
2311>48	ulequad	>0	\b bytes = %lld
2312
2313# Type:	xfs metadump image
2314# From:	Daniel Novotny <dnovotny@redhat.com>
2315# mb_magic XFSM at 0; superblock magic XFSB at 1 << mb_blocklog
2316# but can we do the << ? For now it's always 512 (0x200) anyway.
23170	string	XFSM
2318>0x200	string	XFSB	XFS filesystem metadump image
2319
2320# Type:	delta ISO
2321# From:	Daniel Novotny <dnovotny@redhat.com>
23220	string	DISO	Delta ISO data,
2323>4	belong	x	version %d
2324
2325# JFS2 (Journaling File System) image. (Old JFS1 has superblock at 0x1000.)
2326# See linux/fs/jfs/jfs_superblock.h for layout; see jfs_filsys.h for flags.
2327# From: Adam Buchbinder <adam.buchbinder@gmail.com>
23280x8000	string	JFS1
2329# Because it's text-only magic, check a binary value (version) to be sure.
2330# Should always be 2, but mkfs.jfs writes it as 1. Needs to be 2 or 1 to be
2331# mountable.
2332>&0	lelong	<3	JFS2 filesystem image
2333# Label is followed by a UUID; we have to limit string length to avoid
2334# appending the UUID in the case of a 16-byte label.
2335>>&144	regex	[\x20-\x7E]{1,16}	(label "%s")
2336>>&0	lequad	x	\b, %lld blocks
2337>>&8	lelong	x	\b, blocksize %d
2338>>&32	lelong&0x00000006	>0	(dirty)
2339>>&36	lelong	>0	(compressed)
2340
2341# LFS
23420	lelong	0x070162	LFS filesystem image
2343>4	lelong	1		version 1,
2344>>8	lelong	x		\b blocks %u,
2345>>12	lelong	x		\b blocks per segment %u,
2346>4	lelong	2		version 2,
2347>>8	lelong	x		\b fragments %u,
2348>>12	lelong	x		\b bytes per segment %u,
2349>16	lelong	x		\b disk blocks %u,
2350>20	lelong	x		\b block size %u,
2351>24	lelong	x		\b fragment size %u,
2352>28	lelong	x		\b fragments per block %u,
2353>32	lelong	x		\b start for free list %u,
2354>36	lelong	x		\b number of free blocks %d,
2355>40	lelong	x		\b number of files %u,
2356>44	lelong	x		\b blocks available for writing %d,
2357>48	lelong	x		\b inodes in cache %d,
2358>52	lelong	x		\b inode file disk address %#x,
2359>56	lelong	x		\b inode file inode number %u,
2360>60	lelong	x		\b address of last segment written %#x,
2361>64	lelong	x		\b address of next segment to write %#x,
2362>68	lelong	x		\b address of current segment written %#x
2363
23640	string	td\000		floppy image data (TeleDisk, compressed)
23650	string	TD\000		floppy image data (TeleDisk)
2366
23670	string	CQ\024		floppy image data (CopyQM,
2368>16	leshort	x		%d sectors,
2369>18	leshort	x		%d heads.)
2370
23710	string	ACT\020Apricot\020disk\020image\032\004	floppy image data (ApriDisk)
2372
2373# URL:		http://fileformats.archiveteam.org/wiki/LoadDskF/SaveDskF
2374# Update:	Joerg Jenderek
2375# Note:		called "IBM SKF disk image" by TrID
2376#		verfied by 7-Zip `7z l -tFAT -slt *.dsk` and
2377#		`deark -l -m loaddskf  06200D19.DSK`
2378# Reference:	http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf-old.trid.xml
23790	beshort	0xAA58
2380>0	use		SaveDskF
2381# Reference:	http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf.trid.xml
23820	beshort	0xAA59
2383>0	use		SaveDskF
2384# Reference:	http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf-comp.trid.xml
23850	beshort	0xAA5A
2386# skip foo by additional check for unused upper byte of media type in SaveDskF header
2387#>3	ubyte		=0
2388# skip bar by additional check for valid "low" number of heads in SaveDskF header
2389#>>26	uleshort	<3
2390# skip foo by additional check for unused double word field in SaveDskF header
2391#>>>30	long		=0
2392#>>>>0	use		SaveDskF
2393>0	use		SaveDskF
2394# display information about IBM SaveDskF floppy disk images
23950	name			SaveDskF
2396# SaveDskF magic
2397>0	beshort	x		floppy image data (IBM SaveDskF
2398#!:mime	application/octet-stream
2399!:mime	application/x-ibm-dsk
2400!:ext	dsk
2401# also suffix with digit (1dk .2dk ...); NO example FOUND!
2402#!:ext	dsk/1dk/2dk
2403>1	ubyte		=0x58	\b, old)
2404>1	ubyte		=0x59	\b)
2405>1	ubyte		=0x5A	\b, compressed)
2406# media type; the first byte of the FAT like: 0xF0 (usual floppy) 0xF9 0xFE
2407# https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system
2408>2	ubyte		!0xF0	\b, Media descriptor %#x
2409# upper byte of media type is not used; so this seems to be nil
2410>3	ubyte		!0	\b, upper byte of media type %#x
2411# sector size in bytes as in the BIOS parameter block like: 512 ; SAVEDSKF.EXE with other sizes produce garbage images
2412>4	uleshort	!512	\b, Bytes/sector %u
2413# cluster mask; number of sectors per cluster, minus 1
2414>6	uleshort+1	>1	\b, sectors/cluster %u
2415#>6	uleshort+1	x	\b, sectors/cluster %u
2416# cluster shift; log2(cluster size / sector size) like: 0~1=ClusterSize/SectorSize
2417>7	ubyte		>0	\b, cluster shift %u
2418#>7	ubyte		x	\b, cluster shift %u
2419# reserved sectors; as in the BIOS parameter block like: 1 256 (2M256R-K.DSK)
2420>8	uleshort	>1	\b, reserved sectors %u
2421#>8	uleshort	x	\b, reserved sectors %u
2422# FAT copies; as in the BIOS parameter block like: 2 (usual) 1 (2-NK.DSK)
2423>10	ubyte		!2	\b, FAT
2424# plural s
2425>>10	ubyte		>1	\bs
2426>>10	ubyte		x	%u
2427# root directory entries; as in the BIOS parameter block like: 224 (usual) 64 (H1-NK.DSK) 4096 (2-NK.DSK)
2428>11	uleshort	!224	\b, root entries %u
2429# sector number of first cluster (count sectors used by boot sector, FATs and root directory) like: 7 10 29 33 288
2430>13	uleshort	!33	\b, 1st cluster at sector %u
2431# number of clusters in image; empty clusters at the end are not saved and counted like: 2372 2848
2432>15	uleshort	x	\b, %u clusters
2433# sectors/FAT; as in the BIOS parameter block like: 1 (H1-NK.DSK) 7 9
2434>17	ubyte		!9	\b, sectors/FAT %u
2435# sector number of root directory (ie, count of sectors used by boot sector and FATs) like: 3 (H1-NK.DSK) 9 10 15 19 274 (2M256R-K.DSK)
2436>18	uleshort	!19	\b, root directory at sector %u
2437# checksum; sum of all bytes in the file
2438>20	ulelong		x	\b, checksum %#8.8x
2439# cylinders; number of cylinders like: 40 80
2440>24 	uleshort	!80	\b, %u cylinders
2441#>24 	uleshort	x	\b, %u cylinders
2442# heads; number of heads as in the BIOS parameter block like: 1 (H1-NK.DSK) 2
2443>26	uleshort	!2	\b, heads %u
2444#>26	uleshort	x	\b, heads %u
2445# sectors/track; number of sectors per track as in the BIOS parameter block like: 8 15 18 36
2446>28	uleshort	!18	\b, sectors/track %u
2447#>28	uleshort	x	\b, sectors/track %u
2448# unused double word field seems to be always like: 0
2449>30	ulelong		!0	\b, at 0x1E %#x
2450# number of sectors in images like: 1017 2786 2880
2451>34 	uleshort	x	\b, sectors %u
2452# if string is "printable" it can be a real comment
2453>(36.s)	ubyte		!0x00
2454# if 1st sector is far enough away (> 0x29) then there is space for comment part
2455>>38	uleshort	>41
2456# offset to comment string like: 28h=40
2457>>>36	uleshort	x	\b, at %#x
2458# comment string terminated with \r\n\0
2459>>>(36.s)	string	x	"%s"
2460# offset to the first sector like: 0 (If this is 0, assume it is 0x200) 29h=41 (DISPLAY3.DSK) 31h 43h 45h 46h 48h 50h 200h=512
2461>38	uleshort	!0	\b, 1st sector at %#x
2462# FOR DEBUGGING!
2463#>(38.s)	ubelong		x	SECTOR CONTENT %x
2464# not compressed floppy image implies readable DOS boot sector inside image
2465>>1		ubyte	!0x5A
2466# when not compressed it is readable as DOS boot sector via ./filesystems
2467#>>>(38.s)	indirect x	\b; contains
2468>38	uleshort	=0	\b, 1st sector at 0x200 (0)
2469# maybe standard DOS boot sector; NO example FOUND HERE!
2470#>>0x200	indirect	x	\b; contains
2471
24720	string	\074CPM_Disk\076	disk image data (YAZE)
2473
2474# From: 	Joerg Jenderek
2475# URL:		https://en.wikipedia.org/wiki/Central_Point_Software#cite_note-6
2476# Reference:	https://www.robcraig.com/download/transcopy-5-x-file-format
2477#		https://www.robcraig.com/download/transcopy-file-format-by-gene-thompson
2478#		http://mark0.net/download/triddefs_xml.7z/defs/t/tc-transcopy.trid.xml
2479# TransCopy signature
24800		beshort		0x5AA5
2481# skip Intel serial flash ROM with invalid 0 disk sides handled by ./intel
2482>0x103		ubyte		!0
2483# skip Intel serial flash ROM with unlikely "high" start cylinder 100 handled by ./intel
2484#>>0x101		ubyte		<100		VALID_START_CYLINDER
2485# skip Intel serial flash ROM with unlikely description handled by ./intel
2486#>>>2		beshort		!0xF00f		VALID_DESCRIPTION
2487# skip Intel serial flash ROM with invalid disk types 89h 88h handled by ./intel
2488#>>>>0x100	byte		!0x89		VALID_DISK_TYPE
2489>>0	use	tc-floppy
2490#	display information of Central Point Software (CPS) Option Board TransCopy floppy image
24910	name		tc-floppy
2492>0		beshort		x		TransCopy disk image
2493#!:mime	application/octet-stream
2494!:mime	application/x-floppy-image-tc
2495# like: disk04.tc VOCALC2.TC WIZ5_A.tc WIZ2_720.IMG
2496!:ext	tc/img
2497# 1st description (optional 0-terminated maximal 32) like:
2498# "Project Workbench 2.20" "Visi On Calc" "Wizardry V Disk 1 of 3"
2499>2		string		>\0		%.32s
2500# 2nd desc. (optional 0-terminated maximal 32) like:
2501# "(1988)." "Advanced - Utility" 'Program Disk 2"
2502>0x22		string		>\0		"%.32s"
2503# Looks like ascii (like MESSAGES) formatted with attribute bytes (190)?
2504# not needed for disk copy
2505#>>0x42		string		x		'%.190s'
2506#>>0x88		lestring16	x		"%.8s"
2507# disktype: 2~MFM High Density 3~MFM Double Density 4~Apple II GCR 5~FM Single Density
2508# 6~Commodore GCR 7~MFM Double Density 8~Commodore Amiga Ch~Atari FM FFh~Unknown
2509>0x100		ubyte		!0xFF		\b, disk type %u
2510# StartingCylinder like: 0
2511>0x101		ubyte		x		\b, cylinder
2512>0x101		ubyte		!0		start=%u
2513# EndingCylinder like: 40 (often) 41 79
2514>0x102		ubyte		x		end=%u
2515# NumberOfSides like: 2
2516>0x103		ubyte		!2		\b, %u sides
2517# TrackIncrement like: 1
2518>0x104		ubyte		!1		\b, track increment %u
2519# TrackPosTbl Track skew
2520#>0x105		ubequad		x		\b, Track skew %#16.16llx
2521# TrackOffsTbl
2522#>0x305		ubequad		x		\b, TrackOffsTbl %#16.16llx
2523# TrackLngthTbl
2524#>0x505		ubequad		x		\b, TrackLngthTbl %#16.16llx
2525# TrackTypeTable
2526#>0x705		ubequad		x		\b, TrackTypeTable %#16.16llx
2527# Address mark timing
2528#>0x905		ubequad		x		\b, Address mark timing %#16.16llx
2529# Track fragment
2530#>0x2905 ubequad			!0		\b, Track fragment %#16.16llx
2531# Track data
2532#>0x4000		ubequad		!0		\b, Track data %#16.16llx
2533
2534# ReFS
2535# Richard W.M. Jones <rjones@redhat.com>
25360	string	\0\0\0ReFS\0	ReFS filesystem image
2537
2538# EFW encase image file format:
2539# Gregoire Passault
2540# http://www.forensicswiki.org/wiki/Encase_image_file_format
25410	string	EVF\x09\x0d\x0a\xff\x00	EWF/Expert Witness/EnCase image file format
2542
2543# UBIfs
2544# Linux kernel sources: fs/ubifs/ubifs-media.h
25450	lelong	0x06101831
2546>0x16	leshort	0		UBIfs image
2547>0x08	lequad	x		\b, sequence number %llu
2548>0x10	leshort x		\b, length %u
2549>0x04	lelong	x		\b, CRC %#08x
2550
25510	lelong	0x23494255
2552>0x04	leshort	<2
2553>0x05	string	\0\0\0
2554>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
2555>0x04	leshort	x		UBI image, version %u
2556
2557# NEC PC-88 2D disk image
2558# From Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
25590x20		ulelong&0xFFFFFEFF	0x2A0
2560>0x10		string			\0\0\0\0\0\0\0\0\0\0
2561>>0x280		string			\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
2562>>>0x1A		ubyte&0xEF		0
2563>>>>0x1B	ubyte&0x8F		0
2564>>>>>0x1B	ubyte&70		<0x40
2565>>>>>>0x1C	ulelong			>0x21
2566>>>>>>>0	regex	[[:print:]]*	NEC PC-88 disk image, name=%s
2567>>>>>>>>0x1B	ubyte	0		\b, media=2D
2568>>>>>>>>0x1B	ubyte	0x10		\b, media=2DD
2569>>>>>>>>0x1B	ubyte	0x20		\b, media=2HD
2570>>>>>>>>0x1B	ubyte	0x30		\b, media=1D
2571>>>>>>>>0x1B	ubyte	0x40		\b, media=1DD
2572>>>>>>>>0x1A	ubyte	0x10		\b, write-protected
2573
2574# HDD Raw Copy Tool disk image, file extension: .imgc
2575# From Benjamin Vanheuverzwijn <bvanheu@gmail.com>
25760	pstring	HDD\ Raw\ Copy\ Tool	%s
2577>0x100	pstring	x			%s
2578>0x200	pstring	x			- HD model: %s
2579#>0x300	pstring	x			unknown %s
2580>0x400	pstring	x			serial: %s
2581#>0x500	pstring	x			unknown: %s
2582!:ext	imgc
2583
2584# http://martin.hinner.info/fs/bfs/bfs-structure.html
25850	lelong	0x1BADFACE		SCO UnixWare BFS filesystem
2586
2587# https://arstechnica.com/information-technology/2018/07/the-beos-filesystem/
258832	lelong	0x42465331		BE/OS BFS1 filesystem
2589>36	lelong	x			\b, byte order %d
2590>40	lelong	x			\b, block size %d
2591>44	lelong	x			\b, block shift %d
2592>48	lequad	x			\b, total blocks %lld
2593>56	lequad	x			\b, used blocks %lld
2594
2595
25960	name next
2597>0	lelong	x			\b, size %d
2598>4	string	x			\b, label %s
2599
2600# https://opensource.apple.com/source/IOStorageFamily/IOStorageFamily-44.3\
2601# /IONeXTPartitionScheme.h
26020	string	NeXT			NeXT version 1 disklabel
2603>12	use next
26040	string	dlV1			NeXT version 2 disklabel
2605>12	use next
26060	string	dlV2			NeXT version 3 disklabel
2607>12	use next
2608
2609# bcachefs
2610# From: Thomas Wei�schuh <thomas@t-8ch.de>
2611
26120	name	bcachefs-uuid
2613>0	ubelong		x	\b%08x
2614>4	ubeshort	x	\b-%04x
2615>6	ubeshort	x	\b-%04x
2616>8	ubeshort	x	\b-%04x
2617>10	ubelong		x	\b-%08x
2618>14	ubeshort	x	\b%04x
2619
26200	name	bcachefs	bcachefs
2621>0x68	lequad		8	\b, UUID=
2622>>0x38	use		bcachefs-uuid
2623>>0x48	string		>0	\b, label "%.32s"
2624>>0x10	uleshort	x	\b, version %u
2625>>0x12	uleshort	x	\b, min version %u
2626>>0x7a	byte		x	\b, device %d
2627# assumes the first field is the members field
2628>>0x2f4	ulelong		0x01	\b/UUID=
2629>>>0x2f0	default		x
2630>>>&(0x07a.b*56)	use	bcachefs-uuid
2631>>0x07b	byte		x	\b, %d devices
2632>>0x090	byte		^0x02	\b (unclean)
2633
26340x1018		string		\xc6\x85\x73\xf6\x4e\x1a\x45\xca\x82\x65\xf5\x7f\x48\xba\x6d\x81
2635>0x1000		use		bcachefs
2636
26370x1018          string          \xc6\x85\x73\xf6\x66\xce\x90\xa9\xd9\x6a\x60\xcf\x80\x3d\xf7\xef
2638>0x1000		use		bcachefs
2639
2640# EROFS
2641# https://kernel.googlesource.com/pub/scm/linux/kernel/git/xiang/erofs-utils/\
2642# +/refs/heads/experimental/include/erofs_fs.h#12
26431024		lelong		0xE0F5E1E2	EROFS filesystem
2644#>1028		lelong		x		\b, checksum=%#x
2645>1032		lelong		>0		\b, compat:
2646>>1032		lelong		&1		SB_CHKSUM
2647>>1032		lelong		&2		MTIME
2648>1036		byte		x		\b, blocksize=%u
2649>1037		byte		x		\b, exslots=%u
2650#>1038		leshort		x		\b, root_nid=%d
2651#>1040		lequad		x		\b, inodes=%ld
2652#>1048		leldate		x		\b, build_time=%s
2653#>1056		lelong		x		\b.%d
2654#>1060		lelong		x		\b, blocks=%d
2655#>1064		lelong		x		\b, metadata@%#x
2656#>1068		lelong		x		\b, xattr@%#x
2657>1072		guid		x		\b, uuid=%s
2658>1088		string		>0		\b, name=%s
2659>1104		lelong		>0		\b, incompat:
2660>>1104		lelong		&1		LZ4_0PADDING
2661>>1104		lelong		&2		BIG_PCLUSTER
2662>>1104		lelong		&4		CHUNKED_FILE
2663>>1104		lelong		&8		DEVICE_TABLE
2664>>1104		lelong		&16		ZTAILPACKING
2665
2666# YAFFS
2667# The layout itself is undocumented, determined by the memory layout of the
2668# reference implementation. This signature is derived from the
2669# reference implementation code and generated test cases
2670# We recognize the start of an object header defined by yaffs_obj_hdr:
2671# (Note the values being encoded depending on platform endianess)
2672
2673# u32 type  /* enum yaffs_obj_type, valid 1-5  */
2674# u32 parent_obj_id; /* 1 for root objects we recognize */
2675# u16 sum_no_longer_used; /* checksum of name. Not used by YAFFS and memset to 0xFF */
2676# YCHAR name[YAFFS_MAX_NAME_LENGTH + 1];
2677
2678# mkyaffsimage always writes a root directory with empty name, then processing the target directory contents
2679# mkyaffs2image directly proceeds to writing entries with the appropriate u32 YAFFS_OBJECT_TYPE (1-5 valid), each with parent id 1
2680
26810	name	yaffs
2682>0	ulelong	1	\b, type file
2683>0	ulelong	2	\b, type symlink
2684>0	ulelong	3	\b, type root or directory
2685>0	ulelong	4	\b, type hardlink
2686>0	ulelong	5	\b, type special
2687>0xA	byte	0	\b, v1 root directory
2688>0xA	byte	!0	\b, object entry
2689>>0xA	string	x	(name: "%s")
2690
2691# Little Endian: XX 00 00 00 01 00 00 00 FF FF YY
2692# XX: 01 - 05 (object type)
2693# YY: 00 for version 1 root directory, > 00 for version 2 (name data)
26940x1	string	\x00\x00\x00\x01\x00\x00\x00\xFF\xFF
2695>0	ulelong	0
2696>0	ulelong	>5
2697>0	default	x	YAFFS filesystem root entry (little endian)
2698>>0	use	yaffs
2699
2700# Big Endian: 00 00 00 XX 00 00 00 01 FF FF YY
2701# XX: 01 - 05 (object type)
2702# YY: 00 for version 1 root directory, > 00 for version 2 (name data)
27030x4	string	\x00\x00\x00\x01\xFF\xFF
2704>0	string	\x00\x00\x00
2705>>0	ubelong	0
2706>>0	ubelong	>5
2707>>0	default	x	YAFFS filesystem root entry (big endian)
2708>>>0	use	\^yaffs
2709
2710# littlefs superblock
2711# From: Alexandre Iooss <erdnaxe@crans.org>
2712# URL: https://github.com/littlefs-project/littlefs/blob/v2.9.0/SPEC.md
2713# Match first commit tag, then "littlefs" magic
27144	ulelong		0xf7ff0ff0
2715>8	string		littlefs	littlefs superblock
2716>>22	uleshort	x		\b, version %u
2717>>20	uleshort	x		\b.%u
2718>>24	ulelong		x		\b, block size: %u bytes
2719>>28	ulelong		x		\b, %u blocks
2720
2721# EldOS Corporation SolidFS (aka SolFS)
2722# 256 bytes page size
27230x0	string	\x08\x00\x4e\x57\x20
2724>0x100	string	\x4e\x57\x00\x00\x01
2725>0x1A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 256 bytes page size
2726
2727# 512 bytes page size
27280x0	string	\x09\x00\x4e\x57\x20
2729>0x200	string	\x4e\x57\x00\x00\x01
2730>0x2A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 512 bytes page size
2731
2732# 1 kibibyte page size
27330x0	string	\x0A\x00\x4e\x57\x20
2734>0x400	string	\x4e\x57\x00\x00\x01
2735>0x4A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 1KiB page size
2736
2737# 2 kibibyte page size
27380x0	string	\x0B\x00\x4e\x57\x20
2739>0x800	string	\x4e\x57\x00\x00\x01
2740>0x8A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 2KiB page size
2741
2742# 4 kibibyte page size
27430x0	string	\x0C\x00\x4e\x57\x20
2744>0x1000	string	\x4e\x57\x00\x00\x01
2745>0x10A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 4KiB page size
2746
2747# 8 kibibyte page size
27480x0	string	\x0D\x00\x4e\x57\x20
2749>0x2000	string	\x4e\x57\x00\x00\x01
2750>0x20A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 8KiB page size
2751
2752# 16 kibibyte page size
27530x0	string	\x0E\x00\x4e\x57\x20
2754>0x4000	string	\x4e\x57\x00\x00\x01
2755>0x40A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 16KiB page size
2756
2757# 32 kibibyte page size
27580x0	string	\x0F\x00\x4e\x57\x20
2759>0x8000	string	\x4e\x57\x00\x00\x01
2760>0x80A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 32KiB page size
2761
2762# 64 kibibyte page size
27630x0		string	\x10\x00\x4e\x57\x20
2764>0x10000	string	\x4e\x57\x00\x00\x01
2765>0x100A2	string	\x4C\x00\x40 EldOS Corporation SolidFS, 64KiB page size
2766