Я думал о чтении базы данных KeyPass 2, поэтому я добавил ссылку на KeyPass.exe в LINQPad и начал экспериментировать. К моему удивлению и без какой-либо внешней помощи (свидетельство хорошего API), я читал базу данных всего через несколько минут. Вот как я это сделал:
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();
Можете ли вы попробовать переписать это немного более четко? Чего вы пытаетесь достичь или избежать? –
Я пытаюсь открыть базу данных keepass из приложения winform, чтобы использовать конфиденциальную информацию, не оставляя их незашифрованными. – hotips
Я никогда не использовал базу данных keepass .. но я думаю, что хранение зашифрованных данных в базах данных MSSQL также безопасно ... и прост в реализации. Однако, если вы используете стороннее решение, у них должно быть api для обработки своих данных. –