[File] [PATCH] Magdir/ole2compounddocs for Microsoft VisualStudio Solution User Option *.SUO

Jörg Jenderek joerg.jen.der.ek at gmx.net
Sun Jul 24 01:33:49 UTC 2022


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hello,

some days ago i must use Microsoft Visual Studio. It creates some
files with extension SUO.

Just for interest i checked these  Microsoft files. When running file
command version 5.42 with -e cdf option on some examples i get an
output like:

.suo:                 OLE 2 Compound Document, v3.62, SecID 0,
		      2 FAT sectors,
		      Mini FAT start sector 0x6, 2 Mini FAT sectors
		      : UNKNOWN with names ProjInfoEx
		      XmlPackageOptions ProjExplorerState
DiskCopy2Dsk.v11.suo: OLE 2 Compound Document, v3.62, SecID 0,
		      Mini FAT start sector 0x15, 2 Mini FAT sectors
		      : UNKNOWN with names ProjInfoEx
		      TaskListUserTasks WindowManager.Pinned
ImageWriter.suo:      OLE 2 Compound Document, v3.62, SecID 0x1,
		      Mini FAT start sector 0x2, 2 Mini FAT sectors
		      : UNKNOWN with names ProjInfoEx
		      TaskListUserTasks ProjectDesigner
cmpi.suo:             OLE 2 Compound Document, v3.62, SecID 0x1,
		      2 FAT sectors,
		      Mini FAT start sector 0x2, 3 Mini FAT sectors
		      : UNKNOWN with names ProjInfoEx
		      TaskListUserTasks DebuggerWatches
libdbx.suo:           OLE 2 Compound Document, v3.62, SecID 0x1,
		      Mini FAT start sector 0x2
		      : UNKNOWN with names TaskListUserTasks
		      IVSMDPropertyBrowser IToolboxService
streamfilter.suo:     OLE 2 Compound Document, v3.62, SecID 0x1,
		      Mini FAT start sector 0x2
		      : UNKNOWN with names ProjInfoEx
		      164B10B9-B200-11D0_P TaskListUserTasks

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
inspected examples i get a output like:
Composite Document File V2 Document, Cannot read section info

For comparison reason i run the file format identification utility
TrID ( See https://mark0.net/soft-trid-e.html). This identifies
all examples with low priority as "Generic OLE2 / Multistream
Compound" by docfile.trid.xml. Most examples are also described
correctly with high rate as "Microsoft VisualStudio Solution User
Options" by vs-suo.trid.xml (See appended trid-v-suo.txt.gz).

For comparison reason i also run the file format identification
utility DROID ( See https://sourceforge.net/projects/droid/). This
identifies the examples generic as "OLE2 Compound Document Format"
by fmt/111 signature.

Luckily with shown information i use the general Microsoft Visual
Studio page on Wikipedia site. That informations are expressed by
comment lines inside Magdir/ole2compounddocs like:

# URL:		http://en.wikipedia.org/wiki/Visual_Studio
# Reference:	http://mark0.net/download/triddefs_xml.7z
#		defs/v/vs-suo.trid.xml

The 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 no registered
Root storage object CLSID or this value is nil. In that case file
command would display afterwords this information by a phrase like
", clsid 0xc0c7266eb98cd311a1c800c04f612452". That means that in
branch handling CLSID GUID 0 code must be added.

We see that TaskListUserTasks is often third name in directory or
sometimes second entry. When looking in TrID definition we see that
this name string in UTF-16 form is used as characteristic magic
pattern. For samples without this phrase second name in directory is
ProjInfoEx.

The last similar entry was Microsoft Access wizard template (*.MDZ).
So i add afterwards lines for my inspected examples. That looks like:

 >>>>256 lestring16 TaskListUserTasks	: Microsoft VisualStudio
 !:mime	application/x-ms-suo
 !:ext	suo
 >>>>256 	default		x
 >>>>>128 lestring16 ProjInfoEx		: Microsoft VisualStudio
 !:mime	application/x-ms-suo
 !:ext	suo
 >>>>>128 lestring16 TaskListUserTasks	: Microsoft VisualStudio
 !:mime	application/x-ms-suo
 !:ext	suo
Instead of generic application/x-ole-storage i choose an user
defined mime type.

After applying the above mentioned modifications by patch
file-5.42-ole2compounddocs-suo.diff then all my inspected Microsoft
SUO examples are now described with more details. This now looks with
option -e cdf like:

.suo:                 OLE 2 Compound Document, v3.62, SecID 0,
		      2 FAT sectors,
		      Mini FAT start sector 0x6, 2 Mini FAT sectors
		      : Microsoft VisualStudio Solution User Option
DiskCopy2Dsk.v11.suo: OLE 2 Compound Document, v3.62, SecID 0,
		      Mini FAT start sector 0x15, 2 Mini FAT sectors
		      : Microsoft VisualStudio Solution User Option
ImageWriter.suo:      OLE 2 Compound Document, v3.62, SecID 0x1,
		      Mini FAT start sector 0x2, 2 Mini FAT sectors
		      : Microsoft VisualStudio Solution User Option
cmpi.suo:             OLE 2 Compound Document, v3.62, SecID 0x1,
		      2 FAT sectors,
		      Mini FAT start sector 0x2, 3 Mini FAT sectors
		      : Microsoft VisualStudio Solution User Option
libdbx.suo:           OLE 2 Compound Document, v3.62, SecID 0x1,
		      Mini FAT start sector 0x2
		      : Microsoft VisualStudio Solution User Option
streamfilter.suo:     OLE 2 Compound Document, v3.62, SecID 0x1,
		      Mini FAT start sector 0x2
		      : Microsoft VisualStudio Solution User Option

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

With best wishes,
Jörg Jenderek
- --
Jörg Jenderek
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/

iF0EARECAB0WIQS5/qNWKD4ASGOJGL+v8rHJQhrU1gUCYtyhfQAKCRCv8rHJQhrU
1iiUAKC59uf/ahfnufwI8Pw72GhqdW+i8QCfd7xkfrU9yk+w4H9nRXm0xw7IeOY=
=4NEL
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: trid-v-suo.txt.gz
Type: application/x-gzip
Size: 628 bytes
Desc: not available
URL: <https://mailman.astron.com/pipermail/file/attachments/20220724/173d0f51/attachment.bin>
-------------- next part --------------
--- file-5.42/magic/Magdir/ole2compounddocs.old	2022-05-31 19:38:36.000000000 +0200
+++ file-5.42/magic/Magdir/ole2compounddocs	2022-07-24 02:36:56.739085500 +0200
@@ -217,4 +217,27 @@
 !:ext	mdz
 #
+# From:		Joerg Jenderek
+# URL:		http://en.wikipedia.org/wiki/Visual_Studio
+# Reference:	http://mark0.net/download/triddefs_xml.7z/defs/v/vs-suo.trid.xml
+#		http://fileformats.archiveteam.org/wiki/Microsoft_Compound_File
+# Note:		called "Microsoft VisualStudio Solution User Options" by TrID
+# 3rd directory entry name often TaskListUserTasks
+>>>>256 	lestring16	TaskListUserTasks	: Microsoft VisualStudio Solution User Option
+#!:mime	application/x-ole-storage
+!:mime	application/x-ms-suo
+!:ext	suo
+# 4th directory entry name like ProjExplorerState DebuggerWatches
+>>>>256 	default		x
+# 2nd directory entry name sometimes TaskListUserTasks
+>>>>>128 	lestring16	TaskListUserTasks	: Microsoft VisualStudio Solution User Option
+#!:mime	application/x-ole-storage
+!:mime	application/x-ms-suo
+!:ext	suo
+# 2nd directory entry name often like ProjInfoEx
+>>>>>128 	lestring16	ProjInfoEx		: Microsoft VisualStudio Solution User Option
+#!:mime	application/x-ole-storage
+!:mime	application/x-ms-suo
+!:ext	suo
+#
 # URL:	http://fileformats.archiveteam.org/wiki/Corel_Print_House
 # Second directory entry name Thumbnail
-------------- next part --------------
A non-text attachment was scrubbed...
Name: file-5.42-ole2compounddocs-suo.diff.sig
Type: application/octet-stream
Size: 709 bytes
Desc: not available
URL: <https://mailman.astron.com/pipermail/file/attachments/20220724/173d0f51/attachment.obj>


More information about the File mailing list