xref: /dflybsd-src/contrib/file/magic/Magdir/apple (revision 7b80531f545c7d3c51c1660130c71d01f6bccbe0)
1f72f8299SJan Lentfer
2327e51cbSPeter Avalos#------------------------------------------------------------------------------
3*614728caSSascha Wildner# $File: apple,v 1.45 2021/04/26 15:56:00 christos Exp $
4327e51cbSPeter Avalos# apple:  file(1) magic for Apple file formats
5327e51cbSPeter Avalos#
6e4d4ce0cSPeter Avalos0	search/1/t	FiLeStArTfIlEsTaRt	binscii (apple ][) text
7327e51cbSPeter Avalos0	string		\x0aGL			Binary II (apple ][) data
8327e51cbSPeter Avalos0	string		\x76\xff		Squeezed (apple ][) data
9327e51cbSPeter Avalos0	string		NuFile			NuFile archive (apple ][) data
10327e51cbSPeter Avalos0	string		N\xf5F\xe9l\xe5		NuFile archive (apple ][) data
11327e51cbSPeter Avalos0	belong		0x00051600		AppleSingle encoded Macintosh file
12327e51cbSPeter Avalos0	belong		0x00051607		AppleDouble encoded Macintosh file
13327e51cbSPeter Avalos
146fca56fbSSascha Wildner# Type: Apple Emulator WOZ format
156fca56fbSSascha Wildner# From: Greg Wildman <greg@apple2.org.za>
166fca56fbSSascha Wildner# Ref: https://applesaucefdc.com/woz/reference/
176fca56fbSSascha Wildner# Ref: https://applesaucefdc.com/woz/reference2/
186fca56fbSSascha Wildner#
196fca56fbSSascha Wildner# Note: The following test are mostly identical. I would rather not
206fca56fbSSascha Wildner# use a regex to identify the WOZ format number.
216fca56fbSSascha Wildner0	string		WOZ1
226fca56fbSSascha Wildner>4	string		\xFF\x0A\x0D\x0A	Apple ][ WOZ 1.0 Disk Image
236fca56fbSSascha Wildner>12	string		INFO
246fca56fbSSascha Wildner>>21	byte		01			\b, 5.25 inch
256fca56fbSSascha Wildner>>21	byte		02			\b, 3.5 inch
266fca56fbSSascha Wildner>>22	byte		01			\b, write protected
276fca56fbSSascha Wildner>>23	byte		01			\b, cross track synchronized
286fca56fbSSascha Wildner>>25	string/T	x			\b, %.32s
296fca56fbSSascha Wildner0	string		WOZ2
306fca56fbSSascha Wildner>4	string		\xFF\x0A\x0D\x0A	Apple ][ WOZ 2.0 Disk Image
316fca56fbSSascha Wildner>12	string		INFO
326fca56fbSSascha Wildner>>21	byte		01			\b, 5.25 inch
336fca56fbSSascha Wildner>>21	byte		02			\b, 3.5 inch
346fca56fbSSascha Wildner>>22	byte		01			\b, write protected
356fca56fbSSascha Wildner>>23	byte		01			\b, cross track synchronized
366fca56fbSSascha Wildner>>25	string/T	x			\b, %.32s
376fca56fbSSascha Wildner
386fca56fbSSascha Wildner# Type: Apple Emulator disk images
396fca56fbSSascha Wildner# From: Greg Wildman <greg@apple2.org.za>
406fca56fbSSascha Wildner# ProDOS boot loader?
416fca56fbSSascha Wildner0		string	\x01\x38\xB0\x03\x4C	Apple ProDOS Image
426fca56fbSSascha Wildner# Detect Volume Directory block ($02)
436fca56fbSSascha Wildner>0x400		string	\x00\x00\x03\x00
446fca56fbSSascha Wildner>>0x404		byte	&0xF0
456fca56fbSSascha Wildner>>>0x405	string	x			\b, Volume /%s
466fca56fbSSascha Wildner>>>0x429	leshort	x			\b, %u Blocks
476fca56fbSSascha Wildner# ProDOS ordered ?
486fca56fbSSascha Wildner>0xb00		string	\x00\x00\x03\x00
496fca56fbSSascha Wildner>>0xb04		byte	&0xF0
506fca56fbSSascha Wildner>>>0xb05	string	x			\b, Volume /%s
516fca56fbSSascha Wildner>>>0xb29	leshort	x			\b, %u Blocks
526fca56fbSSascha Wildner#
536fca56fbSSascha Wildner# DOS3.3 boot loader?
546fca56fbSSascha Wildner0		string	\x01\xA5\x27\xC9\x09\xD0\x18\xA5\x2B
556fca56fbSSascha Wildner>0x11001	string	\x11\x0F\x03	Apple DOS 3.3 Image
566fca56fbSSascha Wildner>>0x11006	byte	x		\b, Volume %u
576fca56fbSSascha Wildner>>0x11034	byte	x		\b, %u Tracks
586fca56fbSSascha Wildner>>0x11035	byte	x		\b, %u Sectors
596fca56fbSSascha Wildner>>0x11036	leshort	x		\b, %u bytes per sector
606fca56fbSSascha Wildner# DOS3.2 ?
616fca56fbSSascha Wildner>0x11001	string	\x11\x0C\x02	Apple DOS 3.2 Image
626fca56fbSSascha Wildner>>0x11006	byte	x		\b, Volume %u
636fca56fbSSascha Wildner>>0x11034	byte	x		\b, %u Tracks
646fca56fbSSascha Wildner>>0x11035	byte	x		\b, %u Sectors
656fca56fbSSascha Wildner>>0x11036	leshort	x		\b, %u bytes per sector
666fca56fbSSascha Wildner# DOS3.1 ?
676fca56fbSSascha Wildner>0x11001	string	\x11\x0C\x01
686fca56fbSSascha Wildner>>0x11c00	string	\x00\x11\x0B	Apple DOS 3.1 Image
696fca56fbSSascha Wildner#
706fca56fbSSascha Wildner# Pascal boot loader?
716fca56fbSSascha Wildner0		string	\x01\xE0\x60\xF0\x03\x4C\xE3\x08\xAD
726fca56fbSSascha Wildner>0xd6		pstring SYSTEM.APPLE
736fca56fbSSascha Wildner>>0xb00		leshort	0x0000
746fca56fbSSascha Wildner>>>0xb04	leshort 0x0000		Apple Pascal Image
756fca56fbSSascha Wildner>>>>0xb06	pstring x		\b, Volume %s:
766fca56fbSSascha Wildner>>>>0xb0e	leshort x		\b, %u Blocks
776fca56fbSSascha Wildner>>>>0xb10	leshort x		\b, %u Files
786fca56fbSSascha Wildner#
796fca56fbSSascha Wildner# Diversi Dos boot loader?
806fca56fbSSascha Wildner0		string	\x01\xA8\xAD\x81\xC0\xEE\x09\x08\xAD
816fca56fbSSascha Wildner>0x11001	string	\x11\x0F\x03	Apple Diversi Dos Image
826fca56fbSSascha Wildner>>0x11006	byte	x		\b, Volume %u
836fca56fbSSascha Wildner>>0x11034	byte	x		\b, %u Tracks
846fca56fbSSascha Wildner>>0x11035	byte	x		\b, %u Sectors
856fca56fbSSascha Wildner>>0x11036	leshort	x		\b, %u bytes per sector
866fca56fbSSascha Wildner
8779343712SPeter Avalos# Type: Apple Emulator 2IMG format
8879343712SPeter Avalos# From: Radek Vokal <rvokal@redhat.com>
896fca56fbSSascha Wildner# Update: Greg Wildman <greg@apple2.org.za>
9079343712SPeter Avalos0		string	2IMG		Apple ][ 2IMG Disk Image
916fca56fbSSascha Wildner>4		clear	x
9279343712SPeter Avalos>4		string	XGS!		\b, XGS
9379343712SPeter Avalos>4		string	CTKG		\b, Catakig
9479343712SPeter Avalos>4		string	ShIm		\b, Sheppy's ImageMaker
956fca56fbSSascha Wildner>4		string	SHEP		\b, Sheppy's ImageMaker
9679343712SPeter Avalos>4		string	WOOF		\b, Sweet 16
9779343712SPeter Avalos>4		string	B2TR		\b, Bernie ][ the Rescue
986fca56fbSSascha Wildner>4		string	\!nfc		\b, ASIMOV2
996fca56fbSSascha Wildner>4		string	\>BD\<		\b, Brutal Deluxe's Cadius
1006fca56fbSSascha Wildner>4		string	CdrP		\b, CiderPress
1016fca56fbSSascha Wildner>4		string	Vi][		\b, Virtual ][
1026fca56fbSSascha Wildner>4		string	PRFS		\b, ProFUSE
1036fca56fbSSascha Wildner>4		string	FISH		\b, FishWings
1046fca56fbSSascha Wildner>4		string	RVLW		\b, Revival for Windows
1056fca56fbSSascha Wildner>4		default	x
1066fca56fbSSascha Wildner>>4		string	x		\b, Creator tag "%-4.4s"
10779343712SPeter Avalos>0xc		byte	00		\b, DOS 3.3 sector order
10879343712SPeter Avalos>>0x10		byte	00		\b, Volume 254
10979343712SPeter Avalos>>0x10		byte&0x7f x		\b, Volume %u
11079343712SPeter Avalos>0xc		byte	01		\b, ProDOS sector order
1116fca56fbSSascha Wildner# Detect Volume Directory block ($02) + 2mg header offset
1126fca56fbSSascha Wildner>>0x440		string	\x00\x00\x03\x00
1136fca56fbSSascha Wildner>>>0x444	byte	&0xF0
1146fca56fbSSascha Wildner>>>>0x445	string	x		\b, Volume /%s
1156fca56fbSSascha Wildner>>>>0x469	leshort	x		\b, %u Blocks
11679343712SPeter Avalos>0xc		byte	02		\b, NIB data
11779343712SPeter Avalos
118327e51cbSPeter Avalos# magic for Newton PDA package formats
119327e51cbSPeter Avalos# from Ruda Moura <ruda@helllabs.org>
120327e51cbSPeter Avalos0	string	package0	Newton package, NOS 1.x,
121327e51cbSPeter Avalos>12	belong	&0x80000000	AutoRemove,
122327e51cbSPeter Avalos>12	belong	&0x40000000	CopyProtect,
123327e51cbSPeter Avalos>12	belong	&0x10000000	NoCompression,
124327e51cbSPeter Avalos>12	belong	&0x04000000	Relocation,
125327e51cbSPeter Avalos>12	belong	&0x02000000	UseFasterCompression,
126327e51cbSPeter Avalos>16	belong	x		version %d
127327e51cbSPeter Avalos
128327e51cbSPeter Avalos0	string	package1	Newton package, NOS 2.x,
129327e51cbSPeter Avalos>12	belong	&0x80000000	AutoRemove,
130327e51cbSPeter Avalos>12	belong	&0x40000000	CopyProtect,
131327e51cbSPeter Avalos>12	belong	&0x10000000	NoCompression,
132327e51cbSPeter Avalos>12	belong	&0x04000000	Relocation,
133327e51cbSPeter Avalos>12	belong	&0x02000000	UseFasterCompression,
134327e51cbSPeter Avalos>16	belong	x		version %d
135327e51cbSPeter Avalos
136327e51cbSPeter Avalos0	string	package4	Newton package,
137327e51cbSPeter Avalos>8	byte	8		NOS 1.x,
138327e51cbSPeter Avalos>8	byte	9		NOS 2.x,
139327e51cbSPeter Avalos>12	belong	&0x80000000	AutoRemove,
140327e51cbSPeter Avalos>12	belong	&0x40000000	CopyProtect,
141327e51cbSPeter Avalos>12	belong	&0x10000000	NoCompression,
142327e51cbSPeter Avalos
143327e51cbSPeter Avalos# The following entries for the Apple II are for files that have
144327e51cbSPeter Avalos# been transferred as raw binary data from an Apple, without having
145327e51cbSPeter Avalos# been encapsulated by any of the above archivers.
146327e51cbSPeter Avalos#
147327e51cbSPeter Avalos# In general, Apple II formats are hard to identify because Apple DOS
148327e51cbSPeter Avalos# and especially Apple ProDOS have strong typing in the file system and
149327e51cbSPeter Avalos# therefore programmers never felt much need to include type information
150327e51cbSPeter Avalos# in the files themselves.
151327e51cbSPeter Avalos#
152327e51cbSPeter Avalos# Eric Fischer <enf@pobox.com>
153327e51cbSPeter Avalos
154327e51cbSPeter Avalos# AppleWorks word processor:
155c30bd091SSascha Wildner# URL: https://en.wikipedia.org/wiki/AppleWorks
156c30bd091SSascha Wildner# Reference: http://www.gno.org/pub/apple2/doc/apple/filetypes/ftn.1a.xxxx
157c30bd091SSascha Wildner# Update: Joerg Jenderek
158c30bd091SSascha Wildner# NOTE:
159327e51cbSPeter Avalos# The "O" is really the magic number, but that's so common that it's
160327e51cbSPeter Avalos# necessary to check the tab stops that follow it to avoid false positives.
161c30bd091SSascha Wildner# and/or look for unused bits of booleans bytes like zoom, paginated, mail merge
162c30bd091SSascha Wildner# the newer AppleWorks is from claris with extension CWK
163c30bd091SSascha Wildner4	string		O
164c30bd091SSascha Wildner# test for unused bits of zoom- , paginated-boolean bytes
165c30bd091SSascha Wildner>84	ubequad		^0x00Fe00000000Fe00
166c30bd091SSascha Wildner# look for tabstop definitions "=" no tab, "|" no tab
167c30bd091SSascha Wildner# "<" left tab,"^" center tab,">" right tab, "." decimal tab,
168c30bd091SSascha Wildner# unofficial "!" other , "\x8a" other
169c30bd091SSascha Wildner# official only if SFMinVers is nonzero
170c30bd091SSascha Wildner>>5	regex/s	[=.<>|!^\x8a]{79}	AppleWorks Word Processor
171c30bd091SSascha Wildner# AppleWorks Word Processor File (Apple II)
172c30bd091SSascha Wildner# ./apple (version 5.25) labeled the entry as "AppleWorks word processor data"
173c30bd091SSascha Wildner# application/x-appleworks is mime type for claris version with cwk extension
174c30bd091SSascha Wildner!:mime	application/x-appleworks3
175c30bd091SSascha Wildner# http://home.earthlink.net/~hughhood/appleiiworksenvoy/
176c30bd091SSascha Wildner# ('p' + 1-byte ProDOS File Type + 2-byte ProDOS Aux Type')
177c30bd091SSascha Wildner# $70 $1A $F8 $FF is this the apple type ?
1786fca56fbSSascha Wildner#:apple pdosp^Z\xf8\xff
179c30bd091SSascha Wildner!:ext awp
180c30bd091SSascha Wildner# minimum version needed to read this files. SFMinVers (0 , 30~3.0 )
181c30bd091SSascha Wildner>>>183	ubyte		30	3.0
182c30bd091SSascha Wildner>>>183	ubyte		!30
183*614728caSSascha Wildner>>>>183	ubyte		!0	%#x
184c30bd091SSascha Wildner# usual tabstop start sequence "=====<"
185c30bd091SSascha Wildner>>>5	string		x	\b, tabstop ruler "%6.6s"
186c30bd091SSascha Wildner# tabstop ruler
187c30bd091SSascha Wildner#>>>5	string		>\0	\b, tabstops "%-79s"
188c30bd091SSascha Wildner# zoom switch
189c30bd091SSascha Wildner>>>85	  byte&0x01	>0	\b, zoomed
190c30bd091SSascha Wildner# whether paginated
191c30bd091SSascha Wildner>>>90	  byte&0x01	>0	\b, paginated
192c30bd091SSascha Wildner# contains any mail-merge commands
193c30bd091SSascha Wildner>>>92	  byte&0x01	>0	\b, with mail merge
194c30bd091SSascha Wildner# left margin in 1/10 inches ( normally 0 or 10 )
195c30bd091SSascha Wildner>>>91	ubyte		>0
196c30bd091SSascha Wildner>>>>91	ubyte		x	\b, %d/10 inch left margin
197327e51cbSPeter Avalos
198327e51cbSPeter Avalos# AppleWorks database:
199327e51cbSPeter Avalos#
200327e51cbSPeter Avalos# This isn't really a magic number, but it's the closest thing to one
201327e51cbSPeter Avalos# that I could find.  The 1 and 2 really mean "order in which you defined
202327e51cbSPeter Avalos# categories" and "left to right, top to bottom," respectively; the D and R
203327e51cbSPeter Avalos# mean that the cursor should move either down or right when you press Return.
204327e51cbSPeter Avalos
205327e51cbSPeter Avalos#30	string		\x01D	AppleWorks database data
206327e51cbSPeter Avalos#30	string		\x02D	AppleWorks database data
207327e51cbSPeter Avalos#30	string		\x01R	AppleWorks database data
208327e51cbSPeter Avalos#30	string		\x02R	AppleWorks database data
209327e51cbSPeter Avalos
210327e51cbSPeter Avalos# AppleWorks spreadsheet:
211327e51cbSPeter Avalos#
212327e51cbSPeter Avalos# Likewise, this isn't really meant as a magic number.  The R or C means
213327e51cbSPeter Avalos# row- or column-order recalculation; the A or M means automatic or manual
214327e51cbSPeter Avalos# recalculation.
215327e51cbSPeter Avalos
216327e51cbSPeter Avalos#131	string		RA	AppleWorks spreadsheet data
217327e51cbSPeter Avalos#131	string		RM	AppleWorks spreadsheet data
218327e51cbSPeter Avalos#131	string		CA	AppleWorks spreadsheet data
219327e51cbSPeter Avalos#131	string		CM	AppleWorks spreadsheet data
220327e51cbSPeter Avalos
221327e51cbSPeter Avalos# Applesoft BASIC:
222327e51cbSPeter Avalos#
223327e51cbSPeter Avalos# This is incredibly sloppy, but will be true if the program was
224327e51cbSPeter Avalos# written at its usual memory location of 2048 and its first line
225327e51cbSPeter Avalos# number is less than 256.  Yuck.
226e8af9738SPeter Avalos# update by Joerg Jenderek at Feb 2013
227327e51cbSPeter Avalos
228e8af9738SPeter Avalos# GRR: this test is still too general as it catches also Gujin BOOT144.SYS (0xfa080000)
229e8af9738SPeter Avalos#0       belong&0xff00ff 0x80000 Applesoft BASIC program data
230e8af9738SPeter Avalos0	belong&0x00ff00ff	0x00080000
231e8af9738SPeter Avalos# assuming that line number must be positive
232e8af9738SPeter Avalos>2	leshort			>0		Applesoft BASIC program data, first line number %d
233327e51cbSPeter Avalos#>2     leshort         x       \b, first line number %d
234327e51cbSPeter Avalos
235327e51cbSPeter Avalos# ORCA/EZ assembler:
236327e51cbSPeter Avalos#
237327e51cbSPeter Avalos# This will not identify ORCA/M source files, since those have
238327e51cbSPeter Avalos# some sort of date code instead of the two zero bytes at 6 and 7
239327e51cbSPeter Avalos# XXX Conflicts with ELF
240327e51cbSPeter Avalos#4       belong&0xff00ffff       0x01000000      ORCA/EZ assembler source data
241327e51cbSPeter Avalos#>5      byte                    x               \b, build number %d
242327e51cbSPeter Avalos
243327e51cbSPeter Avalos# Broderbund Fantavision
244327e51cbSPeter Avalos#
245327e51cbSPeter Avalos# I don't know what these values really mean, but they seem to recur.
246327e51cbSPeter Avalos# Will they cause too many conflicts?
247327e51cbSPeter Avalos
248327e51cbSPeter Avalos# Probably :-)
249327e51cbSPeter Avalos#2	belong&0xFF00FF		0x040008	Fantavision movie data
250327e51cbSPeter Avalos
251327e51cbSPeter Avalos# Some attempts at images.
252327e51cbSPeter Avalos#
253327e51cbSPeter Avalos# These are actually just bit-for-bit dumps of the frame buffer, so
254327e51cbSPeter Avalos# there's really no reasonably way to distinguish them except for their
255327e51cbSPeter Avalos# address (if preserved) -- 8192 or 16384 -- and their length -- 8192
256327e51cbSPeter Avalos# or, occasionally, 8184.
257327e51cbSPeter Avalos#
258327e51cbSPeter Avalos# Nevertheless this will manage to catch a lot of images that happen
259327e51cbSPeter Avalos# to have a solid-colored line at the bottom of the screen.
260327e51cbSPeter Avalos
26179343712SPeter Avalos# GRR: Magic too weak
26279343712SPeter Avalos#8144	string	\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F	Apple II image with white background
26379343712SPeter Avalos#8144	string	\x55\x2A\x55\x2A\x55\x2A\x55\x2A	Apple II image with purple background
26479343712SPeter Avalos#8144	string	\x2A\x55\x2A\x55\x2A\x55\x2A\x55	Apple II image with green background
26579343712SPeter Avalos#8144	string	\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA	Apple II image with blue background
26679343712SPeter Avalos#8144	string	\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5	Apple II image with orange background
267327e51cbSPeter Avalos
268327e51cbSPeter Avalos# Beagle Bros. Apple Mechanic fonts
269327e51cbSPeter Avalos
270327e51cbSPeter Avalos0	belong&0xFF00FFFF	0x6400D000	Apple Mechanic font
271327e51cbSPeter Avalos
272327e51cbSPeter Avalos# Apple Universal Disk Image Format (UDIF) - dmg files.
273327e51cbSPeter Avalos# From Johan Gade.
274327e51cbSPeter Avalos# These entries are disabled for now until we fix the following issues.
275327e51cbSPeter Avalos#
276327e51cbSPeter Avalos# Note there might be some problems with the "VAX COFF executable"
277327e51cbSPeter Avalos# entry. Note this entry should be placed before the mac filesystem section,
278327e51cbSPeter Avalos# particularly the "Apple Partition data" entry.
279327e51cbSPeter Avalos#
280327e51cbSPeter Avalos# The intended meaning of these tests is, that the file is only of the
281327e51cbSPeter Avalos# specified type if both of the lines are correct - i.e. if the first
282327e51cbSPeter Avalos# line matches and the second doesn't then it is not of that type.
283327e51cbSPeter Avalos#
284327e51cbSPeter Avalos#0	long	0x7801730d
285327e51cbSPeter Avalos#>4	long	0x62626060	UDIF read-only zlib-compressed image (UDZO)
286327e51cbSPeter Avalos#
287327e51cbSPeter Avalos# Note that this entry is recognized correctly by the "Apple Partition
288327e51cbSPeter Avalos# data" entry - however since this entry is more specific - this
289327e51cbSPeter Avalos# information seems to be more useful.
290327e51cbSPeter Avalos#0	long	0x45520200
291327e51cbSPeter Avalos#>0x410	string	disk\ image	UDIF read/write image (UDRW)
292327e51cbSPeter Avalos
293327e51cbSPeter Avalos# From: Toby Peterson <toby@apple.com>
294327e51cbSPeter Avalos0	string	bplist00	Apple binary property list
295327e51cbSPeter Avalos
296327e51cbSPeter Avalos# Apple binary property list (bplist)
297327e51cbSPeter Avalos#  Assumes version bytes are hex.
298327e51cbSPeter Avalos#  Provides content hints for version 0 files. Assumes that the root
299327e51cbSPeter Avalos#  object is the first object (true for CoreFoundation implementation).
300327e51cbSPeter Avalos# From: David Remahl <dremahl@apple.com>
301327e51cbSPeter Avalos0		string	bplist
302*614728caSSascha Wildner>6		byte	x	\bCoreFoundation binary property list data, version %#c
303327e51cbSPeter Avalos>>7		byte	x	\b%c
304327e51cbSPeter Avalos>6		string		00		\b
305327e51cbSPeter Avalos>>8		byte&0xF0	0x00	\b
306327e51cbSPeter Avalos>>>8	byte&0x0F	0x00	\b, root type: null
307327e51cbSPeter Avalos>>>8	byte&0x0F	0x08	\b, root type: false boolean
308327e51cbSPeter Avalos>>>8	byte&0x0F	0x09	\b, root type: true boolean
309327e51cbSPeter Avalos>>8		byte&0xF0	0x10	\b, root type: integer
310327e51cbSPeter Avalos>>8		byte&0xF0	0x20	\b, root type: real
311327e51cbSPeter Avalos>>8		byte&0xF0	0x30	\b, root type: date
312327e51cbSPeter Avalos>>8		byte&0xF0	0x40    \b, root type: data
313327e51cbSPeter Avalos>>8		byte&0xF0	0x50	\b, root type: ascii string
314327e51cbSPeter Avalos>>8		byte&0xF0	0x60	\b, root type: unicode string
315327e51cbSPeter Avalos>>8		byte&0xF0	0x80	\b, root type: uid (CORRUPT)
316327e51cbSPeter Avalos>>8		byte&0xF0	0xa0	\b, root type: array
317327e51cbSPeter Avalos>>8		byte&0xF0	0xd0	\b, root type: dictionary
318327e51cbSPeter Avalos
319327e51cbSPeter Avalos# Apple/NeXT typedstream data
320327e51cbSPeter Avalos#  Serialization format used by NeXT and Apple for various
321327e51cbSPeter Avalos#  purposes in YellowStep/Cocoa, including some nib files.
322327e51cbSPeter Avalos# From: David Remahl <dremahl@apple.com>
323327e51cbSPeter Avalos2		string		typedstream	NeXT/Apple typedstream data, big endian
32482c5fa3eSPeter Avalos>0		byte		x		\b, version %d
325327e51cbSPeter Avalos>0		byte		<5		\b
326327e51cbSPeter Avalos>>13	byte		0x81	\b
32782c5fa3eSPeter Avalos>>>14	ubeshort	x		\b, system %d
328327e51cbSPeter Avalos2		string		streamtyped NeXT/Apple typedstream data, little endian
32982c5fa3eSPeter Avalos>0		byte		x		\b, version %d
330327e51cbSPeter Avalos>0		byte		<5		\b
331327e51cbSPeter Avalos>>13	byte		0x81	\b
33282c5fa3eSPeter Avalos>>>14	uleshort	x		\b, system %d
333327e51cbSPeter Avalos
334327e51cbSPeter Avalos#------------------------------------------------------------------------------
335327e51cbSPeter Avalos# CAF: Apple CoreAudio File Format
336327e51cbSPeter Avalos#
337327e51cbSPeter Avalos# Container format for high-end audio purposes.
338327e51cbSPeter Avalos# From: David Remahl <dremahl@apple.com>
339327e51cbSPeter Avalos#
340327e51cbSPeter Avalos0	string		caff		CoreAudio Format audio file
341327e51cbSPeter Avalos>4	beshort		<10		version %d
342327e51cbSPeter Avalos>6	beshort		x
343327e51cbSPeter Avalos
344327e51cbSPeter Avalos
345327e51cbSPeter Avalos#------------------------------------------------------------------------------
346327e51cbSPeter Avalos# Keychain database files
347327e51cbSPeter Avalos0	string		kych		Mac OS X Keychain File
348327e51cbSPeter Avalos
349327e51cbSPeter Avalos#------------------------------------------------------------------------------
350327e51cbSPeter Avalos# Code Signing related file types
351327e51cbSPeter Avalos0	belong		0xfade0c00	Mac OS X Code Requirement
352327e51cbSPeter Avalos>8	belong		1			(opExpr)
353327e51cbSPeter Avalos>4	belong		x			- %d bytes
354327e51cbSPeter Avalos
355327e51cbSPeter Avalos0	belong		0xfade0c01	Mac OS X Code Requirement Set
356327e51cbSPeter Avalos>8	belong		>1			containing %d items
357327e51cbSPeter Avalos>4	belong		x			- %d bytes
358327e51cbSPeter Avalos
359327e51cbSPeter Avalos0	belong		0xfade0c02	Mac OS X Code Directory
360327e51cbSPeter Avalos>8	belong		x			version %x
361*614728caSSascha Wildner>12	belong		>0			flags %#x
362327e51cbSPeter Avalos>4	belong		x			- %d bytes
363327e51cbSPeter Avalos
364327e51cbSPeter Avalos0	belong		0xfade0cc0	Mac OS X Detached Code Signature (non-executable)
365327e51cbSPeter Avalos>4	belong		x			- %d bytes
366327e51cbSPeter Avalos
367327e51cbSPeter Avalos0	belong		0xfade0cc1	Mac OS X Detached Code Signature
368327e51cbSPeter Avalos>8	belong		>1			(%d elements)
369327e51cbSPeter Avalos>4	belong		x			- %d bytes
370327e51cbSPeter Avalos
371327e51cbSPeter Avalos# From: "Nelson A. de Oliveira" <naoliv@gmail.com>
372327e51cbSPeter Avalos# .vdi
373327e51cbSPeter Avalos4	string innotek\ VirtualBox\ Disk\ Image %s
374e8af9738SPeter Avalos
375c30bd091SSascha Wildner# Apple disk partition stuff
376c30bd091SSascha Wildner# URL: https://en.wikipedia.org/wiki/Apple_Partition_Map
377c30bd091SSascha Wildner# Reference: https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/bootblock.h
378c30bd091SSascha Wildner# Update: Joerg Jenderek
379c30bd091SSascha Wildner# "ER" is APPLE_DRVR_MAP_MAGIC signature
380e8af9738SPeter Avalos0	beshort	0x4552
381c30bd091SSascha Wildner# display Apple Driver Map (strength=50) after Syslinux bootloader (71)
382c30bd091SSascha Wildner#!:strength +0
383c30bd091SSascha Wildner# strengthen the magic by looking for used blocksizes 512 2048
384c30bd091SSascha Wildner>2	ubeshort&0xf1FF		0	Apple Driver Map
385c30bd091SSascha Wildner# last 6 bytes for padding found are 0 or end with 55AAh marker for MBR hybrid
386c30bd091SSascha Wildner#>>504	ubequad&0x0000FFffFFff0000	0
387c30bd091SSascha Wildner!:mime	application/x-apple-diskimage
388c30bd091SSascha Wildner!:apple	????devr
389c30bd091SSascha Wildner# https://en.wikipedia.org/wiki/Apple_Disk_Image
390c30bd091SSascha Wildner!:ext	dmg/iso
391c30bd091SSascha Wildner# sbBlkSize for driver descriptor map 512 2048
392e8af9738SPeter Avalos>>2	beshort	x			\b, blocksize %d
393c30bd091SSascha Wildner# sbBlkCount sometimes garbish like
394c30bd091SSascha Wildner# 0xb0200000 for unzlibed install_flash_player_19.0.0.245_osx.dmg
395c30bd091SSascha Wildner# 0xf2720100 for bunziped Firefox 48.0-2.dmg
396c30bd091SSascha Wildner# 0xeb02ffff for super_grub2_disk_hybrid_2.02s3.iso
397c30bd091SSascha Wildner# 0x00009090 by syslinux-6.03/utils/isohybrid.c
398c30bd091SSascha Wildner>>4	ubelong	x			\b, blockcount %u
399c30bd091SSascha Wildner# following device/driver information not very useful
400c30bd091SSascha Wildner# device type 0 1 (37008 garbage for super_grub2_disk_hybrid_2.02s3.iso)
401c30bd091SSascha Wildner>>8	ubeshort	x		\b, devtype %u
402c30bd091SSascha Wildner# device id 0 1 (37008 garbage for super_grub2_disk_hybrid_2.02s3.iso)
403c30bd091SSascha Wildner>>10	ubeshort	x		\b, devid %u
404c30bd091SSascha Wildner# driver data 0 (2425393296 garbage for super_grub2_disk_hybrid_2.02s3.iso)
405c30bd091SSascha Wildner>>12	ubelong		>0
406c30bd091SSascha Wildner>>>12	ubelong		x		\b, driver data %u
407c30bd091SSascha Wildner# number of driver descriptors sbDrvrCount <= 61
408c30bd091SSascha Wildner# (37008 garbage for super_grub2_disk_hybrid_2.02s3.iso)
409c30bd091SSascha Wildner>>16	ubeshort	x		\b, driver count %u
410c30bd091SSascha Wildner# 61 * apple_drvr_descriptor[8]. information not very useful or same as in partition map
411c30bd091SSascha Wildner# >>18	use		apple-driver-map
412c30bd091SSascha Wildner# >>26	use		apple-driver-map
413c30bd091SSascha Wildner# # ...
414c30bd091SSascha Wildner# >>500	use		apple-driver-map
415c30bd091SSascha Wildner# number of partitions is always same in every partition (map block count)
416c30bd091SSascha Wildner#>>0x0204	ubelong		x	\b, %u partitions
417c30bd091SSascha Wildner>>0x0204	ubelong		>0	\b, contains[@0x200]:
418c30bd091SSascha Wildner>>>0x0200	use		apple-apm
419c30bd091SSascha Wildner>>0x0204	ubelong		>1	\b, contains[@0x400]:
420c30bd091SSascha Wildner>>>0x0400	use		apple-apm
421c30bd091SSascha Wildner>>0x0204	ubelong		>2	\b, contains[@0x600]:
422c30bd091SSascha Wildner>>>0x0600	use		apple-apm
423c30bd091SSascha Wildner>>0x0204	ubelong		>3	\b, contains[@0x800]:
424c30bd091SSascha Wildner>>>0x0800	use		apple-apm
425c30bd091SSascha Wildner>>0x0204	ubelong		>4	\b, contains[@0xA00]:
426c30bd091SSascha Wildner>>>0x0A00	use		apple-apm
427c30bd091SSascha Wildner>>0x0204	ubelong		>5	\b, contains[@0xC00]:
428c30bd091SSascha Wildner>>>0x0C00	use		apple-apm
429c30bd091SSascha Wildner>>0x0204	ubelong		>6	\b, contains[@0xE00]:
430c30bd091SSascha Wildner>>>0x0E00	use		apple-apm
431c30bd091SSascha Wildner>>0x0204	ubelong		>7	\b, contains[@0x1000]:
432c30bd091SSascha Wildner>>>0x1000	use		apple-apm
433c30bd091SSascha Wildner#	display apple driver descriptor map (start-block, # blocks in sbBlkSize sizes, type)
434c30bd091SSascha Wildner0	name				apple-driver-map
435c30bd091SSascha Wildner>0	ubequad		!0
436c30bd091SSascha Wildner# descBlock first block of driver
437c30bd091SSascha Wildner>>0	ubelong	x			\b, driver start block %u
438c30bd091SSascha Wildner# descSize driver size in blocks
439c30bd091SSascha Wildner>>4	ubeshort	x		\b, size %u
440c30bd091SSascha Wildner# descType driver system type 1 701h F8FFh FFFFh
441*614728caSSascha Wildner>>6	ubeshort	x		\b, type %#x
442e8af9738SPeter Avalos
443c30bd091SSascha Wildner# URL: https://en.wikipedia.org/wiki/Apple_Partition_Map
4446fca56fbSSascha Wildner# Reference: https://opensource.apple.com/source/IOStorageFamily/IOStorageFamily-116/IOApplePartitionScheme.h
445c30bd091SSascha Wildner# Update: Joerg Jenderek
446c30bd091SSascha Wildner# Yes, the 3rd and 4th bytes pmSigPad are reserved, but we use them to make the
447e8af9738SPeter Avalos# magic stronger.
448c30bd091SSascha Wildner# for apple partition map stored as a single file
449c30bd091SSascha Wildner0	belong	0x504d0000
450c30bd091SSascha Wildner# to display Apple Partition Map (strength=70) after Syslinux bootloader (71)
451c30bd091SSascha Wildner#!:strength +0
452c30bd091SSascha Wildner>0	use		apple-apm
453c30bd091SSascha Wildner# magic/Magdir/apple14.test, 365: Warning: Current entry does not yet have a description for adding a EXTENSION type
454c30bd091SSascha Wildner# file: could not find any valid magic files!
455c30bd091SSascha Wildner#!:ext	bin
456c30bd091SSascha Wildner#	display apple partition map. Normally called after Apple driver map
457c30bd091SSascha Wildner0	name				apple-apm
458c30bd091SSascha Wildner>0	belong	0x504d0000		Apple Partition Map
459c30bd091SSascha Wildner# number of partitions
460c30bd091SSascha Wildner>>4	ubelong	x			\b, map block count %u
461c30bd091SSascha Wildner# logical block (512 bytes) start of partition
462c30bd091SSascha Wildner>>8	ubelong	x			\b, start block %u
463c30bd091SSascha Wildner>>12	ubelong	x			\b, block count %u
464c30bd091SSascha Wildner>>16	string >0			\b, name %s
465c30bd091SSascha Wildner>>48	string >0			\b, type %s
466c30bd091SSascha Wildner# processor type dpme_process_id[16] e.g. "68000" "68020"
467c30bd091SSascha Wildner>>120	string >0			\b, processor %s
468c30bd091SSascha Wildner# A/UX boot arguments BootArgs[128]
469c30bd091SSascha Wildner>>136	string >0			\b, boot arguments %s
470c30bd091SSascha Wildner# status of partition dpme_flags
471c30bd091SSascha Wildner>>88	belong	& 1			\b, valid
472c30bd091SSascha Wildner>>88	belong	& 2			\b, allocated
473c30bd091SSascha Wildner>>88	belong	& 4			\b, in use
474c30bd091SSascha Wildner>>88	belong	& 8			\b, has boot info
475c30bd091SSascha Wildner>>88	belong	& 16			\b, readable
476c30bd091SSascha Wildner>>88	belong	& 32			\b, writable
477c30bd091SSascha Wildner>>88	belong	& 64			\b, pic boot code
478c30bd091SSascha Wildner>>88	belong	& 128			\b, chain compatible driver
479c30bd091SSascha Wildner>>88	belong	& 256			\b, real driver
480c30bd091SSascha Wildner>>88	belong	& 512			\b, chain driver
481c30bd091SSascha Wildner# mount automatically at startup APPLE_PS_AUTO_MOUNT
482c30bd091SSascha Wildner>>88	ubelong	&0x40000000		\b, mount at startup
483c30bd091SSascha Wildner# is the startup partition APPLE_PS_STARTUP
484c30bd091SSascha Wildner>>88	ubelong	&0x80000000		\b, is the startup partition
485e8af9738SPeter Avalos
4866fca56fbSSascha Wildner#https://wiki.mozilla.org/DS_Store_File_Format
4876fca56fbSSascha Wildner#https://en.wikipedia.org/wiki/.DS_Store
488e8af9738SPeter Avalos0	string	\0\0\0\1Bud1\0		Apple Desktop Services Store
489c30bd091SSascha Wildner
490c30bd091SSascha Wildner# HFS/HFS+ Resource fork files (andrew.roazen@nau.edu Apr 13 2015)
491c30bd091SSascha Wildner# Usually not in separate files, but have either filename rsrc with
492c30bd091SSascha Wildner# no extension, or a filename corresponding to another file, with
493c30bd091SSascha Wildner# extensions rsr/rsrc
494c30bd091SSascha Wildner0	string  \000\000\001\000
495c30bd091SSascha Wildner>4	leshort 0
496c30bd091SSascha Wildner>>16	lelong  0			Apple HFS/HFS+ resource fork
497c30bd091SSascha Wildner
498c30bd091SSascha Wildner#https://en.wikipedia.org/wiki/AppleScript
499c30bd091SSascha Wildner0	string	FasdUAS			AppleScript compiled
500c30bd091SSascha Wildner
501c30bd091SSascha Wildner# AppleWorks/ClarisWorks
502c30bd091SSascha Wildner# https://github.com/joshenders/appleworks_format
503c30bd091SSascha Wildner# http://fileformats.archiveteam.org/wiki/AppleWorks
504c30bd091SSascha Wildner0	name			appleworks
505c30bd091SSascha Wildner>0	belong&0x00ffffff	0x07e100	AppleWorks CWK Document
506c30bd091SSascha Wildner>0	belong&0x00ffffff	0x008803	ClarisWorks CWK Document
507c30bd091SSascha Wildner>0	default			x
508c30bd091SSascha Wildner>>0	belong			x		AppleWorks/ClarisWorks CWK Document
509c30bd091SSascha Wildner>0	byte			x		\b, version %d
510c30bd091SSascha Wildner>30	beshort			x		\b, %d
511c30bd091SSascha Wildner>32	beshort			x		\bx%d
512c30bd091SSascha Wildner!:ext cwk
513c30bd091SSascha Wildner
514c30bd091SSascha Wildner4	string	BOBO
515c30bd091SSascha Wildner>0	byte	>4
516c30bd091SSascha Wildner>>12	belong	0
517c30bd091SSascha Wildner>>>26	belong	0
518c30bd091SSascha Wildner>>>>0	use	appleworks
519c30bd091SSascha Wildner>0	belong	0x0481ad00
520c30bd091SSascha Wildner>>0	use 	appleworks
5216fca56fbSSascha Wildner
5226fca56fbSSascha Wildner# magic for Apple File System (APFS)
5236fca56fbSSascha Wildner# from Alex Myczko <alex@aiei.ch>
5246fca56fbSSascha Wildner32		string	NXSB		Apple File System (APFS)
5256fca56fbSSascha Wildner>36		ulelong	x		\b, blocksize %u
5266fca56fbSSascha Wildner
5276fca56fbSSascha Wildner# iTunes cover art (versions 1 and 2)
5286fca56fbSSascha Wildner4		string	itch
5296fca56fbSSascha Wildner>24		string	artw
5306fca56fbSSascha Wildner>>0x1e8		string	data		iTunes cover art
5316fca56fbSSascha Wildner>>>0x1ed	string	PNG		(PNG)
5326fca56fbSSascha Wildner>>>0x1ec	beshort 0xffd8		(JPEG)
5336fca56fbSSascha Wildner
5346fca56fbSSascha Wildner# MacPaint image
5356fca56fbSSascha Wildner65		string	PNTGMPNT	MacPaint image data
5366fca56fbSSascha Wildner#0		belong	2		MacPaint image data
537