1 2#------------------------------------------------------------------------------ 3# $File: macintosh,v 1.28 2017/12/05 02:17:48 christos Exp $ 4# macintosh description 5# 6# BinHex is the Macintosh ASCII-encoded file format (see also "apple") 7# Daniel Quinlan, quinlan@yggdrasil.com 811 string must\ be\ converted\ with\ BinHex BinHex binary text 9!:mime application/mac-binhex40 10>41 string x \b, version %.3s 11 12# Stuffit archives are the de facto standard of compression for Macintosh 13# files obtained from most archives. (franklsm@tuns.ca) 140 string SIT! StuffIt Archive (data) 15!:mime application/x-stuffit 16!:apple SIT!SIT! 17>2 string x : %s 180 string SITD StuffIt Deluxe (data) 19>2 string x : %s 200 string Seg StuffIt Deluxe Segment (data) 21>2 string x : %s 22 23# Newer StuffIt archives (grant@netbsd.org) 240 string StuffIt StuffIt Archive 25!:mime application/x-stuffit 26!:apple SIT!SIT! 27#>162 string >0 : %s 28 29# Macintosh Applications and Installation binaries (franklsm@tuns.ca) 30# GRR: Too weak 31#0 string APPL Macintosh Application (data) 32#>2 string x \b: %s 33 34# Macintosh System files (franklsm@tuns.ca) 35# GRR: Too weak 36#0 string zsys Macintosh System File (data) 37#0 string FNDR Macintosh Finder (data) 38#0 string libr Macintosh Library (data) 39#>2 string x : %s 40#0 string shlb Macintosh Shared Library (data) 41#>2 string x : %s 42#0 string cdev Macintosh Control Panel (data) 43#>2 string x : %s 44#0 string INIT Macintosh Extension (data) 45#>2 string x : %s 46#0 string FFIL Macintosh Truetype Font (data) 47#>2 string x : %s 48#0 string LWFN Macintosh Postscript Font (data) 49#>2 string x : %s 50 51# Additional Macintosh Files (franklsm@tuns.ca) 52# GRR: Too weak 53#0 string PACT Macintosh Compact Pro Archive (data) 54#>2 string x : %s 55#0 string ttro Macintosh TeachText File (data) 56#>2 string x : %s 57#0 string TEXT Macintosh TeachText File (data) 58#>2 string x : %s 59#0 string PDF Macintosh PDF File (data) 60#>2 string x : %s 61 62# MacBinary format (Eric Fischer, enf@pobox.com) 63# Update: Joerg Jenderek 64# URL: https://en.wikipedia.org/wiki/MacBinary 65# Reference: http://files.stairways.com/other/macbinaryii-standard-info.txt 66# 67# Unfortunately MacBinary doesn't really have a magic number prior 68# to the MacBinary III format. 69# 70 71# old version number, must be kept at zero for compatibility 720 byte 0 73# length of filename (must be in the range 1-63) 74>1 ubyte >0 75# skip T.PIC.LZ INSTRUMENT.7T INVENTORY 76>>1 ubyte <64 77# skip Docs.MWII ReadMe.MacWrite "Notes (MacWrite II)" 78# by looking for printable characters at beginning of file name 79>>>2 ubelong >0x1F000000 80# zero fill, must be zero for compatibility 81>>>>74 byte 0 82# zero fill, must be zero for compatibility 83>>>>>82 byte 0 84# MacBinary I test for valid version numbers 85>>>>>>122 ubeshort 0 86# additional check for creation date after 1 Jan 1970 ~ 7C25B080h 87#>>>>>>>91 ubelong >0x7c25b07F 88# additional check for undefined header fields in MacBinary I 89#>>>>>>>101 ulong 0 90>>>>>>>0 use mac-bin 91# MacBinary II the newer versions begins at 129 92>>>>>>122 ubeshort 0x8181 93>>>>>>>0 use mac-bin 94# MacBinary III with MacBinary II to read 95>>>>>122 ubeshort 0x8281 96>>>>>>0 use mac-bin 97 98# display information of MacBinary file 990 name mac-bin 100>122 ubyte x MacBinary 101# versions for MacBinary II/III 102>122 ubyte 129 II 103>122 ubyte 130 III 104# only in MacBinary III 105>>102 string !mBIN with surprising version 106!:mime application/x-macbinary 107!:apple PSPTBINA 108!:ext bin/macbin 109# THIS SHOULD NEVER HAPPEN! Maybe another file type is misidetified as MacBinary 110#>1 ubyte >63 \b, name length %u too BIG! 111#>122 ubeshort x \b, version 0x%x 112# Finder flags if not 0 113# >73 byte !0 \b, flags 0x 114# >73 byte =0 115# >>101 byte !0 \b, flags 0x 116# # original Finder flags (Bits 8-15) 117# >73 byte !0 \b%x 118# # finder flags, bits 0-7 119# >101 byte !0 \b%x 120>73 byte &0x01 \b, inited 121>73 byte &0x02 \b, changed 122>73 byte &0x04 \b, busy 123>73 byte &0x08 \b, bozo 124>73 byte &0x10 \b, system 125>73 byte &0x20 \b, bundle 126>73 byte &0x40 \b, invisible 127>73 byte &0x80 \b, locked 128 129# 75 beshort # vertical posn in window 130#>75 beshort !0 \b, v.pos %u 131# 77 beshort # horiz posn in window 132#>77 beshort !0 \b, h.pos %u 133# 79 beshort # window or folder ID 134>79 ubeshort !0 \b, ID 0x%x 135# protected flag 136>81 byte !0 \b, protected 0x%x 137# length of comment after resource 138>99 ubeshort !0 \b, comment length %u 139# char. code of file name 140>106 ubyte !0 \b, char. code 0x%x 141# still more Finder flags 142>107 ubyte !0 \b, more flags 0x%x 143# length of total files when unpacked only used when pack and unpack on the fly 144>116 ubelong !0 \b, total length %u 145# 120 beshort # length of add'l header 146>120 ubeshort !0 \b, 2nd header length %u 147# 124 beshort # checksum 148#>124 ubeshort !0 \b, CRC 0x%x 149# creation date in seconds since MacOS epoch start. So 1 Jan 1970 ~ 7C25B080 150>91 beldate-0x7C25B080 x \b, %s 151# THIS SHOULD NEVER HAPPEN! Maybe another file type is misidetified or time overflow 152>91 ubelong <0x7c25b080 INVALID date 153#>91 belong-0x7C25B080 x \b, DEBUG DATE %d 154# last modified date 155>95 beldate-0x7C25B080 x \b, modified %s 156# Apple creator+typ if not null 157# file creator (normally expressed as four characters) 158>69 ulong !0 \b, creator 159# instead 4 character code display full creator name 160>>69 use apple-creator 161# file type (normally expressed as four characters) 162>65 ulong !0 \b, type 163>>65 use apple-type 164# length of data segment 165>83 ubelong !0 \b, %u bytes 166# filename (in the range 1-63) 167>1 pstring x "%s" 168# print 1 space and then at offset 128 inspect data fork content if it has one 169>83 ubelong !0 \b 170>>128 indirect x 171# Afterwards resource fork if length of resource segment not zero 172>87 ubelong !0 173# calculate resource fork offset 174>>83 ubelong+128 x \b, at 0x%x 175# length of resource segment 176>>87 ubelong !0 %u bytes 177>>(83.S+128) ubequad x resource 178# further resource fork content inspection 179>>>&-8 indirect x 180 181# Apple Type/Creator Database 182# URL: https://en.wikipedia.org/wiki/Type_code 183# Reference: http://www.lacikam.co.il/tcdb/ 184# http://www.macdisk.com/macsigen.php 185# Note: classic Mac OS files have two 4 character codes for type and creator. 186# Thereby the Finder attach documents types to applications. 187 188#>65 string x \b, type "%4.4s" 189 190# display information about apple type 1910 name apple-type 192>0 string 8BIM PhotoShop 193>0 string ALB3 PageMaker 3 194>0 string ALB4 PageMaker 4 195>0 string ALT3 PageMaker 3 196>0 string APPL application 197>0 string AWWP AppleWorks word processor 198>0 string CIRC simulated circuit 199>0 string DRWG MacDraw 200>0 string EPSF Encapsulated PostScript 201>0 string FFIL font suitcase 202>0 string FKEY function key 203>0 string FNDR Macintosh Finder 204>0 string GIFf GIF image 205>0 string Gzip GNU gzip 206>0 string INIT system extension 207>0 string LIB\ library 208>0 string LWFN PostScript font 209>0 string MSBC Microsoft BASIC 210>0 string PACT Compact Pro archive 211>0 string PDF\ Portable Document Format 212>0 string PICT picture 213>0 string PNTG MacPaint picture 214>0 string PREF preferences 215>0 string PROJ Think C project 216>0 string QPRJ Think Pascal project 217>0 string SCFL Defender scores 218>0 string SCRN startup screen 219>0 string SITD StuffIt Deluxe 220>0 string SPn3 SuperPaint 221>0 string STAK HyperCard stack 222>0 string Seg\ StuffIt segment 223>0 string TARF Unix tar archive 224>0 string TEXT ASCII 225>0 string TIFF TIFF image 226>0 string TOVF Eudora table of contents 227>0 string WDBN Microsoft Word word processor 228>0 string WORD MacWrite word processor 229>0 string XLS\ Microsoft Excel 230>0 string ZIVM compress (.Z) 231>0 string ZSYS Pre-System 7 system file 232>0 string acf3 Aldus FreeHand 233>0 string cdev control panel 234>0 string dfil Desk Accessory suitcase 235>0 string libr library 236>0 string nX^d WriteNow word processor 237>0 string nX^w WriteNow dictionary 238>0 string rsrc resource 239>0 string scbk Scrapbook 240>0 string shlb shared library 241>0 string ttro SimpleText read-only 242>0 string zsys system file 243 244# additional types added in Dec 2017 245>0 string BINA binary file 246>0 string BMPp BMP image 247>0 string JPEG JPEG image 248#>0 string W4BN Microsoft Word x.y word processor? 249# if type name is not known display 4 character identifier 250>0 default x 251>>0 string x '%4.4s' 252 253#>69 string x \b, creator "%4.4s" 254 255# Now Apple has no repository of registered Creator IDs any more. These are 256# just the ones that I happened to have files from and was able to identify. 257 258# display information about apple creator 2590 name apple-creator 260>0 string 8BIM Adobe Photoshop 261>0 string ALD3 PageMaker 3 262>0 string ALD4 PageMaker 4 263>0 string ALFA Alpha editor 264>0 string APLS Apple Scanner 265>0 string APSC Apple Scanner 266>0 string BRKL Brickles 267>0 string BTFT BitFont 268>0 string CCL2 Common Lisp 2 269>0 string CCL\ Common Lisp 270>0 string CDmo The Talking Moose 271>0 string CPCT Compact Pro 272>0 string CSOm Eudora 273>0 string DMOV Font/DA Mover 274>0 string DSIM DigSim 275>0 string EDIT Macintosh Edit 276>0 string ERIK Macintosh Finder 277>0 string EXTR self-extracting archive 278>0 string Gzip GNU gzip 279>0 string KAHL Think C 280>0 string LWFU LaserWriter Utility 281>0 string LZIV compress 282>0 string MACA MacWrite 283>0 string MACS Macintosh operating system 284>0 string MAcK MacKnowledge terminal emulator 285>0 string MLND Defender 286>0 string MPNT MacPaint 287>0 string MSBB Microsoft BASIC (binary) 288>0 string MSWD Microsoft Word 289>0 string NCSA NCSA Telnet 290>0 string PJMM Think Pascal 291>0 string PSAL Hunt the Wumpus 292#>0 string PSI2 Apple File Exchange 293>0 string R*ch BBEdit 294>0 string RMKR Resource Maker 295>0 string RSED Resource Editor 296>0 string Rich BBEdit 297>0 string SIT! StuffIt 298>0 string SPNT SuperPaint 299>0 string Unix NeXT Mac filesystem 300>0 string VIM! Vim editor 301>0 string WILD HyperCard 302>0 string XCEL Microsoft Excel 303>0 string aCa2 Fontographer 304>0 string aca3 Aldus FreeHand 305>0 string dosa Macintosh MS-DOS file system 306>0 string movr Font/DA Mover 307>0 string nX^n WriteNow 308>0 string pdos Apple ProDOS file system 309>0 string scbk Scrapbook 310>0 string ttxt SimpleText 311>0 string ufox Foreign File Access 312# additional creators added in Dec 2017 313# Claris/Apple Works 314>0 string BOBO Apple Works 315# CU-SeeMe_0.87b3_(68K).bin 316#>0 string CUce bar 317>0 string PSPT Apple File Exchange 318# Disk_Copy_4.2.sea.bin 319#>0 string NCse foo 320# probably StuffIt/Aladdin by Smith Micro Software, Inc. 321>0 string STi0 stuffit 322# MacGzip-1.1.3.sea.bin 323#>0 string aust bar 324# D-Disk_Copy_6.3.3.smi.bin 325>0 string oneb Disk Copy Self Mounting 326# if creator name is not known display 4 character identifier 327>0 default x 328>>0 string x '%4.4s' 329 330# sas magic from Bruce Foster (bef@nwu.edu) 331# 332#0 string SAS SAS 333#>8 string x %s 3340 string SAS SAS 335>24 string DATA data file 336>24 string CATALOG catalog 337>24 string INDEX data file index 338>24 string VIEW data view 339# sas 7+ magic from Reinhold Koch (reinhold.koch@roche.com) 340# 3410x54 string SAS SAS 7+ 342>0x9C string DATA data file 343>0x9C string CATALOG catalog 344>0x9C string INDEX data file index 345>0x9C string VIEW data view 346 347# spss magic for SPSS system and portable files, 348# from Bruce Foster (bef@nwu.edu). 349 3500 long 0xc1e2c3c9 SPSS Portable File 351>40 string x %s 352 3530 string $FL2 SPSS System File 354>24 string x %s 355 3560 string $FL3 SPSS System File 357>24 string x %s 358 359# Macintosh filesystem data 360# From "Tom N Harris" <telliamed@mac.com> 361# Fixed HFS+ and Partition map magic: Ethan Benson <erbenson@alaska.net> 362# The MacOS epoch begins on 1 Jan 1904 instead of 1 Jan 1970, so these 363# entries depend on the data arithmetic added after v.35 364# There's also some Pascal strings in here, ditto... 365 366# The boot block signature, according to IM:Files, is 367# "for HFS volumes, this field always contains the value 0x4C4B." 368# But if this is true for MFS or HFS+ volumes, I don't know. 369# Alternatively, the boot block is supposed to be zeroed if it's 370# unused, so a simply >0 should suffice. 371 3720x400 beshort 0xD2D7 Macintosh MFS data 373>0 beshort 0x4C4B (bootable) 374>0x40a beshort &0x8000 (locked) 375>0x402 beldate-0x7C25B080 x created: %s, 376>0x406 beldate-0x7C25B080 >0 last backup: %s, 377>0x414 belong x block size: %d, 378>0x412 beshort x number of blocks: %d, 379>0x424 pstring x volume name: %s 380 381# *.hfs updated by Joerg Jenderek 382# http://en.wikipedia.org/wiki/Hierarchical_File_System 383# "BD" gives many false positives 3840x400 beshort 0x4244 385# ftp://ftp.mars.org/pub/hfs/hfsutils-3.2.6.tar.gz/hfsutils-3.2.6/libhfs/apple.h 386# first block of volume bit map (always 3) 387>0x40e ubeshort 0x0003 388# maximal length of volume name is 27 389>>0x424 ubyte <28 Macintosh HFS data 390!:mime application/x-apple-diskimage 391#!:apple hfsdINIT 392#!:apple MACSdisk 393# http://www.macdisk.com/macsigen.php 394#!:apple ddskdevi 395!:apple ????devi 396# https://en.wikipedia.org/wiki/Apple_Disk_Image 397!:ext hfs/dmg 398>>>0 beshort 0x4C4B (bootable) 399#>>>0 beshort 0x0000 (not bootable) 400>>>0x40a beshort &0x8000 (locked) 401>>>0x40a beshort ^0x0100 (mounted) 402>>>0x40a beshort &0x0200 (spared blocks) 403>>>0x40a beshort &0x0800 (unclean) 404>>>0x47C beshort 0x482B (Embedded HFS+ Volume) 405# http://www.epochconverter.com/ 406# 0x7C245F00 seconds ~ 2082758400 ~ 01 Jan 2036 00:00:00 ~ 66 years to 1970 407# 0x7C25B080 seconds ~ 2082844800 ~ 02 Jan 2036 00:00:00 408# construct not working 409#>>>0x402 beldate-0x7C25B080 x created: %s, 410#>>>0x406 beldate-0x7C25B080 x last modified: %s, 411#>>>0x440 beldate-0x7C25B080 >0 last backup: %s, 412# found block sizes 200h,1200h,2800h 413>>>0x414 belong x block size: %d, 414>>>0x412 beshort x number of blocks: %d, 415>>>0x424 pstring x volume name: %s 416 4170x400 beshort 0x482B Macintosh HFS Extended 418>&0 beshort x version %d data 419>0 beshort 0x4C4B (bootable) 420>0x404 belong ^0x00000100 (mounted) 421>&2 belong &0x00000200 (spared blocks) 422>&2 belong &0x00000800 (unclean) 423>&2 belong &0x00008000 (locked) 424>&6 string x last mounted by: '%.4s', 425# really, that should be treated as a belong and we print a string 426# based on the value. TN1150 only mentions '8.10' for "MacOS 8.1" 427>&14 beldate-0x7C25B080 x created: %s, 428# only the creation date is local time, all other timestamps in HFS+ are UTC. 429>&18 bedate-0x7C25B080 x last modified: %s, 430>&22 bedate-0x7C25B080 >0 last backup: %s, 431>&26 bedate-0x7C25B080 >0 last checked: %s, 432>&38 belong x block size: %d, 433>&42 belong x number of blocks: %d, 434>&46 belong x free blocks: %d 435 436## AFAIK, only the signature is different 437# same as Apple Partition Map 438# GRR: This magic is too weak, it is just "TS" 439#0x200 beshort 0x5453 Apple Old Partition data 440#>0x2 beshort x block size: %d, 441#>0x230 string x first type: %s, 442#>0x210 string x name: %s, 443#>0x254 belong x number of blocks: %d, 444#>0x400 beshort 0x504D 445#>>0x430 string x second type: %s, 446#>>0x410 string x name: %s, 447#>>0x454 belong x number of blocks: %d, 448#>>0x800 beshort 0x504D 449#>>>0x830 string x third type: %s, 450#>>>0x810 string x name: %s, 451#>>>0x854 belong x number of blocks: %d, 452#>>>0xa00 beshort 0x504D 453#>>>>0xa30 string x fourth type: %s, 454#>>>>0xa10 string x name: %s, 455#>>>>0xa54 belong x number of blocks: %d 456 457# From: Remi Mommsen <mommsen@slac.stanford.edu> 4580 string BOMStore Mac OS X bill of materials (BOM) file 459 460# From: Adam Buchbinder <adam.buchbinder@gmail.com> 461# URL: http://en.wikipedia.org/wiki/Datafork_TrueType 462# Derived from the 'fondu' and 'ufond' source code (fondu.sf.net). 'sfnt' is 463# TrueType; 'POST' is PostScript. 'FONT' and 'NFNT' sometimes appear, but I 464# don't know what they mean. 4650 belong 0x100 466>(0x4.L+24) beshort x 467>>&4 belong 0x73666e74 Mac OSX datafork font, TrueType 468>>&4 belong 0x464f4e54 Mac OSX datafork font, 'FONT' 469>>&4 belong 0x4e464e54 Mac OSX datafork font, 'NFNT' 470>>&4 belong 0x504f5354 Mac OSX datafork font, PostScript 471