PST文件格式解读--PST文件的逻辑结构

来源:互联网 发布:js只能输入数字和英文 编辑:程序博客网 时间:2024/06/06 04:20
原文地址: http://blog.csdn.net/hishentan/article/details/12888081

PST 文件是 OUTLOOK 个人文件夹文件,它是独立的、结构化的二进制文件,不需要任何的外部依赖。每一个PST文件代表一个消息存储器message store,包含有任意层次结构的文件对象Folder objects,下面又包含消息对象Message objects,消息对象下面又包含附件对象Attachment objects。文件对象、消息对象、附件对象都存储在属性中,包含有特定邮件项目的所有信息。

PST文件在逻辑上分为三层:the NDB (Node Database) layer, the LTP(Lists, Tables, and Properties) layer, and the Messaging layer.


1.  Node Database (NDB) Layer

NDB层代表数据库结点,是PST文件最低层的存储结构。NDB层包括头部(header)、文件分配信息(fileallocation information)、块(blocks)、结点(nodes)、两颗B:结点B树和块B(the Node BTree (NBT)and the Block BTree (BBT).)

NBT包含了指向PST文件中所有可访问结点的指针,B树的高效搜索方式能够快速的定位任意结点。每一个结点由四个属性集组成:NID,parent NID, data BID(指向与该结点关联的数据块), andsubnodeBID.

注:NID编号在整个PST文件里面是唯一的,可以查找NBT得到该结点。而Subnode NID只是在一个结点里面是唯一的,该节点不能从NBT查找得到。

BBT包含了指向PST文件中所有数据块的指针,每一个块也是由四个属性集组成:BID,IB, CB, and CREF

其中IB是该块在文件内的偏移量,CB是存储在该数据块内的字节数,CREF是该数据块的引用次数。

NBT and BBT树根的位置的都能从PST文件头部相关字段获得。如下图所示:


下图描述的结点(node)和块(block)之间的关系:


2. Lists, Tables, and Properties (LTP) Layer

LTP层是构建NDB结构顶部的一个高级概念,LTP层的核心元素是属性上下文theProperty Context (PC) and 表上下文TableContext (TC).每一个PC或TC也存放在一个单一的结点中,LTP层使用NIDS去标识PC和TC。

为了有效地实现PCs和TCs,LTP层在每个NDB节点顶层采用以下两种类型的数据结构。

Heap-on-Node(HN)

HN是在结点之上实现的一个堆数据结构,HN能够将一个结点的数据流细分为小的、大小可变的片段,它的主要用途是将各种字符串存储到数据块中。

BTree-on-Heap(BTH)

BTH是HN内部的一个数据结构。HN提供快速访问B-的方法,而BTH提供一种快速搜索数据的方法。PCs就被实现为BTHs

3.  Messaging Layer

The Messaginglayer包含有让LTB结构和NDB结构组合起来被解释为文件对象、消息对象、附件对象和属性的高级规则和业务逻辑。该层的规则使得修改后的PST文件能够被成功的读取。


0 0
原创粉丝点击