https://github.com/lipanski/keepass
Keepass KDBX v2/v3 parser for Crystal
https://github.com/lipanski/keepass
crystal crystal-lang kdbx keepass parse
Last synced: 11 months ago
JSON representation
Keepass KDBX v2/v3 parser for Crystal
- Host: GitHub
- URL: https://github.com/lipanski/keepass
- Owner: lipanski
- License: mit
- Created: 2017-12-24T00:01:35.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2021-04-24T14:51:13.000Z (almost 5 years ago)
- Last Synced: 2025-05-12T22:54:45.104Z (11 months ago)
- Topics: crystal, crystal-lang, kdbx, keepass, parse
- Language: Crystal
- Homepage:
- Size: 37.1 KB
- Stars: 13
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://download.libsodium.org/doc/).
## Install
Add the following lines to your `shard.yml`:
```yaml
dependencies:
keepass:
github: lipanski/keepass
```
...and run `crystal deps` or `shards install`.
## Usage
When the file is encrypted with a password:
```crystal
require "keepass"
database = Keepass.parse!("/path/to/keepass.kdbx", "password")
```
When the file is encrypted with a password and a key file:
```crystal
require "keepass"
database = Keepass.parse!("/path/to/keepass.kdbx", "password", "/path/to/keyfile")
```
### The Keepass::Database object
Read the version:
```crystal
database.version #=> String
```
Show the groups:
```crystal
database.groups #=> Array(Keepass::Group)
```
### The Keepass::Group object
Show the name:
```crystal
group.name #=> String
```
Show the ID:
```crystal
group.uuid #=> String
```
Show the entries directly under this group:
```crystal
group.entries #=> Array(Keepass::Entry)
```
Show all entries (including entries contained by sub-groups):
```crystal
group.all_entries #=> Array(Keepass::Entry)
```
Show sub-groups:
```crystal
group.groups #=> Array(Keepas::Group)
```
Show the parent group (if any):
```crystal
group.parent #=> Group?
```
### The Keepass::Entry object
Show the title:
```crystal
entry.title #=> String?
```
Show the ID:
```crystal
entry.uuid #=> String
```
Show the user name:
```crystal
entry.user_name #=> String?
```
Show the password:
```crystal
entry.password #=> String?
```
Show the notes:
```crystal
entry.notes #=> String?
```
Show some helpful timestamps:
```crystal
entry.created_at #=> Time?
entry.updated_at #=> Time?
entry.last_accessed_at #=> Time?
```
Show the usage count (if available):
```crystal
entry.usage_count #=> Int32?
```
### Errors
Check the [src/keepass/error.cr](https://github.com/lipanski/keepass/blob/master/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
-
-
-
-
-
-