Keepass
A Keepass KDBX v2/v3 parser for Crystal.
Requirements
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.
Install
Add the following lines to your shard.yml
:
dependencies:
keepass:
github: lipanski/keepass
...and run crystal deps
or shards install
.
Usage
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:
group.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?
Errors
Check the src/keepass/error.cr file for a list of the errors that will be raised.
TODO
- [x] Accept key files.
- [ ] Write KDBX files.
- [ ] Parse KDB.
- [ ] Parse KDBX4.
Pull requests are welcome.
Resources
- https://gist.github.com/lgg/e6ccc6e212d18dd2ecd8a8c116fb1e45
- https://gist.github.com/msmuenchen/9318327
- https://github.com/mjwhitta/rubeepass
- https://github.com/Stoom/KeePass/wiki/KDBX-v2-File-Format
- https://github.com/lgg/awesome-keepass#docs-and-articles
- http://sketchingdev.co.uk/blog/why-you-cant-recover-your-keepass-password.html