1
.\" Hey, EMACS: -*- nroff -*-
2
.\" First parameter, NAME, should be all caps
3
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
4
.\" other parameters are allowed: see man(7), man(1)
5
.TH VSDUMP 1 "jun 26, 2007"
6
.\" Please adjust this date whenever revising the manpage.
8
.\" Some roff macros, for reference:
9
.\" .nh disable hyphenation
10
.\" .hy enable hyphenation
11
.\" .ad l left justify
12
.\" .ad b justify to both left and right margins
13
.\" .nf disable filling
14
.\" .fi enable filling
15
.\" .br insert line break
16
.\" .sp <n> insert n+1 empty lines
17
.\" for manpage-specific macros, see man(7)
19
vsdump \- VSD/VSS file format reverse engineering
25
This manual page documents briefly the
29
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
30
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
32
\fBvsdump\fP is an ALT Linux (www.altlinux.ru) project of VSD/VSS file
33
format reverse engineering.
34
VSD/VSS is an OLE file. Main data is stored in 'VisioDocument' file
35
inside this OLE. 'VisioDocument' file has a header with version number
36
and pointer to the 1st stream.
37
Pointers contain Type, Offset to the start, Length, and Format of stream.
38
The Format field has a 'compressed' flag (the 2nd least significant bit).
40
Format == 0x4* is used for streams that contains some strings.
42
Format == 0x5* is used for streams that contains some pointers.
44
Format == 0xd* is used for streams made of chunks.
46
Type == 15 is used for streams that contains 'Page' data.
48
Type == 23 is used for streams that contains Icons.
52
To (de)compress some streams Visio uses some version of LZW
53
algorithmwith options different from other MS-Office applications.
55
Those streams are made of chunks. Chunks starts with header that contains
56
Type and Length fields. Most of chunk types has a mandatory fields and
57
some of them has a discretionary fields. The type of chunk imply an order
58
and format of mandatory fields and place of start for discretionary fields
61
The discrepionary fields made of 'blocks'. Blocks start with length, type
62
fields and index of variable it is linked to.
64
Blocks made of 'slices'. Every slice can be single byte operation like
65
"+" or "*" or 'command' to put one/two bytes data or IEEE-754 fraction
66
or stringor name or function into formula.
68
A summary of options is included below.
74
.B dump <file> [directory]
75
dump pointers and inflated streams
80
vsdump was written by Valek Filippov (frob@df.ru)
82
This manual page was written by Juan Angulo Moreno <juan@apuntale.com>,
83
for the Debian project (but may be used by others).