KeePass源代码分析 3----KeePass 文件格式
KeePass文件格式由文件头部和数据部分组成。由于文件存储涉及到密码安全方面的东西,所以硬盘存储的是 KeePass 文件经过加密后的文件数据。
总体上KeePass 的文件格式组织方式如下:
KeePass文件格式开始部分是头部信息,紧跟着是分组信息,最后才是关于密码的信息。首先我们分析 KeePass 的头部信息结构 PW_DBHEADER , PW_DBHEADER 在文件PwStructs.h 中定义。
/// Database header structure. All KeePass KDB files begin with this structure.
typedef struct _PW_DBHEADER
{
DWORD dwSignature1 ; ///< File identifier word, set to PWM_DBSIG_1.
DWORD dwSignature2 ; ///< File identifier word, set to PWM_DBSIG_2.
DWORD dwFlags ;
DWORD dwVersion ;
BYTE aMasterSeed [16]; ///< Seed that gets hashed with the user key to form the final key.
UINT8 aEncryptionIV [16]; ///< IV used for content encryption.
DWORD dwGroups ; ///< Number of groups in the database.
DWORD dwEntries ; ///< Number of entries in the database.