myślałem o przeczytaniu bazę KeyPass 2 więc dodałem odniesienie do KeyPass.exe w LINQPad i zaczął eksperymentować. Ku mojemu zdziwieniu i bez jakiejkolwiek zewnętrznej pomocy (testamentu dobrego API), czytałem bazę danych już po kilku minutach. Oto, jak to zrobiłem:
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();
Czy możesz spróbować jeszcze raz napisać coś jeszcze? Co próbujesz osiągnąć lub czego uniknąć? –
Próbuję otworzyć bazę danych bazy danych z aplikacji WinForm, aby używać poufnych informacji bez pozostawienia ich bez szyfrowania. – hotips
Nigdy nie korzystałem z bazy danych keepass .. ale myślę, że przechowywanie zaszyfrowanych danych w bazach danych MSSQL jest również bezpieczne ... i łatwe do wdrożenia. Jednak jeśli korzystasz z zewnętrznego rozwiązania, musisz mieć api do obsługi danych. –