首先介绍一下:我需要从我的客户端SQLite dll文件中提取数据库,该客户端已经与前一个开发人员烧毁了桥梁。
我将这4个文件放在桌面上:
我还获得了Payroll.exe用来与数据库交互的SQLite DB的密码。这样我就可以转储一个SQL文件(所以我可以使用熟悉的东西)?
主要问题是我没有C#,.NET东西和DLL文件的经验(我知道它代表动态链接库!)
我愿意涉足并学习一些C#来做到这一点。
正如所建议的,我反编译了源代码并找到了一些有趣的代码:
namespace Payroll
{
internal class Payroll_Database
{
private static string ConnectionStr = "Data Source=.\\System.Data.SQLite.Linq.dll; Password=******!";
private static SQLiteConnection Connection = new SQLiteConnection();
似乎确定System.Data.SQLite.Linq.dll
是数据库文件。我无法使用SQLite Browser等工具打开它。我已经尝试将其重命名为.db
,但同样没有骰子。
答案 0 :(得分:1)
您的数据库不会出现在您列出的dll和exe文件中。 它应该在一个单独的文件中,可能带有.sqlite,.sqlite3,.sdb3 .db或.db3这样的扩展名(但这不是强制要求的。)
如果您可以找到db文件,可以使用任何sqlite客户端打开它(例如,您可以使用firefox sqlite-manager plugin),并根据需要提取数据。
您可以从Payroll.exe源代码中找到数据库文件名,您可以通过在ILSpy中打开Payroll.exe来读取该文件。
如果找不到db文件,则无法检索数据。在这种情况下,使用您列出的文件可以达到的最佳效果是通过阅读工资单应用程序的源代码来确定数据库模式。
<强>更新强>:
现在你已经找到了连接字符串,看起来数据库可能确实是System.Data.SQLite.Linq.dll
文件,并且开发人员给它起了一个名称来匹配已知的.NET程序集作为某种类型的通过默默无闻的安全。
如果确实是db文件,你应该能够直接在SQLite客户端应用程序中打开它,就像我上面提到的firefox sqlite-manager plugin一样。如果您无法在SQLite客户端应用程序中打开它,那么您可以通过使用ILSpy或Microsoft's MSIL disassmebler打开它来检查它是否是.NET程序集。
更新2 :
根据this SO question,您应该可以使用免费SQLite2009 Pro Enterprise Manager打开加密的db文件。