Shard Detail

keepass v0.4.0

Keepass KDBX v2/v3 parser for Crystal
crystal crystal-lang kdbx keepass parse

Install & Use

Add the following code to your project's shard.yml under:

dependencies to use in production
- OR -
development_dependencies to use in development

  github: lipanski/keepass



A Keepass KDBX v2/v3 parser for Crystal.


This library requires libsodium. On Ubuntu 17.04 you can install it via sudo apt install libsodium-dev. For other distros, please check the libsodium docs.


Add the following lines to your shard.yml:

    github: lipanski/keepass

...and run crystal deps or shards install.


When the file is encrypted with a password:

require "keepass"

database = Keepass.parse!("/path/to/keepass.kdbx", "password")

When the file is encrypted with a password and a key file:

require "keepass"

database = Keepass.parse!("/path/to/keepass.kdbx", "password", "/path/to/keyfile")

The Keepass::Database object

Read the version:

database.version #=> String

Show the groups:

database.groups #=> Array(Keepass::Group)

The Keepass::Group object

Show the name: #=> String

Show the ID:

group.uuid #=> String

Show the entries directly under this group:

group.entries #=> Array(Keepass::Entry)

Show all entries (including entries contained by sub-groups):

group.all_entries #=> Array(Keepass::Entry)

Show sub-groups:

group.groups #=> Array(Keepas::Group)

Show the parent group (if any):

group.parent #=> Group?

The Keepass::Entry object

Show the title:

entry.title #=> String?

Show the ID:

entry.uuid #=> String

Show the user name:

entry.user_name #=> String?

Show the password:

entry.password #=> String?

Show the notes:

entry.notes #=> String?

Show some helpful timestamps:

entry.created_at #=> Time?
entry.updated_at #=> Time?
entry.last_accessed_at #=> Time?

Show the usage count (if available):

entry.usage_count #=> Int32?


Check the src/keepass/ file for a list of the errors that will be raised.


  • Accept key files.
  • Write KDBX files.
  • Parse KDB.
  • Parse KDBX4.

Pull requests are welcome.