[File] [PATCH] Magdir/ole2compounddocs for "newer" Autodesk 3ds MAX

Jörg Jenderek joerg.jen.der.ek at gmx.net
Wed Feb 23 15:20:06 UTC 2022


Hello,

some days ago i handles some 3D objects with file name extension MAX.

When running file command version 5.41 with -e cdf option on such
examples i get an output like:

A380.max:                OLE 2 Compound Document, v3.62, SecID 0x1,
                         39 FAT sectors,
                         Mini FAT start sector 0x12b4,
                         2 Mini FAT sectors
			 : UNKNOWN,
			 clsid 0x7b8cdd1cc081a0459fed04143144cc1e
Lowpoly_tree_sample.max: OLE 2 Compound Document, v4.62, SecID 0x1,
                         Mini FAT start sector 0x2,
                         blocksize 4096
			 : UNKNOWN,
			 clsid 0x7b8cdd1cc081a0459fed04143144cc1e
Moon 2K.max:             OLE 2 Compound Document, v4.62, SecID 0x1,
                         Mini FAT start sector 0x2,
			 blocksize 4096
			 : UNKNOWN,
			 clsid 0x7b8cdd1cc081a0459fed04143144cc1e
Porsche_911_GT2.max:     OLE 2 Compound Document, v3.62, SecID 0x1,
                         18 FAT sectors,
                         Mini FAT start sector 0x889,
			 2 Mini FAT sectors
			 : UNKNOWN,
			 clsid 0x7b8cdd1cc081a0459fed04143144cc1e
T&C.max:                 OLE 2 Compound Document, v4.62, SecID 0x1,
                         15 FAT sectors,
                         Mini FAT start sector 0x2,
			 blocksize 4096
			 : UNKNOWN,
			 clsid 0x7b8cdd1cc081a0459fed04143144cc1e
interior max.max:        OLE 2 Compound Document, v4.62, SecID 0x1,
         		 6 FAT sectors,
			 Mini FAT start sector 0x2,
			 blocksize 4096
			 : UNKNOWN,
			 clsid 0x7b8cdd1cc081a0459fed04143144cc1e
scania.max:              OLE 2 Compound Document, v3.62, SecID 0x1,
                         284 FAT sectors,
                         Mini FAT start sector 0x8d59,
			 2 Mini FAT sectors,
			 DIFAT start sector 0x3681, 2 DIFAT sectors
			 : UNKNOWN,
			 clsid 0x7b8cdd1cc081a0459fed04143144cc1e
scania_2009.max:         OLE 2 Compound Document, v4.62, SecID 0x1,
                         5 FAT sectors,
                         Mini FAT start sector 0x11dc,
			 blocksize 4096
			 : UNKNOWN,
			 clsid 0x7b8cdd1cc081a0459fed04143144cc1e

Furthermore only generic mime type application/x-ole-storage is
shown with -i and -e cdf option. With option --extension only 3 byte
sequence ??? is shown.

When running file command with -e soft or no extra option for all
examples i get a output like:

A380.max:                Composite Document File V2 Document,
			 Little Endian, Os: Windows, Version 5.1,
			 Code page: 1200, Locale ID: 1033
Lowpoly_tree_sample.max: Composite Document File V2 Document,
			 Little Endian, Os: Windows, Version 10.0,
			 Code page: -535, Locale ID: 1033
Moon 2K.max:             Composite Document File V2 Document,
     			 Little Endian, Os: Windows, Version 6.1,
			 Code page: -535, Locale ID: 1049
Porsche_911_GT2.max:     Composite Document File V2 Document,
			 Little Endian, Os: Windows, Version 5.1,
			 Code page: 1200, Locale ID: 1033
T&C.max:                 Composite Document File V2 Document,
			 Little Endian, Os: Windows, Version 10.0,
			 Code page: -535, Locale ID: 1055
interior max.max:        Composite Document File V2 Document,
	 		 Little Endian, Os: Windows, Version 6.1,
			 Code page: -535, Locale ID: 1033
scania.max:              Composite Document File V2 Document,
			 Little Endian, Os: Windows, Version 5.1,
			 Code page: 1200, Locale ID: 1033
scania_2009.max:         Composite Document File V2 Document,
			 Little Endian, Os: Windows, Version 5.1,
			 Code page: 1200, Locale ID: 1033

For comparison reason i run the file format identification utility
TrID ( See https://mark0.net/soft-trid-e.html). This identifies also
all examples with low priority as "Generic OLE2 / Multistream
Compound" by docfile.trid.xml. All examples are described as "3D
Studio Max Scene" with MAX file name extension by max.trid.xml
(See appended trid-v-max.txt.gz).

For comparison reason i also run the file format identification
utility DROID ( See https://sourceforge.net/projects/droid/). This
identifies many "3DS Max" with MAX file name extension by PUID
fmt/978. Some examples are only described generic as "OLE2 Compound
Document Format" by fmt/111 Signature (See appended
droid-max.csv.gz).

Luckily with information given by the other tools i also found a
page about MAX (3ds Max) on file formats archive team web site.
There it is written that is is based on Microsoft Compound File
format. Following that internal link jumps to that page. There are
also displayed CLSID is mentioned. That informations are expressed by
comment lines inside Magdir/ole2compounddocs like:
# URL: http://fileformats.archiveteam.org/wiki/MAX_(3ds_Max)
# Reference:
#  http://fileformats.archiveteam.org/wiki/Microsoft_Compound_File

The MAX examples are recognized as "OLE 2 Compound Document"
by starting bytes (\320\317\021\340\241\261\032\341) at the beginning
inside Magdir/ole2compounddocs. Obviously there exist no code
fragment to do sub class identification. So the examples are
described as "UNKNOWN". Furthermore the examples have a registered
Root storage object CLSID. That value is shown as
0x7b8cdd1cc081a0459fed04143144cc1e or expressed in standard curly
braces expression by {1CDD8C7B-81C0-45A0-9FED-04143144CC1E}.
That means that in branch handling non null CLSID GUID lines ,ust be
added. The last entry was PlanMaker document or template (*pmd,*.pmv)

So i add afterwards lines for my inspected examples. That looks like:

>>88 	ubequad		0x9fed04143144cc1e	: Autodesk
>>>80 	ubequad		0x7b8cdd1cc081a045	3ds Max
!:mime	model/x-autodesk-max
!:ext	max

I found no official or often used mime type. So i display an user
defined one. According to DROID by fmt/978 also 3 byte chr file name
extension is probably used for character file, but i found no such
examples. So i show only extension MAX.

After applying the above mentioned modifications by patch
file-5.41-ole2compounddocs-max.diff then all my "newer" inspected MAX
examples are now described with more details. This now looks with -e
cdf option like:

A380.max:                OLE 2 Compound Document, v3.62, SecID 0x1,
                         39 FAT sectors,
                         Mini FAT start sector 0x12b4,
                         2 Mini FAT sectors
                         : Autodesk 3ds Max
Lowpoly_tree_sample.max: OLE 2 Compound Document, v4.62, SecID 0x1,
                         Mini FAT start sector 0x2,
                         blocksize 4096
                         : Autodesk 3ds Max
Moon 2K.max:             OLE 2 Compound Document, v4.62, SecID 0x1,
                         Mini FAT start sector 0x2,
                         blocksize 4096
                         : Autodesk 3ds Max
Porsche_911_GT2.max:     OLE 2 Compound Document, v3.62, SecID 0x1,
                         18 FAT sectors,
                         Mini FAT start sector 0x889,
                         2 Mini FAT sectors
                         : Autodesk 3ds Max
T&C.max:                 OLE 2 Compound Document, v4.62, SecID 0x1,
                         15 FAT sectors,
                         Mini FAT start sector 0x2,
                         blocksize 4096
                         : Autodesk 3ds Max
interior max.max:        OLE 2 Compound Document, v4.62, SecID 0x1,
                         6 FAT sectors,
                         Mini FAT start sector 0x2,
                         blocksize 4096
                         : Autodesk 3ds Max
scania.max:              OLE 2 Compound Document, v3.62, SecID 0x1,
                         284 FAT sectors,
                         Mini FAT start sector 0x8d59,
                         2 Mini FAT sectors,
                         DIFAT start sector 0x3681, 2 DIFAT sectors
                         : Autodesk 3ds Max
scania_2009.max:         OLE 2 Compound Document, v4.62, SecID 0x1,
                         5 FAT sectors,
                         Mini FAT start sector 0x11dc,
                         blocksize 4096
                         : Autodesk 3ds Max

I hope my diff file can be applied in future version of file
utility.

There seem to exist some older MAX examples where a little other
format is used. I will try to handle this in a future session.

With best wishes,
Jörg Jenderek
--
Jörg Jenderek

-------------- next part --------------
-- 
File mailing list
File at astron.com
https://mailman.astron.com/mailman/listinfo/file

-------------- next part --------------
A non-text attachment was scrubbed...
Name: trid-v-max.txt.gz
Type: application/x-gzip
Size: 590 bytes
Desc: not available
URL: <https://mailman.astron.com/pipermail/file/attachments/20220223/82b608ff/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: droid-max.csv.gz
Type: application/x-gzip
Size: 566 bytes
Desc: not available
URL: <https://mailman.astron.com/pipermail/file/attachments/20220223/82b608ff/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: file-5.41-ole2compounddocs-max.diff.sig
Type: application/octet-stream
Size: 768 bytes
Desc: not available
URL: <https://mailman.astron.com/pipermail/file/attachments/20220223/82b608ff/attachment.obj>
-------------- next part --------------
--- file-5.41/magic/Magdir/ole2compounddocs.old	2021-09-07 11:39:31.000000000 +0200
+++ file-5.41/magic/Magdir/ole2compounddocs	2022-02-23 16:10:56.954919800 +0100
@@ -562,2 +562,16 @@
 !:ext	pmd/pmv
+# URL:		http://fileformats.archiveteam.org/wiki/MAX_(3ds_Max)
+#		https://en.wikipedia.org/wiki/Autodesk_3ds_Max
+# Reference:	http://fileformats.archiveteam.org/wiki/Microsoft_Compound_File
+# Note:		called "3D Studio Max Scene" by TrID and "3DS Max" by DROID and
+#		"3DSMax thumbnail" by XnView and verfied by `nconvert -info A380.max`
+#		applies only to "newer" versions (about 2008-2020)
+>>88 	ubequad		0x9fed04143144cc1e	: Autodesk
+>>>80 	ubequad		0x7b8cdd1cc081a045	3ds Max
+#!:mime	application/x-ole-storage
+!:mime	model/x-autodesk-max
+# like: https://static.free3d.com/models/dropbox/dropbox/sq/A380.7z/A380.max 
+!:ext	max
+# also chr for character file according to DROID https://www.nationalarchives.gov.uk/PRONOM/fmt/978
+#!:ext	max/chr
 # remaining non null clsid


More information about the File mailing list