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