module Keepassx

One entry: [FIELDTYPE(FT)][FIELDDATA(FD)]

[FT+FS+(FD)][FT+FS+(FD)][FT+FS+(FD)][FT+FS+(FD)][FT+FS+(FD)]...
2 bytes

FIELDTYPE

4 bytes

FIELDSIZE, size of FIELDDATA in bytes

n bytes

FIELDDATA, n = FIELDSIZE

Notes:

One group: [FIELDTYPE(FT)][FIELDDATA(FD)]

[FT+FS+(FD)][FT+FS+(FD)][FT+FS+(FD)][FT+FS+(FD)][FT+FS+(FD)]...
2 bytes

FIELDTYPE

4 bytes

FIELDSIZE, size of FIELDDATA in bytes

n bytes

FIELDDATA, n = FIELDSIZE

Notes:

The keepass file header.

From the KeePass doc:

Database header: [DBHDR]

4 bytes

DWORD dwSignature1 = 0x9AA2D903

4 bytes

DWORD dwSignature2 = 0xB54BFB65

4 bytes

DWORD dwFlags

4 bytes

DWORD dwVersion { Ve.Ve.Mj.Mj:Mn.Mn.Bl.Bl }

16 bytes

BYTE{16} aMasterSeed

16 bytes

BYTE{16} aEncryptionIV

4 bytes

DWORD dwGroups Number of groups in database

4 bytes

DWORD dwEntries Number of entries in database

32 bytes

BYTE{32} aContentsHash SHA-256 hash value of the plain contents

32 bytes

BYTE{32} aMasterSeed2 Used for the dwKeyEncRounds AES

master key transformations
4 bytes

DWORD dwKeyEncRounds See above; number of transformations

Notes:

Public Class Methods

gem_version() click to toggle source
# File lib/keepassx/version.rb, line 5
def self.gem_version
  Gem::Version.new VERSION::STRING
end
new(opts) { |db| ... } click to toggle source

Create Keepassx database

@param opts [Hash] Keepassx database options. @yield [opts] @yieldreturn [Fixnum] @return [Keepassx::Database]

# File lib/keepassx.rb, line 24
def new(opts)
  db = Database.new(opts)
  yield db if block_given?
  db
end
open(opts) { |db| ... } click to toggle source

Read Keepassx database from file storage.

@param opts [Hash] Keepassx database options. @yield [opts] @yieldreturn [Fixnum] @return [Keepassx::Database]

# File lib/keepassx.rb, line 37
def open(opts)
  db = Database.new(opts)
  yield db if block_given?
  db
end