linux revision 192348
168349Sobrien#------------------------------------------------------------------------------
268349Sobrien# linux:  file(1) magic for Linux files
368349Sobrien#
468349Sobrien# Values for Linux/i386 binaries, from Daniel Quinlan <quinlan@yggdrasil.com>
568349Sobrien# The following basic Linux magic is useful for reference, but using
668349Sobrien# "long" magic is a better practice in order to avoid collisions.
768349Sobrien#
868349Sobrien# 2	leshort		100		Linux/i386
968349Sobrien# >0	leshort		0407		impure executable (OMAGIC)
1068349Sobrien# >0	leshort		0410		pure executable (NMAGIC)
1168349Sobrien# >0	leshort		0413		demand-paged executable (ZMAGIC)
1268349Sobrien# >0	leshort		0314		demand-paged executable (QMAGIC)
1368349Sobrien#
1468349Sobrien0	lelong		0x00640107	Linux/i386 impure executable (OMAGIC)
1568349Sobrien>16	lelong		0		\b, stripped
1668349Sobrien0	lelong		0x00640108	Linux/i386 pure executable (NMAGIC)
1768349Sobrien>16	lelong		0		\b, stripped
1868349Sobrien0	lelong		0x0064010b	Linux/i386 demand-paged executable (ZMAGIC)
1968349Sobrien>16	lelong		0		\b, stripped
2068349Sobrien0	lelong		0x006400cc	Linux/i386 demand-paged executable (QMAGIC)
2168349Sobrien>16	lelong		0		\b, stripped
2268349Sobrien#
2368349Sobrien0	string		\007\001\000	Linux/i386 object file
2468349Sobrien>20	lelong		>0x1020		\b, DLL library
2568349Sobrien# Linux-8086 stuff:
2668349Sobrien0	string		\01\03\020\04	Linux-8086 impure executable
2768349Sobrien>28	long		!0		not stripped
2868349Sobrien0	string		\01\03\040\04	Linux-8086 executable
2968349Sobrien>28	long		!0		not stripped
3068349Sobrien#
3168349Sobrien0	string		\243\206\001\0	Linux-8086 object file
3268349Sobrien#
3368349Sobrien0	string		\01\03\020\20	Minix-386 impure executable
3468349Sobrien>28	long		!0		not stripped
3568349Sobrien0	string		\01\03\040\20	Minix-386 executable
3668349Sobrien>28	long		!0		not stripped
3768349Sobrien# core dump file, from Bill Reynolds <bill@goshawk.lanl.gov>
3868349Sobrien216	lelong		0421		Linux/i386 core file
3968349Sobrien>220	string		>\0		of '%s'
4068349Sobrien>200	lelong		>0		(signal %d)
4168349Sobrien#
4268349Sobrien# LILO boot/chain loaders, from Daniel Quinlan <quinlan@yggdrasil.com>
4368349Sobrien# this can be overridden by the DOS executable (COM) entry
4468349Sobrien2	string		LILO		Linux/i386 LILO boot/chain loader
4568349Sobrien#
4668349Sobrien# PSF fonts, from H. Peter Anvin <hpa@yggdrasil.com>
4768349Sobrien0	leshort		0x0436		Linux/i386 PC Screen Font data,
4868349Sobrien>2	byte		0		256 characters, no directory,
4968349Sobrien>2	byte		1		512 characters, no directory,
5068349Sobrien>2	byte		2		256 characters, Unicode directory,
5168349Sobrien>2	byte		3		512 characters, Unicode directory,
5268349Sobrien>3	byte		>0		8x%d
5368349Sobrien# Linux swap file, from Daniel Quinlan <quinlan@yggdrasil.com>
5468349Sobrien4086	string		SWAP-SPACE	Linux/i386 swap file
55159764Sobrien# From: Jeff Bailey <jbailey@ubuntu.com>
56159764Sobrien# Linux swap file with swsusp1 image, from Jeff Bailey <jbailey@ubuntu.com>
57159764Sobrien4076	string		SWAPSPACE2S1SUSPEND	Linux/i386 swap file (new style) with SWSUSP1 image
58103373Sobrien# according to man page of mkswap (8) March 1999
59103373Sobrien4086	string		SWAPSPACE2	Linux/i386 swap file (new style)
60133359Sobrien>0x400	long		x		%d (4K pages)
61133359Sobrien>0x404	long		x		size %d pages
62159764Sobrien>>4086	string		SWAPSPACE2	
63159764Sobrien>>>1052	string		>\0		Label %s
6468349Sobrien# ECOFF magic for OSF/1 and Linux (only tested under Linux though)
6568349Sobrien#
6668349Sobrien#	from Erik Troan (ewt@redhat.com) examining od dumps, so this
6768349Sobrien#		could be wrong
6868349Sobrien#      updated by David Mosberger (davidm@azstarnet.com) based on
6968349Sobrien#      GNU BFD and MIPS info found below.
7068349Sobrien#
7168349Sobrien0	leshort		0x0183		ECOFF alpha
7268349Sobrien>24	leshort		0407		executable
7368349Sobrien>24	leshort		0410		pure
7468349Sobrien>24	leshort		0413		demand paged
7568349Sobrien>8	long		>0		not stripped
7668349Sobrien>8	long		0		stripped
7768349Sobrien>23	leshort		>0		- version %ld.
7868349Sobrien#
7968349Sobrien# Linux kernel boot images, from Albert Cahalan <acahalan@cs.uml.edu>
8068349Sobrien# and others such as Axel Kohlmeyer <akohlmey@rincewind.chemie.uni-ulm.de>
8168349Sobrien# and Nicol�s Lichtmaier <nick@debian.org>
8268349Sobrien# All known start with: b8 c0 07 8e d8 b8 00 90 8e c0 b9 00 01 29 f6 29
83133359Sobrien# Linux kernel boot images (i386 arch) (Wolfram Kleff)
84133359Sobrien514	string		HdrS		Linux kernel
85133359Sobrien>510	leshort		0xAA55		x86 boot executable
86186690Sobrien>>518	leshort		>0x1ff
87192348Sdelphij>>>529	byte		0		zImage,
88133359Sobrien>>>529	byte		1		bzImage,
89133359Sobrien>>>(526.s+0x200) string	>\0		version %s,
90133359Sobrien>>498	leshort		1		RO-rootFS,
91133359Sobrien>>498	leshort		0		RW-rootFS,
92133359Sobrien>>508	leshort		>0		root_dev 0x%X,
93133359Sobrien>>502	leshort		>0		swap_dev 0x%X,
94133359Sobrien>>504	leshort		>0		RAMdisksize %u KB,
95133359Sobrien>>506	leshort		0xFFFF		Normal VGA
96133359Sobrien>>506	leshort		0xFFFE		Extended VGA
97133359Sobrien>>506	leshort		0xFFFD		Prompt for Videomode
98133359Sobrien>>506	leshort		>0		Video mode %d
9968349Sobrien# This also matches new kernels, which were caught above by "HdrS".
10068349Sobrien0		belong	0xb8c0078e	Linux kernel
10168349Sobrien>0x1e3		string	Loading		version 1.3.79 or older
10268349Sobrien>0x1e9		string	Loading		from prehistoric times
103133359Sobrien
104133359Sobrien# System.map files - Nicol�s Lichtmaier <nick@debian.org>
105186690Sobrien8	search/1	\ A\ _text	Linux kernel symbol map text
106133359Sobrien
107133359Sobrien# LSM entries - Nicol�s Lichtmaier <nick@debian.org>
108186690Sobrien0	search/1	Begin3	Linux Software Map entry text
109186690Sobrien0	search/1	Begin4	Linux Software Map entry text (new format)
110103373Sobrien
111186690Sobrien# From Matt Zimmerman, enhanced for v3 by Matthew Palmer
112186690Sobrien0	belong	0x4f4f4f4d	User-mode Linux COW file
113186690Sobrien>4	belong	<3		\b, version %d
114186690Sobrien>>8	string	>\0		\b, backing file %s
115186690Sobrien>4	belong	>2		\b, version %d
116186690Sobrien>>32	string	>\0		\b, backing file %s
117133359Sobrien
118103373Sobrien############################################################################
119103373Sobrien# Linux kernel versions
120103373Sobrien
121103373Sobrien0		string		\xb8\xc0\x07\x8e\xd8\xb8\x00\x90	Linux
122103373Sobrien>497		leshort		0		x86 boot sector
123103373Sobrien>>514		belong		0x8e	of a kernel from the dawn of time!
124103373Sobrien>>514		belong		0x908ed8b4	version 0.99-1.1.42
125103373Sobrien>>514		belong		0x908ed8b8	for memtest86
126103373Sobrien
127103373Sobrien>497		leshort		!0		x86 kernel
128103373Sobrien>>504		leshort		>0		RAMdisksize=%u KB
129103373Sobrien>>502		leshort		>0		swap=0x%X
130103373Sobrien>>508		leshort		>0		root=0x%X
131103373Sobrien>>>498		leshort		1		\b-ro
132103373Sobrien>>>498		leshort		0		\b-rw
133103373Sobrien>>506		leshort		0xFFFF		vga=normal
134103373Sobrien>>506		leshort		0xFFFE		vga=extended
135103373Sobrien>>506		leshort		0xFFFD		vga=ask
136103373Sobrien>>506		leshort		>0		vga=%d
137103373Sobrien>>514		belong		0x908ed881	version 1.1.43-1.1.45
138103373Sobrien>>514		belong		0x15b281cd
139103373Sobrien>>>0xa8e	belong		0x55AA5a5a	version 1.1.46-1.2.13,1.3.0
140103373Sobrien>>>0xa99	belong		0x55AA5a5a	version 1.3.1,2
141103373Sobrien>>>0xaa3	belong		0x55AA5a5a	version 1.3.3-1.3.30
142103373Sobrien>>>0xaa6	belong		0x55AA5a5a	version 1.3.31-1.3.41
143103373Sobrien>>>0xb2b	belong		0x55AA5a5a	version 1.3.42-1.3.45
144103373Sobrien>>>0xaf7	belong		0x55AA5a5a	version 1.3.46-1.3.72
145103373Sobrien>>514		string		HdrS
146103373Sobrien>>>518		leshort		>0x1FF
147103373Sobrien>>>>529		byte		0		\b, zImage
148103373Sobrien>>>>529		byte		1		\b, bzImage
149103373Sobrien>>>>(526.s+0x200) string 	>\0		\b, version %s
150103373Sobrien
151103373Sobrien# Linux boot sector thefts.
152103373Sobrien0		belong		0xb8c0078e	Linux
153103373Sobrien>0x1e6		belong		0x454c4b53	ELKS Kernel
154103373Sobrien>0x1e6		belong		!0x454c4b53	style boot sector
155103373Sobrien
156103373Sobrien############################################################################
157103373Sobrien# Linux 8086 executable
158103373Sobrien0	lelong&0xFF0000FF 0xC30000E9	Linux-Dev86 executable, headerless
159103373Sobrien>5	string		.		
160103373Sobrien>>4	string		>\0		\b, libc version %s
161103373Sobrien
162103373Sobrien0	lelong&0xFF00FFFF 0x4000301	Linux-8086 executable
163103373Sobrien>2	byte&0x01	!0		\b, unmapped zero page
164103373Sobrien>2	byte&0x20	0		\b, impure
165103373Sobrien>2	byte&0x20	!0
166103373Sobrien>>2	byte&0x10	!0		\b, A_EXEC
167103373Sobrien>2	byte&0x02	!0		\b, A_PAL
168103373Sobrien>2	byte&0x04	!0		\b, A_NSYM
169103373Sobrien>2	byte&0x08	!0		\b, A_STAND
170103373Sobrien>2	byte&0x40	!0		\b, A_PURE
171103373Sobrien>2	byte&0x80	!0		\b, A_TOVLY
172103373Sobrien>28     long            !0              \b, not stripped
173103373Sobrien>37	string		.		
174103373Sobrien>>36	string		>\0		\b, libc version %s
175103373Sobrien
176103373Sobrien# 0	lelong&0xFF00FFFF 0x10000301	ld86 I80386 executable
177103373Sobrien# 0	lelong&0xFF00FFFF 0xB000301	ld86 M68K executable
178103373Sobrien# 0	lelong&0xFF00FFFF 0xC000301	ld86 NS16K executable
179103373Sobrien# 0	lelong&0xFF00FFFF 0x17000301	ld86 SPARC executable
180103373Sobrien
181139368Sobrien# SYSLINUX boot logo files (from 'ppmtolss16' sources)
182139368Sobrien# http://syslinux.zytor.com/
183139368Sobrien#
184139368Sobrien0	lelong	=0x1413f33d		SYSLINUX' LSS16 image data
185139368Sobrien>4	leshort	x			\b, width %d
186139368Sobrien>6	leshort	x			\b, height %d
187159764Sobrien
188159764Sobrien0	string	OOOM			User-Mode-Linux's Copy-On-Write disk image
189159764Sobrien>4	belong	x			version %d
190159764Sobrien
191159764Sobrien# SE Linux policy database
192159764Sobrien# From: Mike Frysinger <vapier@gentoo.org>
193159764Sobrien0	lelong	0xf97cff8c		SE Linux policy
194159764Sobrien>16	lelong	x			v%d
195159764Sobrien>20	lelong	1			MLS
196159764Sobrien>24	lelong	x			%d symbols
197159764Sobrien>28	lelong	x			%d ocons
198159764Sobrien
199159764Sobrien# Linux Logical Volume Manager (LVM) 
200159764Sobrien# Emmanuel VARAGNAT <emmanuel.varagnat@guzu.net>
201159764Sobrien#
202159764Sobrien# System ID, UUID and volume group name are 128 bytes long
203159764Sobrien# but they should never be full and initialized with zeros...
204159764Sobrien#
205159764Sobrien# LVM1
206159764Sobrien#
207159764Sobrien0x0	string	HM\001		LVM1 (Linux Logical Volume Manager), version 1
208159764Sobrien>0x12c	string	>\0		, System ID: %s
209159764Sobrien
210159764Sobrien0x0	string	HM\002		LVM1 (Linux Logical Volume Manager), version 2
211159764Sobrien>0x12c	string	>\0		, System ID: %s
212159764Sobrien
213159764Sobrien#  LVM2
214159764Sobrien#
215159764Sobrien# It seems that the label header can be in one the four first sector
216159764Sobrien# of the disk... (from _find_labeller in lib/label/label.c of LVM2)
217159764Sobrien#
218159764Sobrien# 0x200 seems to be the common case
219159764Sobrien
220159764Sobrien0x218		 string	LVM2\ 001	LVM2 (Linux Logical Volume Manager)
221159764Sobrien# read the offset to add to the start of the header, and the header
222159764Sobrien# start in 0x200
223159764Sobrien>(0x214.l+0x200) string	>\0		, UUID: %s
224159764Sobrien
225159764Sobrien0x018		 string	LVM2\ 001	LVM2 (Linux Logical Volume Manager)
226159764Sobrien>(0x014.l)	 string	>\0		, UUID: %s
227159764Sobrien
228159764Sobrien0x418		 string	LVM2\ 001	LVM2 (Linux Logical Volume Manager)
229159764Sobrien>(0x414.l+0x400) string	>\0		, UUID: %s
230159764Sobrien
231159764Sobrien0x618		 string	LVM2\ 001	LVM2 (Linux Logical Volume Manager)
232159764Sobrien>(0x614.l+0x600) string	>\0		, UUID: %s
233169942Sobrien
234186690Sobrien# LVM snapshot
235186690Sobrien# from Jason Farrel
236186690Sobrien0	string	SnAp	LVM Snapshot (CopyOnWrite store)
237186690Sobrien>4	lelong	!0	- valid,
238186690Sobrien>4	lelong	0	- invalid,
239186690Sobrien>8	lelong	x	version %d,
240186690Sobrien>12	lelong	x	chunk_size %d
241186690Sobrien
242169942Sobrien# SE Linux policy database
243169942Sobrien0	lelong	0xf97cff8c		SE Linux policy
244169942Sobrien>16	lelong	x			v%d
245169942Sobrien>20	lelong	1			MLS
246169942Sobrien>24	lelong	x			%d symbols
247169942Sobrien>28	lelong	x			%d ocons
248169962Sobrien
249169962Sobrien# LUKS: Linux Unified Key Setup, On-Disk Format, http://luks.endorphin.org/spec
250169962Sobrien# Anthon van der Neut (anthon@mnt.org)
251169962Sobrien0	string	LUKS\xba\xbe	LUKS encrypted file,
252169962Sobrien>6	beshort x		ver %d
253169962Sobrien>8	string	x		[%s,
254169962Sobrien>40	string	x		%s,
255169962Sobrien>72	string	x		%s]
256169962Sobrien>168	string	x		UUID: %s
257169962Sobrien
258186690Sobrien
259186690Sobrien# Summary: Xen saved domain file
260186690Sobrien# Created by: Radek Vokal <rvokal@redhat.com>
261186690Sobrien0	string		LinuxGuestRecord	Xen saved domain
262186690Sobrien>20	search/256	(name			
263186690Sobrien>>&1	string		x			(name %s)
264186690Sobrien
265