All Projects → sseemayer → keepass-rs

sseemayer / keepass-rs

Licence: MIT license
KeePass kdbx database file parser

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to keepass-rs

Keepassdx
📱 KeePass implementation for android with material design and deluxe features
Stars: ✭ 1,395 (+1837.5%)
Mutual labels:  keepass
Keepasswinhello
Quick unlock with Windows Hello for KeePass 2
Stars: ✭ 162 (+125%)
Mutual labels:  keepass
Pykeepass
Python library to interact with keepass databases (supports KDBX3 and KDBX4)
Stars: ✭ 231 (+220.83%)
Mutual labels:  keepass
Keepasskit
KeePass Database loading, storing and manipulation framework
Stars: ✭ 109 (+51.39%)
Mutual labels:  keepass
Openkeepass
[Deprecated] A java library for reading and writing KeePass databases. It is an intuitive java library that supports KeePass 2.x database files.
Stars: ✭ 128 (+77.78%)
Mutual labels:  keepass
Poshkeepass
PowerShell module for KeePass
Stars: ✭ 177 (+145.83%)
Mutual labels:  keepass
Awesome Keepass
Curated list of KeePass-related projects
Stars: ✭ 99 (+37.5%)
Mutual labels:  keepass
kpmenu
Dmenu/rofi interface for KeePass
Stars: ✭ 21 (-70.83%)
Mutual labels:  keepass
Keepassbrowserimporter
KeePass 2.x plugin which imports credentials from various browsers.
Stars: ✭ 139 (+93.06%)
Mutual labels:  keepass
Keepass2android
Password manager app for Android
Stars: ✭ 2,887 (+3909.72%)
Mutual labels:  keepass
Keepass4web
An application that serves KeePass database entries on a web frontend
Stars: ✭ 115 (+59.72%)
Mutual labels:  keepass
Keepassxc
KeePassXC is a cross-platform community-driven port of the Windows application “Keepass Password Safe”.
Stars: ✭ 11,623 (+16043.06%)
Mutual labels:  keepass
Hibpofflinecheck
Keepass plugin that performs offline and online checks against HaveIBeenPwned passwords
Stars: ✭ 191 (+165.28%)
Mutual labels:  keepass
Passhole
A secure hole for your passwords (KeePass CLI)
Stars: ✭ 108 (+50%)
Mutual labels:  keepass
keevault
Kee Vault is a password manager for your web browser. Password databases (Vaults) are encrypted using the KeePass storage format before being sent to a remote server for synchronisation across any modern device/browser
Stars: ✭ 57 (-20.83%)
Mutual labels:  keepass
Keepmenu
Dmenu/Rofi frontend for Keepass databases
Stars: ✭ 105 (+45.83%)
Mutual labels:  keepass
Keepassjava2
Java API for KeePass Password Databases - Read/Write 2.x, Read 1.x
Stars: ✭ 168 (+133.33%)
Mutual labels:  keepass
qute-keepassxc
Qutebrowser userscript to fetch credentials from KeepassXC password database
Stars: ✭ 44 (-38.89%)
Mutual labels:  keepass
buttercup-importer
🎣 3rd-party archive importer for Buttercup
Stars: ✭ 39 (-45.83%)
Mutual labels:  keepass
Argon2 Browser
Argon2 library compiled for browser runtime
Stars: ✭ 197 (+173.61%)
Mutual labels:  keepass

keepass

Crates.io Documentation Build Status codecov

KeePass .kdbx database file parser for Rust

Example

extern crate keepass;

use keepass::{Database, DatabaseOpenError, NodeRef};
use std::fs::File;

fn main() -> Result<(), DatabaseOpenError> {
    // 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_or("(no title)");
                let user = e.get_username().unwrap_or("(no username)");
                let pass = e.get_password().unwrap_or("(no password)");
                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.

For AArch64 / ARMv8:

The aes optimizations are not yet enabled on stable rust. If you want a big performance boost you can build using nightly and enabling the armv8 feature of the aes crate:

[dependencies.aes]
# Needs at least 0.7.5 for the feature
version = "0.7.5"
features = ["armv8"]

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].