Documentation
¶
Overview ¶
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Package pst This file is part of go-pst (https://github.com/mooijtech/go-pst) Copyright (C) 2021 Marten Mooij (https://www.mooijtech.com/)
Index ¶
- Constants
- Variables
- func DecodeBytesToString(encoding Encoding, data []byte) (string, error)
- func DecodeBytesToUTF16String(input []byte) (string, error)
- func DecodeCompressibleEncryption(data []byte) []byte
- func GetBTreeNodeEntryDataIdentifier(nodeEntryData []byte, formatType string) (int, error)
- func GetBTreeNodeEntryFileOffset(nodeEntryData []byte, formatType string, isBranchNode bool) (int, error)
- func GetBTreeNodeEntryIdentifier(nodeEntryData []byte, formatType string) (int, error)
- func GetBTreeNodeEntryIdentifierType(nodeEntryData []byte, formatType string) (int, error)
- func GetBTreeNodeEntryLocalDescriptorsIdentifier(nodeEntryData []byte, formatType string) (int, error)
- func GetBTreeNodeEntrySize(nodeEntryData []byte, formatType string) (int, error)
- type Attachment
- func (attachment *Attachment) GetFilename() (string, error)
- func (attachment *Attachment) GetInputStream(pstFile *File, formatType string, encryptionType string) (HeapOnNodeInputStream, error)
- func (attachment *Attachment) GetLongFilename() (string, error)
- func (attachment *Attachment) GetString(propertyID int) (string, error)
- func (attachment *Attachment) WriteToFile(outputPath string, pstFile *File, formatType string, encryptionType string) error
- type BTreeNodeEntry
- type BTreeOnHeapHeader
- type ColumnDescriptor
- type Encoding
- type File
- func (pstFile *File) Close() error
- func (pstFile *File) FindBTreeNode(btreeType int, identifier int) (BTreeNodeEntry, error)
- func (pstFile *File) GetBTreeNodeEntries(btreeNodeOffset int, formatType string, nodeLevel int) ([]BTreeNodeEntry, error)
- func (pstFile *File) GetBTreeNodeEntryCount(btreeNodeOffset int, formatType string) (int, error)
- func (pstFile *File) GetBTreeNodeEntrySize(btreeNodeOffset int, formatType string) (int, error)
- func (pstFile *File) GetBTreeNodeLevel(btreeNodeOffset int, formatType string) (int, error)
- func (pstFile *File) GetBTreeOnHeapHeader(heapOnNode HeapOnNode, localDescriptors []LocalDescriptor, formatType string, ...) (BTreeOnHeapHeader, error)
- func (pstFile *File) GetBlockBTreeNode(identifier int) (BTreeNodeEntry, error)
- func (pstFile *File) GetBlockBTreeOffset(formatType string) (int, error)
- func (pstFile *File) GetBlockIdentifierSize(formatType string) (int, error)
- func (pstFile *File) GetBlockSize(formatType string) (int, error)
- func (pstFile *File) GetBlockTrailerSize(formatType string) (int, error)
- func (pstFile *File) GetBlocks(nodeEntryHeapOnNodeOffset int, formatType string) ([]BTreeNodeEntry, error)
- func (pstFile *File) GetBlocksTotalSize(nodeEntryHeapOnNodeOffset int) (int, error)
- func (pstFile *File) GetContentType() ([]byte, error)
- func (pstFile *File) GetDataBTreeNode(identifier int) (BTreeNodeEntry, error)
- func (pstFile *File) GetEncryptionType(formatType string) (string, error)
- func (pstFile *File) GetFormatType() (string, error)
- func (pstFile *File) GetLocalDescriptors(btreeNodeEntry BTreeNodeEntry, formatType string) ([]LocalDescriptor, error)
- func (pstFile *File) GetLocalDescriptorsFromIdentifier(localDescriptorsIdentifier int, formatType string) ([]LocalDescriptor, error)
- func (pstFile *File) GetMessage(identifier int, formatType string, encryptionType string) (Message, error)
- func (pstFile *File) GetMessageStore(formatType string, encryptionType string) (MessageStore, error)
- func (pstFile *File) GetMessageTableContext(folder Folder, formatType string, encryptionType string) ([][]TableContextItem, error)
- func (pstFile *File) GetMessages(folder Folder, formatType string, encryptionType string) ([]Message, error)
- func (pstFile *File) GetNameToIDMap(formatType string, encryptionType string) (*NameToIDMap, error)
- func (pstFile *File) GetNodeBTreeNode(identifier int) (BTreeNodeEntry, error)
- func (pstFile *File) GetNodeBTreeOffset(formatType string) (int, error)
- func (pstFile *File) GetPropertyContext(heapOnNode HeapOnNode, formatType string, encryptionType string) ([]PropertyContextItem, error)
- func (pstFile *File) GetRootFolder(formatType string, encryptionType string) (Folder, error)
- func (pstFile *File) GetSubFolderTableContext(folder Folder, formatType string, encryptionType string) ([][]TableContextItem, error)
- func (pstFile *File) GetSubFolders(folder Folder, formatType string, encryptionType string) ([]Folder, error)
- func (pstFile *File) GetTableContext(heapOnNode HeapOnNode, localDescriptors []LocalDescriptor, formatType string, ...) ([][]TableContextItem, error)
- func (pstFile *File) InitializeBTree(btreeType int, formatType string) error
- func (pstFile *File) InitializeBTrees(formatType string) error
- func (pstFile *File) InitializeNameToIDMap(formatType string, encryptionType string) error
- func (pstFile *File) IsValidSignature() (bool, error)
- func (pstFile *File) NewHeapOnNodeFromLocalDescriptor(localDescriptor LocalDescriptor, formatType string, encryptionType string) (HeapOnNode, error)
- func (pstFile *File) NewHeapOnNodeFromNode(btreeNodeEntry BTreeNodeEntry, formatType string, encryptionType string) (HeapOnNode, error)
- func (pstFile *File) NewHeapOnNodeInputStream(nodeEntry BTreeNodeEntry, formatType string, encryptionType string) (HeapOnNodeInputStream, error)
- func (pstFile *File) NewHeapOnNodeInputStreamFromHNID(hnid int, heapOnNode HeapOnNode, localDescriptors []LocalDescriptor, ...) (HeapOnNodeInputStream, error)
- func (pstFile *File) Read(outputBufferSize int, offset int) ([]byte, error)
- func (pstFile *File) WalkAndCreateBTree(nodeEntryBTree *btree.BTree[BTreeNodeEntry], btreeOffset int, ...) error
- type Folder
- type GUID
- type HeapOnNode
- type HeapOnNodeInputStream
- func (heapOnNodeInputStream *HeapOnNodeInputStream) Read(outputBufferSize int, offset int) ([]byte, error)
- func (heapOnNodeInputStream *HeapOnNodeInputStream) ReadCompletely() ([]byte, error)
- func (heapOnNodeInputStream *HeapOnNodeInputStream) SeekAndReadUint16(outputBufferSize int, offset int) (int, error)
- func (heapOnNodeInputStream *HeapOnNodeInputStream) SeekAndReadUint32(outputBufferSize int, offset int) (int, error)
- type LocalDescriptor
- func (localDescriptor *LocalDescriptor) GetData(pstFile *File, formatType string, encryptionType string) ([]byte, error)
- func (localDescriptor *LocalDescriptor) GetDataIdentifier(formatType string) (int, error)
- func (localDescriptor *LocalDescriptor) GetIdentifier(formatType string) (int, error)
- func (localDescriptor *LocalDescriptor) GetLocalDescriptorsIdentifier(formatType string) (int, error)
- type Message
- func (message *Message) GetAppointmentAllAttendees(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetAppointmentEndTime(pstFile *File) (time.Time, error)
- func (message *Message) GetAppointmentLocation(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetAppointmentStartTime(pstFile *File) (time.Time, error)
- func (message *Message) GetAttachment(attachmentNumber int, pstFile *File, formatType string, encryptionType string) (Attachment, error)
- func (message *Message) GetAttachments(pstFile *File, formatType string, encryptionType string) ([]Attachment, error)
- func (message *Message) GetAttachmentsCount(pstFile *File, formatType string, encryptionType string) (int, error)
- func (message *Message) GetAttachmentsTableContext(pstFile *File, formatType string, encryptionType string) ([][]TableContextItem, error)
- func (message *Message) GetBCC(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetBody(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetBodyHTML(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetCC(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetContactBusinessPhoneNumber(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetContactCompanyName(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetContactEmailDisplayName(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetContactGivenName(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetContactMobilePhoneNumber(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetDate(propertyID int) (time.Time, error)
- func (message *Message) GetEncoding() (Encoding, error)
- func (message *Message) GetFrom(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetHeaders(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetInteger(propertyID int) (int, error)
- func (message *Message) GetMessageClass(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetMessageID(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetReceivedDate() (time.Time, error)
- func (message *Message) GetString(propertyID int, pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetSubject(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) GetTo(pstFile *File, formatType string, encryptionType string) (string, error)
- func (message *Message) HasAttachments() (bool, error)
- type MessageStore
- type NameToIDMap
- type Property
- type PropertyContextItem
- func (propertyContextItem *PropertyContextItem) GetData(pstFile *File, localDescriptors []LocalDescriptor, formatType string, ...) ([]byte, error)
- func (propertyContextItem *PropertyContextItem) GetDate() time.Time
- func (propertyContextItem *PropertyContextItem) GetInteger() int
- func (propertyContextItem *PropertyContextItem) GetString(encoding Encoding, localDescriptors []LocalDescriptor, pstFile *File, ...) (string, error)
- func (propertyContextItem *PropertyContextItem) String() (string, error)
- type TableContextItem
Constants ¶
const ( BlockTypeXBlock = 1 BlockTypeXXBlock = 2 )
Constants defining the block types.
const ( IdentifierTypeHID = 0 IdentifierTypeInternal = 1 IdentifierTypeNormalFolder = 2 IdentifierTypeSearchFolder = 3 IdentifierTypeNormalMessage = 4 IdentifierTypeAttachment = 5 IdentifierTypeSearchUpdateQueue = 6 IdentifierTypeSearchCriteriaObject = 7 IdentifierTypeAssociatedMessage = 8 IdentifierTypeContentsTableIndex = 10 IdentifierTypeReceiveFolderTable = 11 IdentifierTypeOutgoingQueueTable = 12 IdentifierTypeHierarchyTable = 13 IdentifierTypeContentsTable = 14 IdentifierTypeAssociatedContentsTable = 15 IdentifierTypeSearchContentsTable = 16 IdentifierTypeAttachmentTable = 17 IdentifierTypeRecipientTable = 18 IdentifierTypeSearchTableIndex = 19 IdentifierTypeLTP = 31 IdentifierTypeRootFolder = 290 IdentifierTypeMessageStore = 33 IdentifierTypeNameToIDMap = 97 )
Constants defining the identifier types. References "Identifier types".
const ( BTreeTypeNode = 0 BTreeTypeBlock = 1 )
Constants defining the b-tree types.
const ( FormatTypeANSI = "ANSI" FormatTypeUnicode = "Unicode" FormatTypeUnicode4k = "Unicode4k" )
Constants defining the format types. References "Format Types".
const ( EncryptionTypeNone = "None" EncryptionTypePermute = "Permute" EncryptionTypeCyclic = "Cyclic" )
Constants defining the encryption types. References "Encryption Types".
const ( PropertyTypeInteger16 = 2 PropertyTypeInteger32 = 3 PropertyTypeFloating32 = 4 PropertyTypeFloating64 = 5 PropertyTypeCurrency = 6 PropertyTypeFloatingTime = 7 PropertyTypeErrorCode = 10 PropertyTypeBoolean = 11 PropertyTypeInteger64 = 20 PropertyTypeString = 31 PropertyTypeString8 = 30 PropertyTypeTime = 64 PropertyTypeGUID = 72 PropertyTypeServerID = 251 PropertyTypeRestriction = 253 PropertyTypeRuleAction = 254 PropertyTypeBinary = 258 PropertyTypeMultipleInteger16 = 4098 PropertyTypeMultipleInteger32 = 4099 PropertyTypeMultipleFloating32 = 4100 PropertyTypeMultipleFloating64 = 4101 PropertyTypeMultipleCurrency = 4102 PropertyTypeMultipleFloatingTime = 4103 PropertyTypeMultipleInteger64 = 4116 PropertyTypeMultipleString = 4127 PropertyTypeMultipleString8 = 4126 PropertyTypeMultipleTime = 4160 PropertyTypeMultipleGUID = 4168 PropertyTypeMultipleBinary = 4354 PropertyTypeUnspecified = 0 PropertyTypeNull = 1 PropertyTypeObject = 13 )
Constants defining the property types. References "Property types".
Variables ¶
var ( ContentTypePST = []byte("SM") ContentTypeOST = []byte("SO") ContentTypePAB = []byte("AB") )
Constants defining the content types. References "Content Types".
var ( PropertySetPublicStrings = 0 PropertySetCommon = 1 PropertySetAddress = 2 PropertySetInternetHeaders = 3 PropertySetAppointment = 4 PropertySetMeeting = 5 PropertySetLog = 6 PropertySetMessaging = 7 PropertySetNote = 8 PropertySetPostRSS = 9 PropertySetTask = 10 PropertySetUnifiedMessaging = 11 PropertySetMAPI = 12 PropertySetAirSync = 13 PropertySetSharing = 14 PropertySetXMLExtractedEntities = 15 PropertySetAttachment = 16 )
Constants defining the commonly used property sets.
var BTreeDegree = 6
BTreeDegree defines the node and block b-tree degree.
var (
PropertySets = []string{
"00020329-0000-0000-C000-000000000046",
"00062008-0000-0000-C000-000000000046",
"00062004-0000-0000-C000-000000000046",
"00020386-0000-0000-C000-000000000046",
"00062002-0000-0000-C000-000000000046",
"6ED8DA90-450B-101B-98DA-00AA003F1305",
"0006200A-0000-0000-C000-000000000046",
"41F28F13-83F4-4114-A584-EEDB5A6B0BFF",
"0006200E-0000-0000-C000-000000000046",
"00062041-0000-0000-C000-000000000046",
"00062003-0000-0000-C000-000000000046",
"4442858E-A9E3-4E80-B900-317A210CC15B",
"00020328-0000-0000-C000-000000000046",
"71035549-0739-4DCB-9163-00F0580DBBDF",
"00062040-0000-0000-C000-000000000046",
"23239608-685D-4732-9C55-4C95CB4E8E33",
"96357F7F-59E1-47D0-99A7-46515C183B54",
}
)
PropertySets defines the property sets (GUIDs) in the Name-To-ID Map. "Property set: A GUID that identifies a group of properties with a similar purpose." References [MS-OXPROPS].pdf "1.3.2 Commonly Used Property Sets"
Functions ¶
func DecodeBytesToString ¶
DecodeBytesToString decodes the message property context item to string using the message encoding.
func DecodeBytesToUTF16String ¶
DecodeBytesToUTF16String decodes the bytes to UTF-16. The libpff documentation states: "Unicode strings are stored in UTF-16 little-endian without the byte order mark (BOM)."
func DecodeCompressibleEncryption ¶
DecodeCompressibleEncryption decodes the Heap-on-Node using compressible encryption. References "Compressible encryption".
func GetBTreeNodeEntryDataIdentifier ¶
GetBTreeNodeEntryDataIdentifier returns the node identifier of the data (in the block b-tree). References "The b-tree entries".
func GetBTreeNodeEntryFileOffset ¶
func GetBTreeNodeEntryFileOffset(nodeEntryData []byte, formatType string, isBranchNode bool) (int, error)
GetBTreeNodeEntryFileOffset returns the file offset for this b-tree branch or leaf node. References "The b-tree entries".
func GetBTreeNodeEntryIdentifier ¶
GetBTreeNodeEntryIdentifier returns the identifier of this b-tree node entry. References "The b-tree entries".
func GetBTreeNodeEntryIdentifierType ¶
GetBTreeNodeEntryIdentifierType returns the b-tree node entry identifier type. References "The b-tree entries", "Identifier".
Types ¶
type Attachment ¶
type Attachment struct { PropertyContext []PropertyContextItem LocalDescriptors []LocalDescriptor }
Attachment represents a message attachment.
func (*Attachment) GetFilename ¶
func (attachment *Attachment) GetFilename() (string, error)
GetFilename returns the file name of this attachment.
func (*Attachment) GetInputStream ¶
func (attachment *Attachment) GetInputStream(pstFile *File, formatType string, encryptionType string) (HeapOnNodeInputStream, error)
GetInputStream returns the input stream of this attachment.
func (*Attachment) GetLongFilename ¶
func (attachment *Attachment) GetLongFilename() (string, error)
GetLongFilename returns the long file name of this attachment.
func (*Attachment) GetString ¶
func (attachment *Attachment) GetString(propertyID int) (string, error)
GetString returns the string value of the property.
func (*Attachment) WriteToFile ¶
func (attachment *Attachment) WriteToFile(outputPath string, pstFile *File, formatType string, encryptionType string) error
WriteToFile writes the input stream of the attachment to the specified output path.
type BTreeNodeEntry ¶
type BTreeNodeEntry struct { Identifier int IdentifierType int FileOffset int DataIdentifier int LocalDescriptorsIdentifier int Size int NodeLevel int }
BTreeNodeEntry represents an entry in a b-tree node.
func NewBTreeNodeEntry ¶
func NewBTreeNodeEntry(nodeEntryData []byte, formatType string, nodeLevel int) (BTreeNodeEntry, error)
NewBTreeNodeEntry creates a new b-tree node entry.
func (BTreeNodeEntry) Less ¶
func (btreeNodeEntry BTreeNodeEntry) Less(than BTreeNodeEntry) bool
Less tests whether the current item is less than the given argument.
This must provide a strict weak ordering. If !a.Less(b) && !b.Less(a), we treat this to mean a == b (i.e. we can only hold one of either a or b in the tree).
type BTreeOnHeapHeader ¶
BTreeOnHeapHeader represents the b-tree on heap header.
type ColumnDescriptor ¶
type ColumnDescriptor struct { PropertyType int PropertyID int DataOffset int DataSize int CellExistenceBitmapIndex int }
ColumnDescriptor represents a column in the Table Context. References "Table Context", "Table Context Column Descriptor".
func NewColumnDescriptor ¶
func NewColumnDescriptor(tableContextInputStream HeapOnNodeInputStream, columnStartOffset int) (ColumnDescriptor, error)
NewColumnDescriptor is a constructor for creating column descriptors.
type Encoding ¶
type Encoding struct { // References https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers Identifier int Name string }
Encoding represents an IANA index encoding.
func FindEncoding ¶
FindEncoding returns the encoding by the specified identifier.
func GetEncodings ¶
GetEncodings returns all available encodings.
type File ¶
type File struct { Reader io.ReadSeekCloser FormatType string // Variables which need to be initialized. NodeBTree *btree.BTree[BTreeNodeEntry] BlockBTree *btree.BTree[BTreeNodeEntry] NameToIDMap *NameToIDMap }
File represents a PST file.
func NewFromFile ¶
NewFromFile is a constructor for creating PST files from a file path.
func NewFromReader ¶
func NewFromReader(reader io.ReadSeekCloser) File
NewFromReader is a constructor for creating PST files from a reader.
func (*File) FindBTreeNode ¶
func (pstFile *File) FindBTreeNode(btreeType int, identifier int) (BTreeNodeEntry, error)
FindBTreeNode returns the node in the node or block b-tree with the given identifier.
func (*File) GetBTreeNodeEntries ¶
func (pstFile *File) GetBTreeNodeEntries(btreeNodeOffset int, formatType string, nodeLevel int) ([]BTreeNodeEntry, error)
GetBTreeNodeEntries returns the entries in the b-tree node. References "The node and block b-tree".
func (*File) GetBTreeNodeEntryCount ¶
GetBTreeNodeEntryCount returns the amount of entries in the b-tree. References "The node and block b-tree".
func (*File) GetBTreeNodeEntrySize ¶
GetBTreeNodeEntrySize returns the size of an entry in the b-tree. References "The node and block b-tree".
func (*File) GetBTreeNodeLevel ¶
GetBTreeNodeLevel returns the level of the b-tree node. References "The node and block b-tree".
func (*File) GetBTreeOnHeapHeader ¶
func (pstFile *File) GetBTreeOnHeapHeader(heapOnNode HeapOnNode, localDescriptors []LocalDescriptor, formatType string, encryptionType string) (BTreeOnHeapHeader, error)
GetBTreeOnHeapHeader returns the btree on heap header.
func (*File) GetBlockBTreeNode ¶
func (pstFile *File) GetBlockBTreeNode(identifier int) (BTreeNodeEntry, error)
GetBlockBTreeNode returns the node with the given identifier in the block b-tree.
func (*File) GetBlockBTreeOffset ¶
GetBlockBTreeOffset returns the file offset to the block b-tree. References "The 64-bit header data", "The 32-bit header data".
func (*File) GetBlockIdentifierSize ¶
GetBlockIdentifierSize return the identifier size of a block identifier stored in the XBlock or XXBlock.
func (*File) GetBlockSize ¶
GetBlockSize returns the size of a block. References "Blocks".
func (*File) GetBlockTrailerSize ¶
GetBlockTrailerSize returns the size of a block trailer. References "Blocks".
func (*File) GetBlocks ¶
func (pstFile *File) GetBlocks(nodeEntryHeapOnNodeOffset int, formatType string) ([]BTreeNodeEntry, error)
GetBlocks parses the XBlock and XXBlock from a Heap-on-Node. Used by the NodeInputStream (internal identifiers have blocks).
func (*File) GetBlocksTotalSize ¶
GetBlocksTotalSize returns the size of the external data referenced by the XBlock or XXBlock.
func (*File) GetContentType ¶
GetContentType returns if the file is a PST, OST or PAB file. References "File Header", "Content Types".
func (*File) GetDataBTreeNode ¶
func (pstFile *File) GetDataBTreeNode(identifier int) (BTreeNodeEntry, error)
GetDataBTreeNode searches the identifier in the node b-tree, then searches the data identifier in the block b-tree.
func (*File) GetEncryptionType ¶
GetEncryptionType returns the encryption type. References "The 64-bit header data", "The 32-bit header data", "Encryption Types".
func (*File) GetFormatType ¶
GetFormatType returns the format type. References "File Header", "Format Types".
func (*File) GetLocalDescriptors ¶
func (pstFile *File) GetLocalDescriptors(btreeNodeEntry BTreeNodeEntry, formatType string) ([]LocalDescriptor, error)
func (*File) GetLocalDescriptorsFromIdentifier ¶
func (pstFile *File) GetLocalDescriptorsFromIdentifier(localDescriptorsIdentifier int, formatType string) ([]LocalDescriptor, error)
GetLocalDescriptorsFromIdentifier returns the local descriptors of the local descriptors identifier. References "Local Descriptors".
func (*File) GetMessage ¶
func (pstFile *File) GetMessage(identifier int, formatType string, encryptionType string) (Message, error)
GetMessage returns the message of the identifier.
func (*File) GetMessageStore ¶
func (pstFile *File) GetMessageStore(formatType string, encryptionType string) (MessageStore, error)
GetMessageStore returns the message store of the PST file.
func (*File) GetMessageTableContext ¶
func (pstFile *File) GetMessageTableContext(folder Folder, formatType string, encryptionType string) ([][]TableContextItem, error)
GetMessageTableContext returns the message table context of this folder.
func (*File) GetMessages ¶
func (pstFile *File) GetMessages(folder Folder, formatType string, encryptionType string) ([]Message, error)
GetMessages returns an array of messages from the message table context.
func (*File) GetNameToIDMap ¶
func (pstFile *File) GetNameToIDMap(formatType string, encryptionType string) (*NameToIDMap, error)
GetNameToIDMap returns the Name-To-ID Map.
func (*File) GetNodeBTreeNode ¶
func (pstFile *File) GetNodeBTreeNode(identifier int) (BTreeNodeEntry, error)
GetNodeBTreeNode returns the node with the given identifier in the node b-tree.
func (*File) GetNodeBTreeOffset ¶
GetNodeBTreeOffset returns the file offset to the node b-tree. References "The 64-bit header data", "The 32-bit header data".
func (*File) GetPropertyContext ¶
func (pstFile *File) GetPropertyContext(heapOnNode HeapOnNode, formatType string, encryptionType string) ([]PropertyContextItem, error)
GetPropertyContext returns the property context (BC Table). References "Property Context".
func (*File) GetRootFolder ¶
GetRootFolder returns the root folder of the PST file.
func (*File) GetSubFolderTableContext ¶
func (pstFile *File) GetSubFolderTableContext(folder Folder, formatType string, encryptionType string) ([][]TableContextItem, error)
GetSubFolderTableContext returns the table context for the sub-folders of this folder.
func (*File) GetSubFolders ¶
func (pstFile *File) GetSubFolders(folder Folder, formatType string, encryptionType string) ([]Folder, error)
GetSubFolders returns the sub folders of this folder.
func (*File) GetTableContext ¶
func (pstFile *File) GetTableContext(heapOnNode HeapOnNode, localDescriptors []LocalDescriptor, formatType string, encryptionType string, startAtRow int, numberOfRowsToReturn int, columnToGet int) ([][]TableContextItem, error)
GetTableContext returns the table context. The number of rows to return may be -1 to return all rows. References "Table Context".
func (*File) InitializeBTree ¶
InitializeBTree walks the b-tree and finds the node with the given identifier.
func (*File) InitializeBTrees ¶
InitializeBTrees initializes the node and block b-tree.
func (*File) InitializeNameToIDMap ¶
InitializeNameToIDMap initializes the Name-To-ID Map.
func (*File) IsValidSignature ¶
IsValidSignature returns true is the file matches the PFF format signature. References "File Header".
func (*File) NewHeapOnNodeFromLocalDescriptor ¶
func (pstFile *File) NewHeapOnNodeFromLocalDescriptor(localDescriptor LocalDescriptor, formatType string, encryptionType string) (HeapOnNode, error)
NewHeapOnNodeFromLocalDescriptor creates a Heap-on-Node from the local descriptor.
func (*File) NewHeapOnNodeFromNode ¶
func (pstFile *File) NewHeapOnNodeFromNode(btreeNodeEntry BTreeNodeEntry, formatType string, encryptionType string) (HeapOnNode, error)
NewHeapOnNodeFromNode creates a Heap-on-Node from the b-tree node entry.
func (*File) NewHeapOnNodeInputStream ¶
func (pstFile *File) NewHeapOnNodeInputStream(nodeEntry BTreeNodeEntry, formatType string, encryptionType string) (HeapOnNodeInputStream, error)
NewHeapOnNodeInputStream creates a node input stream from the Heap-on-Node.
func (*File) NewHeapOnNodeInputStreamFromHNID ¶
func (pstFile *File) NewHeapOnNodeInputStreamFromHNID(hnid int, heapOnNode HeapOnNode, localDescriptors []LocalDescriptor, formatType string, encryptionType string) (HeapOnNodeInputStream, error)
NewHeapOnNodeInputStreamFromHNID returns the offsets from the allocation table of the given HID.
func (*File) WalkAndCreateBTree ¶
func (pstFile *File) WalkAndCreateBTree(nodeEntryBTree *btree.BTree[BTreeNodeEntry], btreeOffset int, formatType string) error
WalkAndCreateBTree walks the b-tree and updates the given nodeEntryBTree.
type Folder ¶
type Folder struct { Identifier int DisplayName string HasSubFolders bool MessageCount int PropertyContext []PropertyContextItem }
Folder represents a folder.
type GUID ¶
GUID represents a GUID/UUID. It has the same structure as golang.org/x/sys/windows.GUID so that it can be used with functions expecting that type. It is defined as its own type as that is only available to builds targeted at `windows`. The representation matches that used by native Windows code.
func GUIDFromWindowsArray ¶
GUIDFromWindowsArray constructs a GUID from a Windows encoding array of bytes.
type HeapOnNode ¶
type HeapOnNode struct { BTreeNodeEntry BTreeNodeEntry InputStream HeapOnNodeInputStream }
HeapOnNode represents a Heap-on-Node.
func (*HeapOnNode) GetHIDUserRoot ¶
func (heapOnNode *HeapOnNode) GetHIDUserRoot() (int, error)
GetHIDUserRoot returns the HID user root. References "Heap-on-Node header".
func (*HeapOnNode) GetPageMap ¶
func (heapOnNode *HeapOnNode) GetPageMap(blockOffset int) (int, error)
GetPageMap returns the Heap-on-Node Page Map. References "Heap-on-Node page map".
func (*HeapOnNode) GetTableType ¶
func (heapOnNode *HeapOnNode) GetTableType() (int, error)
GetTableType returns the table type. References "Heap-on-Node header", "Table types".
func (*HeapOnNode) IsValidSignature ¶
func (heapOnNode *HeapOnNode) IsValidSignature() (bool, error)
IsValidSignature returns true if the signature of the block matches 0xEC (236). References "Heap-on-Node header".
type HeapOnNodeInputStream ¶
type HeapOnNodeInputStream struct { File *File FormatType string EncryptionType string FileOffset int StartOffset int Size int Blocks []BTreeNodeEntry // PropertyContextItem works with data directly instead of a file offset. UnencryptedInternalAttachmentData []byte }
HeapOnNodeInputStream represents a node input stream for a Heap-on-Node.
func (*HeapOnNodeInputStream) Read ¶
func (heapOnNodeInputStream *HeapOnNodeInputStream) Read(outputBufferSize int, offset int) ([]byte, error)
Read reads from the node input stream.
func (*HeapOnNodeInputStream) ReadCompletely ¶
func (heapOnNodeInputStream *HeapOnNodeInputStream) ReadCompletely() ([]byte, error)
ReadCompletely reads all the data (handles blocks).
func (*HeapOnNodeInputStream) SeekAndReadUint16 ¶
func (heapOnNodeInputStream *HeapOnNodeInputStream) SeekAndReadUint16(outputBufferSize int, offset int) (int, error)
SeekAndReadUint16 seeks and reads an uint16.
func (*HeapOnNodeInputStream) SeekAndReadUint32 ¶
func (heapOnNodeInputStream *HeapOnNodeInputStream) SeekAndReadUint32(outputBufferSize int, offset int) (int, error)
SeekAndReadUint32 seeks and reads an uint32.
type LocalDescriptor ¶
type LocalDescriptor struct {
// contains filtered or unexported fields
}
LocalDescriptor represents an item in the local descriptors. A local descriptor is basically a reference to a node which contains the data.
func FindLocalDescriptor ¶
func FindLocalDescriptor(localDescriptors []LocalDescriptor, identifier int, formatType string) (LocalDescriptor, error)
FindLocalDescriptor returns the local descriptor with the specified identifier.
func (*LocalDescriptor) GetData ¶
func (localDescriptor *LocalDescriptor) GetData(pstFile *File, formatType string, encryptionType string) ([]byte, error)
GetData returns all the local descriptor data from the data node.
func (*LocalDescriptor) GetDataIdentifier ¶
func (localDescriptor *LocalDescriptor) GetDataIdentifier(formatType string) (int, error)
GetDataIdentifier returns the data identifier of the local descriptor. References "Local Descriptors".
func (*LocalDescriptor) GetIdentifier ¶
func (localDescriptor *LocalDescriptor) GetIdentifier(formatType string) (int, error)
GetIdentifier returns the identifier of the local descriptor. References "Local Descriptors".
func (*LocalDescriptor) GetLocalDescriptorsIdentifier ¶
func (localDescriptor *LocalDescriptor) GetLocalDescriptorsIdentifier(formatType string) (int, error)
GetLocalDescriptorsIdentifier returns the local descriptors identifier of the local descriptor. References "Local Descriptors".
type Message ¶
type Message struct { PropertyContext []PropertyContextItem LocalDescriptors []LocalDescriptor AttachmentsTableContext [][]TableContextItem }
Message represents a message.
func (*Message) GetAppointmentAllAttendees ¶
func (message *Message) GetAppointmentAllAttendees(pstFile *File, formatType string, encryptionType string) (string, error)
GetAppointmentAllAttendees returns all attendees to this appointment.
func (*Message) GetAppointmentEndTime ¶
GetAppointmentEndTime returns the appointment's end time.
func (*Message) GetAppointmentLocation ¶
func (message *Message) GetAppointmentLocation(pstFile *File, formatType string, encryptionType string) (string, error)
GetAppointmentLocation returns the location of the appointment.
func (*Message) GetAppointmentStartTime ¶
GetAppointmentStartTime returns the appointment's start time.
func (*Message) GetAttachment ¶
func (message *Message) GetAttachment(attachmentNumber int, pstFile *File, formatType string, encryptionType string) (Attachment, error)
GetAttachment returns the specified attachment.
func (*Message) GetAttachments ¶
func (message *Message) GetAttachments(pstFile *File, formatType string, encryptionType string) ([]Attachment, error)
GetAttachments returns the attachments of this message.
func (*Message) GetAttachmentsCount ¶
func (message *Message) GetAttachmentsCount(pstFile *File, formatType string, encryptionType string) (int, error)
GetAttachmentsCount returns the amount of rows in the attachments table context.
func (*Message) GetAttachmentsTableContext ¶
func (message *Message) GetAttachmentsTableContext(pstFile *File, formatType string, encryptionType string) ([][]TableContextItem, error)
GetAttachmentsTableContext returns the table context of the attachments of this message.
func (*Message) GetBCC ¶
func (message *Message) GetBCC(pstFile *File, formatType string, encryptionType string) (string, error)
GetBCC returns the BCC of this message.
func (*Message) GetBody ¶
func (message *Message) GetBody(pstFile *File, formatType string, encryptionType string) (string, error)
GetBody returns the plaintext body of the message.
func (*Message) GetBodyHTML ¶
func (message *Message) GetBodyHTML(pstFile *File, formatType string, encryptionType string) (string, error)
GetBodyHTML returns the HTML body of this message.
func (*Message) GetCC ¶
func (message *Message) GetCC(pstFile *File, formatType string, encryptionType string) (string, error)
GetCC returns the "CC" header.
func (*Message) GetContactBusinessPhoneNumber ¶
func (message *Message) GetContactBusinessPhoneNumber(pstFile *File, formatType string, encryptionType string) (string, error)
GetContactBusinessPhoneNumber returns the business phone number of this contact.
func (*Message) GetContactCompanyName ¶
func (message *Message) GetContactCompanyName(pstFile *File, formatType string, encryptionType string) (string, error)
GetContactCompanyName returns the contact's company name.
func (*Message) GetContactEmailDisplayName ¶
func (message *Message) GetContactEmailDisplayName(pstFile *File, formatType string, encryptionType string) (string, error)
GetContactEmailDisplayName returns the contact's email display name.
func (*Message) GetContactGivenName ¶
func (message *Message) GetContactGivenName(pstFile *File, formatType string, encryptionType string) (string, error)
GetContactGivenName returns the given name of this contact.
func (*Message) GetContactMobilePhoneNumber ¶
func (message *Message) GetContactMobilePhoneNumber(pstFile *File, formatType string, encryptionType string) (string, error)
GetContactMobilePhoneNumber returns the contact's mobile phone number.
func (*Message) GetEncoding ¶
GetEncoding returns the encoding of the message.
func (*Message) GetFrom ¶
func (message *Message) GetFrom(pstFile *File, formatType string, encryptionType string) (string, error)
GetFrom returns the "From" header.
func (*Message) GetHeaders ¶
func (message *Message) GetHeaders(pstFile *File, formatType string, encryptionType string) (string, error)
GetHeaders return the message headers.
func (*Message) GetInteger ¶
GetInteger returns the integer value of the property.
func (*Message) GetMessageClass ¶
func (message *Message) GetMessageClass(pstFile *File, formatType string, encryptionType string) (string, error)
GetMessageClass returns the message class.
func (*Message) GetMessageID ¶
func (message *Message) GetMessageID(pstFile *File, formatType string, encryptionType string) (string, error)
GetMessageID returns the message ID.
func (*Message) GetReceivedDate ¶
GetReceivedDate returns the date this message was received.
func (*Message) GetString ¶
func (message *Message) GetString(propertyID int, pstFile *File, formatType string, encryptionType string) (string, error)
GetString returns the string value of the property.
func (*Message) GetSubject ¶
func (message *Message) GetSubject(pstFile *File, formatType string, encryptionType string) (string, error)
GetSubject returns the subject of this message.
func (*Message) GetTo ¶
func (message *Message) GetTo(pstFile *File, formatType string, encryptionType string) (string, error)
GetTo returns the "To" header.
func (*Message) HasAttachments ¶
HasAttachments returns true if this message has attachments.
type MessageStore ¶
type MessageStore struct {
PropertyContext []PropertyContextItem
}
MessageStore represents the message store.
type NameToIDMap ¶
type NameToIDMap struct { PropertySets []string NameToID map[int]int IDToName map[int]int StringToID map[string]int IDToString map[int]string }
NameToIDMap represents the Name-To-ID Map.
func (*NameToIDMap) GetPropertyID ¶
func (nameToIDMap *NameToIDMap) GetPropertyID(key int, propertySetIndex int) (int, error)
GetPropertyID returns the Name-To-ID property ID.
type Property ¶
Property represents a property.
func FindProperty ¶
FindProperty finds the property from the property ID.
func GetProperties ¶
GetProperties returns all available properties.
type PropertyContextItem ¶
type PropertyContextItem struct { Index int PropertyID int PropertyType int ReferenceHNID int IsExternalValueReference bool // contains filtered or unexported fields }
PropertyContextItem represents an item within the property context. References "Property Context B-Tree-on-Heap Record".
func FindPropertyContextItem ¶
func FindPropertyContextItem(propertyContext []PropertyContextItem, propertyID int) (PropertyContextItem, error)
FindPropertyContextItem returns the property context item from the property ID.
func (*PropertyContextItem) GetData ¶
func (propertyContextItem *PropertyContextItem) GetData(pstFile *File, localDescriptors []LocalDescriptor, formatType string, encryptionType string) ([]byte, error)
GetData returns all the data of the property context item. Used for property type binary (external reference) which may be located in the local descriptors.
func (*PropertyContextItem) GetDate ¶
func (propertyContextItem *PropertyContextItem) GetDate() time.Time
GetDate returns the date value of the property context item.
func (*PropertyContextItem) GetInteger ¶
func (propertyContextItem *PropertyContextItem) GetInteger() int
GetInteger returns the integer value of the property context item.
func (*PropertyContextItem) GetString ¶
func (propertyContextItem *PropertyContextItem) GetString(encoding Encoding, localDescriptors []LocalDescriptor, pstFile *File, formatType string, encryptionType string) (string, error)
GetString returns the string value of the property context item.
func (*PropertyContextItem) String ¶
func (propertyContextItem *PropertyContextItem) String() (string, error)
String returns the string representation of this property.