xref: /freebsd/contrib/file/magic/Magdir/macintosh (revision d38c30c092828f4882ce13b08d0bd3fd6dc7afb5)
1b6cee71dSXin LI
2b6cee71dSXin LI#------------------------------------------------------------------------------
3*d38c30c0SXin LI# $File: macintosh,v 1.30 2019/12/14 20:40:26 christos Exp $
4b6cee71dSXin LI# macintosh description
5b6cee71dSXin LI#
6b6cee71dSXin LI# BinHex is the Macintosh ASCII-encoded file format (see also "apple")
7b6cee71dSXin LI# Daniel Quinlan, quinlan@yggdrasil.com
8*d38c30c0SXin LI# Update:	Joerg Jenderek
9*d38c30c0SXin LI# URL:		https://en.wikipedia.org/wiki/BinHex
10*d38c30c0SXin LI# Reference:	http://fileformats.archiveteam.org/wiki/BinHex
11*d38c30c0SXin LI# Note:		only tested with version 4.0 and hqx extension
12*d38c30c0SXin LI# Any text/binary before the characteristic comment sentence is to be ignored like in
13*d38c30c0SXin LI# http://ftp.vim.org/pub/ftp/ftp/infomac/disk/mac-update-40b7.hqx
14*d38c30c0SXin LI0	search/1602	(This\ file\
15*d38c30c0SXin LI>&0	use		binhex
16*d38c30c0SXin LI# http://ftp.vim.org/pub/ftp/ftp/infomac/_Disk_&_File/zap-res-forks-101.hqx
17*d38c30c0SXin LI0	search/2652/b	(This\ file\
18*d38c30c0SXin LI>&0	use		binhex
19*d38c30c0SXin LI0	name				binhex
20*d38c30c0SXin LI# keep splitted search string format similar like in version 5.37
21*d38c30c0SXin LI>0	string	must\ be\ converted\ with\ BinHex\ 	BinHex binary text, version
22*d38c30c0SXin LI# http://www.macdisk.com/binhexen.php3
23*d38c30c0SXin LI!:apple	BNHQTEXT
24*d38c30c0SXin LI# http://www.faqs.org/faqs/macintosh/comm-faq/part1/
25*d38c30c0SXin LI>>&0	string	1.0					1.0
26*d38c30c0SXin LI!:mime	application/mac-binhex
27*d38c30c0SXin LI!:ext	hex
28*d38c30c0SXin LI>>&0	string	2.0					2.0
29*d38c30c0SXin LI!:mime	application/mac-binhex
30*d38c30c0SXin LI!:ext	hcx
31*d38c30c0SXin LI# BinHex	3.0 never existed
32*d38c30c0SXin LI>>&0	string	4.0					4.0
33b6cee71dSXin LI!:mime	application/mac-binhex40
34*d38c30c0SXin LI!:ext	hqx
35*d38c30c0SXin LI# BinHex	5.0 also MacBinary I
36*d38c30c0SXin LI>>&0	string	5.0					5.0
37*d38c30c0SXin LI!:mime	application/mac-binhex40
38*d38c30c0SXin LI!:ext	hqx
39*d38c30c0SXin LI# this should never happen
40*d38c30c0SXin LI>>&0	default	x
41*d38c30c0SXin LI>>>&0	string	x					%.3s
42*d38c30c0SXin LI!:mime	application/mac-binhex
43*d38c30c0SXin LI!:ext	hqx
44b6cee71dSXin LI
45b6cee71dSXin LI# Stuffit archives are the de facto standard of compression for Macintosh
46b6cee71dSXin LI# files obtained from most archives. (franklsm@tuns.ca)
47b6cee71dSXin LI0	string		SIT!			StuffIt Archive (data)
48b6cee71dSXin LI!:mime	application/x-stuffit
49b6cee71dSXin LI!:apple	SIT!SIT!
50b6cee71dSXin LI>2	string		x			: %s
51b6cee71dSXin LI0	string		SITD			StuffIt Deluxe (data)
52b6cee71dSXin LI>2	string		x			: %s
53b6cee71dSXin LI0	string		Seg			StuffIt Deluxe Segment (data)
54b6cee71dSXin LI>2	string		x			: %s
55b6cee71dSXin LI
56b6cee71dSXin LI# Newer StuffIt archives (grant@netbsd.org)
57b6cee71dSXin LI0	string		StuffIt			StuffIt Archive
58b6cee71dSXin LI!:mime	application/x-stuffit
59b6cee71dSXin LI!:apple	SIT!SIT!
60b6cee71dSXin LI#>162	string		>0			: %s
61b6cee71dSXin LI
62b6cee71dSXin LI# Macintosh Applications and Installation binaries (franklsm@tuns.ca)
63b6cee71dSXin LI# GRR: Too weak
64b6cee71dSXin LI#0	string		APPL			Macintosh Application (data)
65b6cee71dSXin LI#>2	string		x			\b: %s
66b6cee71dSXin LI
67b6cee71dSXin LI# Macintosh System files (franklsm@tuns.ca)
68b6cee71dSXin LI# GRR: Too weak
69b6cee71dSXin LI#0	string		zsys			Macintosh System File (data)
70b6cee71dSXin LI#0	string		FNDR			Macintosh Finder (data)
71b6cee71dSXin LI#0	string		libr			Macintosh Library (data)
72b6cee71dSXin LI#>2	string		x			: %s
73b6cee71dSXin LI#0	string		shlb			Macintosh Shared Library (data)
74b6cee71dSXin LI#>2	string		x			: %s
75b6cee71dSXin LI#0	string		cdev			Macintosh Control Panel (data)
76b6cee71dSXin LI#>2	string		x			: %s
77b6cee71dSXin LI#0	string		INIT			Macintosh Extension (data)
78b6cee71dSXin LI#>2	string		x			: %s
79b6cee71dSXin LI#0	string		FFIL			Macintosh Truetype Font (data)
80b6cee71dSXin LI#>2	string		x			: %s
81b6cee71dSXin LI#0	string		LWFN			Macintosh Postscript Font (data)
82b6cee71dSXin LI#>2	string		x			: %s
83b6cee71dSXin LI
84b6cee71dSXin LI# Additional Macintosh Files (franklsm@tuns.ca)
85b6cee71dSXin LI# GRR: Too weak
86b6cee71dSXin LI#0	string		PACT			Macintosh Compact Pro Archive (data)
87b6cee71dSXin LI#>2	string		x			: %s
88b6cee71dSXin LI#0	string		ttro			Macintosh TeachText File (data)
89b6cee71dSXin LI#>2	string		x			: %s
90b6cee71dSXin LI#0	string		TEXT			Macintosh TeachText File (data)
91b6cee71dSXin LI#>2	string		x			: %s
92b6cee71dSXin LI#0	string		PDF			Macintosh PDF File (data)
93b6cee71dSXin LI#>2	string		x			: %s
94b6cee71dSXin LI
95b6cee71dSXin LI# MacBinary format (Eric Fischer, enf@pobox.com)
9658a0f0d0SEitan Adler# Update: Joerg Jenderek
9758a0f0d0SEitan Adler# URL: https://en.wikipedia.org/wiki/MacBinary
9848c779cdSXin LI# Reference: https://files.stairways.com/other/macbinaryii-standard-info.txt
99b6cee71dSXin LI#
100b6cee71dSXin LI# Unfortunately MacBinary doesn't really have a magic number prior
10158a0f0d0SEitan Adler# to the MacBinary III format.
102b6cee71dSXin LI#
10358a0f0d0SEitan Adler
10458a0f0d0SEitan Adler# old version number, must be kept at zero for compatibility
10558a0f0d0SEitan Adler0	byte	0
10658a0f0d0SEitan Adler# length of filename (must be in the range 1-63)
10758a0f0d0SEitan Adler>1	ubyte	>0
10858a0f0d0SEitan Adler# skip T.PIC.LZ INSTRUMENT.7T INVENTORY
10958a0f0d0SEitan Adler>>1	ubyte	<64
11058a0f0d0SEitan Adler# skip Docs.MWII ReadMe.MacWrite "Notes (MacWrite II)"
11158a0f0d0SEitan Adler# by looking for printable characters at beginning of file name
11258a0f0d0SEitan Adler>>>2	ubelong	>0x1F000000
11358a0f0d0SEitan Adler# zero fill, must be zero for compatibility
11458a0f0d0SEitan Adler>>>>74	byte	0
11558a0f0d0SEitan Adler# zero fill, must be zero for compatibility
11658a0f0d0SEitan Adler>>>>>82	byte	0
11758a0f0d0SEitan Adler# MacBinary I		test for valid version numbers
11858a0f0d0SEitan Adler>>>>>>122	ubeshort	0
11958a0f0d0SEitan Adler# additional check for creation date after 1 Jan 1970 ~ 7C25B080h
12058a0f0d0SEitan Adler#>>>>>>>91	ubelong		>0x7c25b07F
12158a0f0d0SEitan Adler# additional check for undefined header fields in MacBinary I
12258a0f0d0SEitan Adler#>>>>>>>101	ulong		0
12358a0f0d0SEitan Adler>>>>>>>0	use	mac-bin
12458a0f0d0SEitan Adler# MacBinary II		the newer versions begins at 129
12558a0f0d0SEitan Adler>>>>>>122	ubeshort	0x8181
12658a0f0d0SEitan Adler>>>>>>>0	use	mac-bin
12758a0f0d0SEitan Adler# MacBinary III with MacBinary II to read
12858a0f0d0SEitan Adler>>>>>122	ubeshort	0x8281
12958a0f0d0SEitan Adler>>>>>>0	use	mac-bin
13058a0f0d0SEitan Adler
13158a0f0d0SEitan Adler#	display information of MacBinary file
13258a0f0d0SEitan Adler0	name		mac-bin
13358a0f0d0SEitan Adler>122	ubyte	x	MacBinary
13458a0f0d0SEitan Adler# versions for MacBinary II/III
13558a0f0d0SEitan Adler>122	ubyte	129		II
13658a0f0d0SEitan Adler>122	ubyte	130		III
13758a0f0d0SEitan Adler# only in MacBinary III
13858a0f0d0SEitan Adler>>102	string	!mBIN		with surprising version
13958a0f0d0SEitan Adler!:mime	application/x-macbinary
14058a0f0d0SEitan Adler!:apple	PSPTBINA
14158a0f0d0SEitan Adler!:ext	bin/macbin
14258a0f0d0SEitan Adler# THIS SHOULD NEVER HAPPEN! Maybe another file type is misidetified as MacBinary
14358a0f0d0SEitan Adler#>1	ubyte	>63		\b, name length %u too BIG!
14458a0f0d0SEitan Adler#>122	ubeshort	x	\b, version 0x%x
14558a0f0d0SEitan Adler# Finder flags if not 0
14658a0f0d0SEitan Adler# >73	byte		!0		\b, flags 0x
14758a0f0d0SEitan Adler# >73	byte		=0
14858a0f0d0SEitan Adler# >>101	byte		!0		\b, flags 0x
14958a0f0d0SEitan Adler# # original Finder flags (Bits 8-15)
15058a0f0d0SEitan Adler# >73	byte		!0		\b%x
15158a0f0d0SEitan Adler# # finder flags, bits 0-7
15258a0f0d0SEitan Adler# >101	byte		!0		\b%x
15358a0f0d0SEitan Adler>73	byte		&0x01		\b, inited
15458a0f0d0SEitan Adler>73	byte		&0x02		\b, changed
15558a0f0d0SEitan Adler>73	byte		&0x04		\b, busy
15658a0f0d0SEitan Adler>73	byte		&0x08		\b, bozo
15758a0f0d0SEitan Adler>73	byte		&0x10		\b, system
15858a0f0d0SEitan Adler>73	byte		&0x20		\b, bundle
15958a0f0d0SEitan Adler>73	byte		&0x40		\b, invisible
16058a0f0d0SEitan Adler>73	byte		&0x80		\b, locked
16158a0f0d0SEitan Adler
162b6cee71dSXin LI# 75	beshort				# vertical posn in window
16358a0f0d0SEitan Adler#>75	beshort		!0		\b, v.pos %u
164b6cee71dSXin LI# 77	beshort				# horiz posn in window
16558a0f0d0SEitan Adler#>77	beshort		!0		\b, h.pos %u
166b6cee71dSXin LI# 79	beshort				# window or folder ID
16758a0f0d0SEitan Adler>79	ubeshort	!0		\b, ID 0x%x
16858a0f0d0SEitan Adler# protected flag
16958a0f0d0SEitan Adler>81	byte		!0		\b, protected 0x%x
17058a0f0d0SEitan Adler# length of comment after resource
17158a0f0d0SEitan Adler>99	ubeshort	!0		\b, comment length %u
17258a0f0d0SEitan Adler# char. code of file name
17358a0f0d0SEitan Adler>106	ubyte		!0		\b, char. code 0x%x
17458a0f0d0SEitan Adler# still more Finder flags
17558a0f0d0SEitan Adler>107	ubyte		!0		\b, more flags 0x%x
17658a0f0d0SEitan Adler# length of total files when unpacked only used when pack and unpack on the fly
17758a0f0d0SEitan Adler>116	ubelong		!0		\b, total length %u
178b6cee71dSXin LI# 120	beshort				# length of add'l header
17958a0f0d0SEitan Adler>120	ubeshort	!0		\b, 2nd header length %u
180b6cee71dSXin LI# 124	beshort				# checksum
18158a0f0d0SEitan Adler#>124	ubeshort	!0		\b, CRC 0x%x
18258a0f0d0SEitan Adler# creation date in seconds since MacOS epoch start. So 1 Jan 1970 ~ 7C25B080
18358a0f0d0SEitan Adler>91	beldate-0x7C25B080	x	\b, %s
18458a0f0d0SEitan Adler# THIS SHOULD NEVER HAPPEN! Maybe another file type is misidetified or time overflow
18558a0f0d0SEitan Adler>91	ubelong		<0x7c25b080	INVALID date
18658a0f0d0SEitan Adler#>91	belong-0x7C25B080	x	\b, DEBUG DATE %d
18758a0f0d0SEitan Adler# last modified date
18858a0f0d0SEitan Adler>95	beldate-0x7C25B080	x	\b, modified %s
18958a0f0d0SEitan Adler# Apple creator+typ if not null
19058a0f0d0SEitan Adler# file creator (normally expressed as four characters)
19158a0f0d0SEitan Adler>69	ulong			!0	\b, creator
19258a0f0d0SEitan Adler# instead 4 character code display full creator name
19358a0f0d0SEitan Adler>>69	use			apple-creator
19458a0f0d0SEitan Adler# file type (normally expressed as four characters)
19558a0f0d0SEitan Adler>65	ulong			!0	\b, type
19658a0f0d0SEitan Adler>>65	use			apple-type
19758a0f0d0SEitan Adler# length of data segment
19858a0f0d0SEitan Adler>83	ubelong			!0	\b, %u bytes
19958a0f0d0SEitan Adler# filename (in the range 1-63)
20058a0f0d0SEitan Adler>1	pstring			x	"%s"
20158a0f0d0SEitan Adler# print 1 space and then at offset 128 inspect data fork content if it has one
20258a0f0d0SEitan Adler>83	ubelong			!0	\b
20358a0f0d0SEitan Adler>>128	indirect		x
20458a0f0d0SEitan Adler# Afterwards resource fork if length of resource segment not zero
20558a0f0d0SEitan Adler>87	ubelong			!0
20658a0f0d0SEitan Adler# calculate resource fork offset
20758a0f0d0SEitan Adler>>83	ubelong+128		x	\b, at 0x%x
20858a0f0d0SEitan Adler# length of resource segment
20958a0f0d0SEitan Adler>>87	ubelong			!0	%u bytes
21058a0f0d0SEitan Adler>>(83.S+128)	ubequad		x	resource
21158a0f0d0SEitan Adler# further resource fork content inspection
21258a0f0d0SEitan Adler>>>&-8	indirect		x
213b6cee71dSXin LI
21458a0f0d0SEitan Adler# Apple Type/Creator Database
21558a0f0d0SEitan Adler# URL: https://en.wikipedia.org/wiki/Type_code
21648c779cdSXin LI# Reference:	https://www.lacikam.co.il/tcdb/
21748c779cdSXin LI#		https://www.macdisk.com/macsigen.php
21858a0f0d0SEitan Adler# Note:	classic Mac OS files have two 4 character codes for type and creator.
21958a0f0d0SEitan Adler#	Thereby the Finder attach documents types to applications.
220b6cee71dSXin LI
221b6cee71dSXin LI#>65	string		x		\b, type "%4.4s"
222b6cee71dSXin LI
22358a0f0d0SEitan Adler#	display information about apple type
22458a0f0d0SEitan Adler0	name		apple-type
22558a0f0d0SEitan Adler>0	string		8BIM		PhotoShop
22658a0f0d0SEitan Adler>0	string		ALB3		PageMaker 3
22758a0f0d0SEitan Adler>0	string		ALB4		PageMaker 4
22858a0f0d0SEitan Adler>0	string		ALT3		PageMaker 3
22958a0f0d0SEitan Adler>0	string		APPL		application
23058a0f0d0SEitan Adler>0	string		AWWP		AppleWorks word processor
23158a0f0d0SEitan Adler>0	string		CIRC		simulated circuit
23258a0f0d0SEitan Adler>0	string		DRWG		MacDraw
23358a0f0d0SEitan Adler>0	string		EPSF		Encapsulated PostScript
23458a0f0d0SEitan Adler>0	string		FFIL		font suitcase
23558a0f0d0SEitan Adler>0	string		FKEY		function key
23658a0f0d0SEitan Adler>0	string		FNDR		Macintosh Finder
23758a0f0d0SEitan Adler>0	string		GIFf		GIF image
23858a0f0d0SEitan Adler>0	string		Gzip		GNU gzip
23958a0f0d0SEitan Adler>0	string		INIT		system extension
24058a0f0d0SEitan Adler>0	string		LIB\ 		library
24158a0f0d0SEitan Adler>0	string		LWFN		PostScript font
24258a0f0d0SEitan Adler>0	string		MSBC		Microsoft BASIC
24358a0f0d0SEitan Adler>0	string		PACT		Compact Pro archive
24458a0f0d0SEitan Adler>0	string		PDF\ 		Portable Document Format
24558a0f0d0SEitan Adler>0	string		PICT		picture
24658a0f0d0SEitan Adler>0	string		PNTG		MacPaint picture
24758a0f0d0SEitan Adler>0	string		PREF		preferences
24858a0f0d0SEitan Adler>0	string		PROJ		Think C project
24958a0f0d0SEitan Adler>0	string		QPRJ		Think Pascal project
25058a0f0d0SEitan Adler>0	string		SCFL		Defender scores
25158a0f0d0SEitan Adler>0	string		SCRN		startup screen
25258a0f0d0SEitan Adler>0	string		SITD		StuffIt Deluxe
25358a0f0d0SEitan Adler>0	string		SPn3		SuperPaint
25458a0f0d0SEitan Adler>0	string		STAK		HyperCard stack
25558a0f0d0SEitan Adler>0	string		Seg\ 		StuffIt segment
25658a0f0d0SEitan Adler>0	string		TARF		Unix tar archive
25758a0f0d0SEitan Adler>0	string		TEXT		ASCII
25858a0f0d0SEitan Adler>0	string		TIFF		TIFF image
25958a0f0d0SEitan Adler>0	string		TOVF		Eudora table of contents
26058a0f0d0SEitan Adler>0	string		WDBN		Microsoft Word word processor
26158a0f0d0SEitan Adler>0	string		WORD		MacWrite word processor
26258a0f0d0SEitan Adler>0	string		XLS\ 		Microsoft Excel
26358a0f0d0SEitan Adler>0	string		ZIVM		compress (.Z)
26458a0f0d0SEitan Adler>0	string		ZSYS		Pre-System 7 system file
26558a0f0d0SEitan Adler>0	string		acf3		Aldus FreeHand
26658a0f0d0SEitan Adler>0	string		cdev		control panel
26758a0f0d0SEitan Adler>0	string		dfil		Desk Accessory suitcase
26858a0f0d0SEitan Adler>0	string		libr		library
26958a0f0d0SEitan Adler>0	string		nX^d		WriteNow word processor
27058a0f0d0SEitan Adler>0	string		nX^w		WriteNow dictionary
27158a0f0d0SEitan Adler>0	string		rsrc		resource
27258a0f0d0SEitan Adler>0	string		scbk		Scrapbook
27358a0f0d0SEitan Adler>0	string		shlb		shared library
27458a0f0d0SEitan Adler>0	string		ttro		SimpleText read-only
27558a0f0d0SEitan Adler>0	string		zsys		system file
27658a0f0d0SEitan Adler
27758a0f0d0SEitan Adler#	additional types added in Dec 2017
27858a0f0d0SEitan Adler>0	string		BINA		binary file
27958a0f0d0SEitan Adler>0	string		BMPp		BMP image
28058a0f0d0SEitan Adler>0	string		JPEG		JPEG image
28158a0f0d0SEitan Adler#>0	string		W4BN		Microsoft Word x.y word processor?
28258a0f0d0SEitan Adler# if type name is not known display 4 character identifier
28358a0f0d0SEitan Adler>0	default		x
28458a0f0d0SEitan Adler>>0	string		x		'%4.4s'
285b6cee71dSXin LI
286b6cee71dSXin LI#>69	string		x		\b, creator "%4.4s"
287b6cee71dSXin LI
28858a0f0d0SEitan Adler# Now Apple has no repository of registered Creator IDs any more. These are
289b6cee71dSXin LI# just the ones that I happened to have files from and was able to identify.
290b6cee71dSXin LI
29158a0f0d0SEitan Adler#	display information about apple creator
29258a0f0d0SEitan Adler0	name		apple-creator
29358a0f0d0SEitan Adler>0	string		8BIM		Adobe Photoshop
29458a0f0d0SEitan Adler>0	string		ALD3		PageMaker 3
29558a0f0d0SEitan Adler>0	string		ALD4		PageMaker 4
29658a0f0d0SEitan Adler>0	string		ALFA		Alpha editor
29758a0f0d0SEitan Adler>0	string		APLS		Apple Scanner
29858a0f0d0SEitan Adler>0	string		APSC		Apple Scanner
29958a0f0d0SEitan Adler>0	string		BRKL		Brickles
30058a0f0d0SEitan Adler>0	string		BTFT		BitFont
30158a0f0d0SEitan Adler>0	string		CCL2		Common Lisp 2
30258a0f0d0SEitan Adler>0	string		CCL\ 		Common Lisp
30358a0f0d0SEitan Adler>0	string		CDmo		The Talking Moose
30458a0f0d0SEitan Adler>0	string		CPCT		Compact Pro
30558a0f0d0SEitan Adler>0	string		CSOm		Eudora
30658a0f0d0SEitan Adler>0	string		DMOV		Font/DA Mover
30758a0f0d0SEitan Adler>0	string		DSIM		DigSim
30858a0f0d0SEitan Adler>0	string		EDIT		Macintosh Edit
30958a0f0d0SEitan Adler>0	string		ERIK		Macintosh Finder
31058a0f0d0SEitan Adler>0	string		EXTR		self-extracting archive
31158a0f0d0SEitan Adler>0	string		Gzip		GNU gzip
31258a0f0d0SEitan Adler>0	string		KAHL		Think C
31358a0f0d0SEitan Adler>0	string		LWFU		LaserWriter Utility
31458a0f0d0SEitan Adler>0	string		LZIV		compress
31558a0f0d0SEitan Adler>0	string		MACA		MacWrite
31658a0f0d0SEitan Adler>0	string		MACS		Macintosh operating system
31758a0f0d0SEitan Adler>0	string		MAcK		MacKnowledge terminal emulator
31858a0f0d0SEitan Adler>0	string		MLND		Defender
31958a0f0d0SEitan Adler>0	string		MPNT		MacPaint
32058a0f0d0SEitan Adler>0	string		MSBB		Microsoft BASIC (binary)
32158a0f0d0SEitan Adler>0	string		MSWD		Microsoft Word
32258a0f0d0SEitan Adler>0	string		NCSA		NCSA Telnet
32358a0f0d0SEitan Adler>0	string		PJMM		Think Pascal
32458a0f0d0SEitan Adler>0	string		PSAL		Hunt the Wumpus
32558a0f0d0SEitan Adler#>0	string		PSI2		Apple File Exchange
32658a0f0d0SEitan Adler>0	string		R*ch		BBEdit
32758a0f0d0SEitan Adler>0	string		RMKR		Resource Maker
32858a0f0d0SEitan Adler>0	string		RSED		Resource Editor
32958a0f0d0SEitan Adler>0	string		Rich		BBEdit
33058a0f0d0SEitan Adler>0	string		SIT!		StuffIt
33158a0f0d0SEitan Adler>0	string		SPNT		SuperPaint
33258a0f0d0SEitan Adler>0	string		Unix		NeXT Mac filesystem
33358a0f0d0SEitan Adler>0	string		VIM!		Vim editor
33458a0f0d0SEitan Adler>0	string		WILD		HyperCard
33558a0f0d0SEitan Adler>0	string		XCEL		Microsoft Excel
33658a0f0d0SEitan Adler>0	string		aCa2		Fontographer
33758a0f0d0SEitan Adler>0	string		aca3		Aldus FreeHand
33858a0f0d0SEitan Adler>0	string		dosa		Macintosh MS-DOS file system
33958a0f0d0SEitan Adler>0	string		movr		Font/DA Mover
34058a0f0d0SEitan Adler>0	string		nX^n		WriteNow
34158a0f0d0SEitan Adler>0	string		pdos		Apple ProDOS file system
34258a0f0d0SEitan Adler>0	string		scbk		Scrapbook
34358a0f0d0SEitan Adler>0	string		ttxt		SimpleText
34458a0f0d0SEitan Adler>0	string		ufox		Foreign File Access
34558a0f0d0SEitan Adler#	additional creators added in Dec 2017
34658a0f0d0SEitan Adler# Claris/Apple Works
34758a0f0d0SEitan Adler>0	string		BOBO		Apple Works
34858a0f0d0SEitan Adler# CU-SeeMe_0.87b3_(68K).bin
34958a0f0d0SEitan Adler#>0	string		CUce		bar
35058a0f0d0SEitan Adler>0	string		PSPT		Apple File Exchange
35158a0f0d0SEitan Adler# Disk_Copy_4.2.sea.bin
35258a0f0d0SEitan Adler#>0	string		NCse		foo
35358a0f0d0SEitan Adler# probably StuffIt/Aladdin by Smith Micro Software, Inc.
35458a0f0d0SEitan Adler>0	string		STi0		stuffit
35558a0f0d0SEitan Adler# MacGzip-1.1.3.sea.bin
35658a0f0d0SEitan Adler#>0	string		aust		bar
35758a0f0d0SEitan Adler# D-Disk_Copy_6.3.3.smi.bin
35858a0f0d0SEitan Adler>0	string		oneb		Disk Copy Self Mounting
35958a0f0d0SEitan Adler# if creator name is not known display 4 character identifier
36058a0f0d0SEitan Adler>0	default		x
36158a0f0d0SEitan Adler>>0	string		x		'%4.4s'
362b6cee71dSXin LI
363b6cee71dSXin LI# sas magic from Bruce Foster (bef@nwu.edu)
364b6cee71dSXin LI#
365b6cee71dSXin LI#0	string		SAS		SAS
366b6cee71dSXin LI#>8	string		x		%s
367b6cee71dSXin LI0	string		SAS		SAS
368b6cee71dSXin LI>24	string		DATA		data file
369b6cee71dSXin LI>24	string		CATALOG		catalog
370b6cee71dSXin LI>24	string		INDEX		data file index
371b6cee71dSXin LI>24	string		VIEW		data view
372b6cee71dSXin LI# sas 7+ magic from Reinhold Koch (reinhold.koch@roche.com)
373b6cee71dSXin LI#
374b6cee71dSXin LI0x54    string          SAS             SAS 7+
375b6cee71dSXin LI>0x9C   string          DATA            data file
376b6cee71dSXin LI>0x9C   string          CATALOG         catalog
377b6cee71dSXin LI>0x9C   string          INDEX           data file index
378b6cee71dSXin LI>0x9C   string          VIEW            data view
379b6cee71dSXin LI
380b6cee71dSXin LI# spss magic for SPSS system and portable files,
381b6cee71dSXin LI#	 from Bruce Foster (bef@nwu.edu).
382b6cee71dSXin LI
383b6cee71dSXin LI0	long		0xc1e2c3c9	SPSS Portable File
384b6cee71dSXin LI>40	string 		x		%s
385b6cee71dSXin LI
386b6cee71dSXin LI0	string		$FL2		SPSS System File
387b6cee71dSXin LI>24	string		x		%s
388b6cee71dSXin LI
389b6cee71dSXin LI0	string		$FL3		SPSS System File
390b6cee71dSXin LI>24	string		x		%s
391b6cee71dSXin LI
392b6cee71dSXin LI# Macintosh filesystem data
393b6cee71dSXin LI# From "Tom N Harris" <telliamed@mac.com>
394b6cee71dSXin LI# Fixed HFS+ and Partition map magic: Ethan Benson <erbenson@alaska.net>
395b6cee71dSXin LI# The MacOS epoch begins on 1 Jan 1904 instead of 1 Jan 1970, so these
396b6cee71dSXin LI# entries depend on the data arithmetic added after v.35
397b6cee71dSXin LI# There's also some Pascal strings in here, ditto...
398b6cee71dSXin LI
399b6cee71dSXin LI# The boot block signature, according to IM:Files, is
400b6cee71dSXin LI# "for HFS volumes, this field always contains the value 0x4C4B."
401b6cee71dSXin LI# But if this is true for MFS or HFS+ volumes, I don't know.
402b6cee71dSXin LI# Alternatively, the boot block is supposed to be zeroed if it's
403b6cee71dSXin LI# unused, so a simply >0 should suffice.
404b6cee71dSXin LI
405b6cee71dSXin LI0x400	beshort			0xD2D7		Macintosh MFS data
406b6cee71dSXin LI>0	beshort			0x4C4B		(bootable)
407b6cee71dSXin LI>0x40a	beshort			&0x8000		(locked)
408b6cee71dSXin LI>0x402	beldate-0x7C25B080	x		created: %s,
409b6cee71dSXin LI>0x406	beldate-0x7C25B080	>0		last backup: %s,
410b6cee71dSXin LI>0x414	belong			x		block size: %d,
411b6cee71dSXin LI>0x412	beshort			x		number of blocks: %d,
412b6cee71dSXin LI>0x424	pstring			x		volume name: %s
413b6cee71dSXin LI
414c2931133SXin LI# *.hfs updated by Joerg Jenderek
41548c779cdSXin LI# https://en.wikipedia.org/wiki/Hierarchical_File_System
416b6cee71dSXin LI# "BD" gives many false positives
417c2931133SXin LI0x400	beshort			0x4244
418c2931133SXin LI# ftp://ftp.mars.org/pub/hfs/hfsutils-3.2.6.tar.gz/hfsutils-3.2.6/libhfs/apple.h
419c2931133SXin LI# first block of volume bit map (always 3)
420c2931133SXin LI>0x40e	ubeshort		0x0003
421c2931133SXin LI# maximal length of volume name is 27
422c2931133SXin LI>>0x424		ubyte			<28	Macintosh HFS data
423c2931133SXin LI!:mime	application/x-apple-diskimage
424c2931133SXin LI#!:apple	hfsdINIT
425c2931133SXin LI#!:apple	MACSdisk
42648c779cdSXin LI# https://www.macdisk.com/macsigen.php
4273e41d09dSXin LI#!:apple	ddskdevi
4283e41d09dSXin LI!:apple	????devi
4293e41d09dSXin LI# https://en.wikipedia.org/wiki/Apple_Disk_Image
4303e41d09dSXin LI!:ext hfs/dmg
431c2931133SXin LI>>>0		beshort			0x4C4B	(bootable)
432c2931133SXin LI#>>>0		beshort			0x0000	(not bootable)
433c2931133SXin LI>>>0x40a	beshort			&0x8000	(locked)
434c2931133SXin LI>>>0x40a	beshort			^0x0100	(mounted)
435c2931133SXin LI>>>0x40a	beshort			&0x0200	(spared blocks)
436c2931133SXin LI>>>0x40a	beshort			&0x0800	(unclean)
437c2931133SXin LI>>>0x47C	beshort			0x482B	(Embedded HFS+ Volume)
43848c779cdSXin LI# https://www.epochconverter.com/
439c2931133SXin LI# 0x7C245F00 seconds	~ 2082758400	~ 01 Jan 2036 00:00:00	~ 66 years to 1970
440c2931133SXin LI# 0x7C25B080 seconds	~ 2082844800	~ 02 Jan 2036 00:00:00
441c2931133SXin LI# construct not working
442c2931133SXin LI#>>>0x402	beldate-0x7C25B080	x	created: %s,
443c2931133SXin LI#>>>0x406	beldate-0x7C25B080	x	last modified: %s,
444c2931133SXin LI#>>>0x440	beldate-0x7C25B080	>0	last backup: %s,
445c2931133SXin LI# found block sizes 200h,1200h,2800h
446c2931133SXin LI>>>0x414	belong			x	block size: %d,
447c2931133SXin LI>>>0x412	beshort			x	number of blocks: %d,
448c2931133SXin LI>>>0x424	pstring			x	volume name: %s
449b6cee71dSXin LI
450b6cee71dSXin LI0x400	beshort			0x482B		Macintosh HFS Extended
451b6cee71dSXin LI>&0	beshort			x		version %d data
452b6cee71dSXin LI>0	beshort			0x4C4B		(bootable)
453b6cee71dSXin LI>0x404	belong			^0x00000100	(mounted)
454b6cee71dSXin LI>&2	belong			&0x00000200	(spared blocks)
455b6cee71dSXin LI>&2	belong			&0x00000800	(unclean)
456b6cee71dSXin LI>&2	belong			&0x00008000	(locked)
457b6cee71dSXin LI>&6	string			x		last mounted by: '%.4s',
458b6cee71dSXin LI# really, that should be treated as a belong and we print a string
459b6cee71dSXin LI# based on the value. TN1150 only mentions '8.10' for "MacOS 8.1"
460b6cee71dSXin LI>&14	beldate-0x7C25B080	x		created: %s,
461b6cee71dSXin LI# only the creation date is local time, all other timestamps in HFS+ are UTC.
462b6cee71dSXin LI>&18	bedate-0x7C25B080	x		last modified: %s,
463b6cee71dSXin LI>&22	bedate-0x7C25B080	>0		last backup: %s,
464b6cee71dSXin LI>&26	bedate-0x7C25B080	>0		last checked: %s,
465b6cee71dSXin LI>&38	belong			x		block size: %d,
466b6cee71dSXin LI>&42	belong			x		number of blocks: %d,
467b6cee71dSXin LI>&46	belong			x		free blocks: %d
468b6cee71dSXin LI
469b6cee71dSXin LI## AFAIK, only the signature is different
470c2931133SXin LI# same as Apple Partition Map
471c2931133SXin LI# GRR: This magic is too weak, it is just "TS"
472b6cee71dSXin LI#0x200		beshort		0x5453		Apple Old Partition data
473b6cee71dSXin LI#>0x2		beshort		x		block size: %d,
474b6cee71dSXin LI#>0x230		string		x		first type: %s,
475b6cee71dSXin LI#>0x210		string		x		name: %s,
476b6cee71dSXin LI#>0x254		belong		x		number of blocks: %d,
477b6cee71dSXin LI#>0x400		beshort		0x504D
478b6cee71dSXin LI#>>0x430		string		x		second type: %s,
479b6cee71dSXin LI#>>0x410		string		x		name: %s,
480b6cee71dSXin LI#>>0x454		belong		x		number of blocks: %d,
481b6cee71dSXin LI#>>0x800		beshort		0x504D
482b6cee71dSXin LI#>>>0x830	string		x		third type: %s,
483b6cee71dSXin LI#>>>0x810	string		x		name: %s,
484b6cee71dSXin LI#>>>0x854	belong		x		number of blocks: %d,
485b6cee71dSXin LI#>>>0xa00	beshort		0x504D
486b6cee71dSXin LI#>>>>0xa30	string		x		fourth type: %s,
487b6cee71dSXin LI#>>>>0xa10	string		x		name: %s,
488b6cee71dSXin LI#>>>>0xa54	belong		x		number of blocks: %d
489b6cee71dSXin LI
490b6cee71dSXin LI# From: Remi Mommsen <mommsen@slac.stanford.edu>
491b6cee71dSXin LI0		string		BOMStore	Mac OS X bill of materials (BOM) file
492b6cee71dSXin LI
493b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com>
49448c779cdSXin LI# URL: https://en.wikipedia.org/wiki/Datafork_TrueType
495b6cee71dSXin LI# Derived from the 'fondu' and 'ufond' source code (fondu.sf.net). 'sfnt' is
496b6cee71dSXin LI# TrueType; 'POST' is PostScript. 'FONT' and 'NFNT' sometimes appear, but I
497b6cee71dSXin LI# don't know what they mean.
498b6cee71dSXin LI0	belong	0x100
499b6cee71dSXin LI>(0x4.L+24)	beshort	x
500b6cee71dSXin LI>>&4	belong	0x73666e74	Mac OSX datafork font, TrueType
501b6cee71dSXin LI>>&4	belong	0x464f4e54	Mac OSX datafork font, 'FONT'
502b6cee71dSXin LI>>&4	belong	0x4e464e54	Mac OSX datafork font, 'NFNT'
503b6cee71dSXin LI>>&4	belong	0x504f5354	Mac OSX datafork font, PostScript
504