keepass-rs
keepass-rs copied to clipboard
Rust KeePass database file parser for KDB, KDBX3 and KDBX4, with experimental support for KDBX4 writing.
keepass
KeePass .kdbx database file parser for Rust
Example
extern crate keepass;
use keepass::{Database, NodeRef, Result, Error};
use std::fs::File;
fn main() -> Result<()> {
// Open KeePass database
let path = std::path::Path::new("tests/resources/test_db_with_password.kdbx");
let db = Database::open(
&mut File::open(path)?, // the database
Some("demopass"), // password
None // keyfile
)?;
// Iterate over all Groups and Nodes
for node in &db.root {
match node {
NodeRef::Group(g) => {
println!("Saw group '{0}'", g.name);
},
NodeRef::Entry(e) => {
let title = e.get_title().unwrap();
let user = e.get_username().unwrap();
let pass = e.get_password().unwrap();
println!("Entry '{0}': '{1}' : '{2}'", title, user, pass);
}
}
}
Ok(())
}
Installation
Add the following to the dependencies
section of your Cargo.toml
:
[dependencies]
keepass = "*"
Performance note: Please set the RUSTFLAGS
environment variable when compiling to enable CPU-specific optimizations (this greatly affects the speed of the AES key derivation):
export RUSTFLAGS='-C target-cpu=native'
For best results, also compile in Release mode.
Alternatively, you can add a .cargo/config.toml
like in this project to ensure that rustflags are always set.
Documentation
Developer Tools
kp-dump-xml
This library contains an optionally-compiled command line application to dump out the internal XML representation from a KDBX database. This can be useful for implementing additional features for the XML parser.
Since the tool depends on additional crates, it is not compiled until you specify the utilities
feature, e.g.
cargo run --release --features "utilities" --bin kp-dump-xml -- path/to/database.kdbx
License
MIT