56 个版本
新版本 0.7.15 | 2024 年 8 月 23 日 |
---|---|
0.7.13 | 2024 年 6 月 9 日 |
0.7.7 | 2024 年 3 月 2 日 |
0.6.16 | 2023 年 12 月 31 日 |
0.1.2 | 2016 年 3 月 1 日 |
#52 在 数据库接口
632 每月下载量
在 8 crates 中使用
300KB
6.5K SLoC
keepass-rs
Rust KeePass 数据库文件解析器,支持 KDB、KDBX3 和 KDBX4,以及实验性支持 KDBX4 写入。
用法
打开数据库
use keepass::{
db::NodeRef,
Database,
DatabaseKey,
error::DatabaseOpenError
};
use std::fs::File;
fn main() -> Result<(), DatabaseOpenError> {
// Open KeePass database using a password (keyfile is also supported)
let mut file = File::open("tests/resources/test_db_with_password.kdbx")?;
let key = DatabaseKey::new().with_password("demopass");
let db = Database::open(&mut file, key)?;
// Iterate over all `Group`s and `Entry`s
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(())
}
保存 KDBX4 数据库(实验性)
重要: 内部 XML 数据结构将从该 crate 的内部对象表示重新从头开始编写,因此任何未由库解析的字段将在写入的输出文件中丢失!请在尝试此功能之前确保备份您的数据库。
您可以使用 save_kdbx4
功能启用保存 KDBX4 数据库的实验性支持。
use keepass::{
db::{Database, Entry, Group, Node, NodeRef, Value},
DatabaseKey,
};
use std::fs::File;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut db = Database::new(Default::default());
db.meta.database_name = Some("Demo database".to_string());
let mut group = Group::new("Demo group");
let mut entry = Entry::new();
entry.fields.insert("Title".to_string(), Value::Unprotected("Demo entry".to_string()));
entry.fields.insert("UserName".to_string(), Value::Unprotected("jdoe".to_string()));
entry.fields.insert("Password".to_string(), Value::Protected("hunter2".as_bytes().into()));
group.add_child(entry);
db.root.add_child(group);
#[cfg(feature = "save_kdbx4")]
db.save(
&mut File::create("demo.kdbx")?,
DatabaseKey::new().with_password("demopass"),
)?;
Ok(())
}
使用开发者工具
此 crate 包含几个可以通过 utilities
功能标志启用的命令行工具。有关完整列表,请参阅 Cargo.toml 中的 [[bin]]
部分。
运行 kp-dump-xml
命令的示例命令行如下
cargo run --release --features "utilities" --bin kp-dump-xml -- path/to/database.kdbx
安装
将以下内容添加到您的 Cargo.toml
文件的 dependencies
部分
[dependencies]
keepass = "*" # TODO replace with current version
性能说明
请在编译时设置 RUSTFLAGS
环境变量以启用 CPU 特定的优化(这极大地影响了 AES 密钥导出的速度)
export RUSTFLAGS='-C target-cpu=native'
为了获得最佳效果,请以发布模式编译。
或者,您可以在项目中添加一个 .cargo/config.toml
,以确保始终设置 rustflags。
对于 AArch64 / ARMv8
在稳定 rust 上尚未启用 aes
优化。如果您想要大幅提高性能,可以使用 nightly 构建并启用 aes
crate 的 armv8
功能
[dependencies.aes]
# Needs at least 0.7.5 for the feature
version = "0.7.5"
features = ["armv8"]
许可证
MIT
依赖项
~4–13MB
~157K SLoC