【问题标题】:Retrieve Access .mdb database password using C#使用 C# 检索 Access .mdb 数据库密码
【发布时间】:2017-01-03 14:21:13
【问题描述】:

构建一个读取访问数据库文件的 C# 应用程序。 每个数据库都有不同的密码。目前我正在使用 Access Passview http://www.nirsoft.net/utils/accesspv.html(免费软件)来读取密码,但我希望能够自动化它,以便我可以将它分配给 OLEDB 连接字符串的字符串。 (执行时的exe截图)

exe可以从命令行运行,这是我尝试在我的应用程序中实现的

    var proc = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "accesspv.exe",
            Arguments = _filePath, 
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = true,     
        }
    };

    proc.Start();
    while (!proc.StandardOutput.EndOfStream)
    {
        string line = proc.StandardOutput.ReadToEnd();
        Console.WriteLine(line);
       _password2016 = line;
   }

这对我不起作用,因为 access passview exe 正常运行并且密码不会显示在控制台中。

我的主要问题是 1. 是否可以将密码读取为分配给我的连接字符串的变量? 2. 是否让accesspv.exe在后台运行,最终用户看不到它?

谢谢。

【问题讨论】:

  • 如果它是开源的,您可以制作控制台版本.. 否则您需要从那里截取密码,因为不,它不会拾取单词,因为它没有写入标准输出..
  • 对不起,我的错,它只是免费软件,不是开源的

标签: c# ms-access


【解决方案1】:

该工具的源代码可在网站here 上找到。您可以在 C# 中编写相同的代码。

public class Program
{
    private static readonly byte[] XorBytes = {
        0x86, 0xFB, 0xEC, 0x37, 0x5D, 0x44, 0x9C, 0xFA, 0xC6,
        0x5E, 0x28, 0xE6, 0x13, 0xB6, 0x8A, 0x60, 0x54, 0x94
    };

    public static void Main(string[] args)
    {
        var filePath = args[0];
        var fileBytes = new byte[256];

        using (var fileReader = File.OpenRead(filePath))
        {
            fileReader.Read(fileBytes, 0, fileBytes.Length);
        }

        var passwordBytes = XorBytes
            .Select((x, i) => (byte) (fileBytes[i + 0x42] ^ x))
            .TakeWhile(x => x != 0);
        var password = Encoding.ASCII.GetString(passwordBytes.ToArray());

        Console.WriteLine($"Password is \"{password}\"");
        Console.ReadKey();
    }
}

【讨论】:

  • 未来读者请注意:正如原始 VB6 源代码中所述,“它仅适用于 Access 95 或 97 [数据库文件]。”
  • 感谢马特,帮了大忙!
猜你喜欢
  • 1970-01-01
  • 2010-09-22
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-01
相关资源
最近更新 更多