Tôi nghĩ về đọc một cơ sở dữ liệu KeyPass 2 vì vậy tôi thêm một tham chiếu đến KeyPass.exe trong LINQPad và bắt đầu thử nghiệm. Trước sự ngạc nhiên của tôi và không có bất kỳ sự giúp đỡ nào bên ngoài (một minh chứng cho một API tốt), tôi đã đọc cơ sở dữ liệu chỉ sau vài phút. Đây là cách tôi đã làm điều đó:
var dbpath = @"C:\path\to\passwords.kdbx";
var masterpw = "[email protected]";
var ioConnInfo = new IOConnectionInfo { Path = dbpath };
var compKey = new CompositeKey();
compKey.AddUserKey(new KcpPassword(masterpw));
var db = new KeePassLib.PwDatabase();
db.Open(ioConnInfo, compKey, null);
var kpdata = from entry in db.RootGroup.GetEntries(true)
select new
{
Group = entry.ParentGroup.Name,
Title = entry.Strings.ReadSafe("Title"),
Username = entry.Strings.ReadSafe("UserName"),
Password = entry.Strings.ReadSafe("Password"),
URL = entry.Strings.ReadSafe("URL"),
Notes = entry.Strings.ReadSafe("Notes")
};
kpdata.Dump(); // this is how Linqpad outputs stuff
db.Close();
Nguồn
2012-01-27 02:56:33
Bạn có thể thử viết lại điều này một chút rõ ràng hơn không? Bạn đang cố gắng thực hiện điều gì hoặc tránh? –
Tôi đang cố gắng mở một cơ sở dữ liệu keepass từ một ứng dụng winform để sử dụng thông tin nhạy cảm mà không để chúng không được mã hóa. – hotips
tôi đã không bao giờ được sử dụng cơ sở dữ liệu keepass .. nhưng tôi nghĩ rằng lưu trữ dữ liệu được mã hóa trong cơ sở dữ liệu MSSQL cũng an toàn ... và dễ thực hiện. Tuy nhiên, nếu bạn đang sử dụng giải pháp của bên thứ ba, họ phải có api để xử lý dữ liệu của họ .. –