Ben bu yüzden LINQPad içinde KeyPass.exe bir başvuru eklendi ve denemeye başladı bir KeyPass 2 veritabanını okuma düşündüm. Sürprizime ve dışarıdan yardım almadan (iyi bir API'nin kanıtı), veri tabanını sadece birkaç dakika sonra okudum. İşte ben bunu yaptım:
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();
Bunu biraz daha açık bir şekilde yeniden yazmayı deneyebilir misiniz? Neyi başarmaya veya kaçınmaya çalışıyorsunuz? –
Ben bir şifreli bırakılmadan hassas bilgileri kullanmak için bir winform uygulamasından bir keepass veritabanı açmaya çalışıyorum. – hotips
Keepass veritabanını hiç kullanmadım .. ama MSSQL Veritabanlarındaki şifrelenmiş verilerin saklanması da güvenli ... ve uygulanması kolay. Ancak üçüncü taraf bir çözüm kullanıyorsanız, verilerinin üstesinden gelmek için bir api olmalıdır .. –