Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая / БСТ2104 Курсовая.docx
Скачиваний:
43
Добавлен:
15.01.2025
Размер:
1.83 Mб
Скачать
      1. Вывод результатов

Результаты выводятся в основное поле на форме приложения. В любом порядке выполняется проверка МЭ и антивирусов, в результате чего в соответствующие текстовые поля заносятся данные. Рисунок блок-схемы алгоритма вывода результатов работы представлен на рисунке 11.

Рисунок 11 – Блок схема алгоритма вывода результатов

На рисунке 12 представлен результат работы модуля вывода результата в окно вывода.

Рисунок 12 - Результат работы программы

      1. Экспорт результатов

Результат проверки работы приложения можно записать в файл. Сначала происходит проверка, вывел ли пользователь результат на экран. Поcле проверки происходит сохранения текстовый файл ResultFileDef.txt на рабочий стол. Рисунок блок-схемы сохранения результата работы в файл представлен на рисунке 13, а на рисунке 14 содержимое файла после выполнения работы.

Рисунок 13 – Блок-схема алгоритма сохранения результата в файл

Рисунок 14 - Журнал работы программы

Полный код программы представлен в приложении в листинге 1.

Заключение

В ходе выполнения курсовой работы была исследована теоретическая база, о видах ПО для защиты ПК: антивирусы и МЭ. Были изучены принципы работы программ для борьбы с вредоносным ПО. Было разработано приложение, которое проверят работу антивируса и МЭ.

В качестве среды разработки выбрана Visual Studio 2019, а язык программирования – C++/CLI. В данной среде разработаны детализированные алгоритмы для различных модулей программного обеспечения, предназначенных для мониторинга работы антивирусных программ и межсетевых экранов. Также был спроектирован пользовательский интерфейс приложения.

В ходе выполнения этой курсовой работы мною были получены важные знания и навыки в области информационной безопасности. Изучение принципов функционирования антивирусного ПО и МЭ дало мне возможность понять, как эти инструменты защищают компьютерные системы от различных угроз.

Список использованных источников

  1. Техническая документация Microsoft Windows.

  2. Документация по семейству продуктов Visual Studio https://learn.microsoft.com/ru-ru/visualstudio/

  3. Т.А. Маркина: Средства защиты вычислительных систем и сетей

  4. Работа с потоками в C++/CLI http://blog.kislenko.net/show.php?id=2607

  5. Техническая документация по C++/CLI https://learn.microsoft.com/ru-ru/cpp/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli?view=msvc-170

Приложение

Листинг 1. Программный код.

using namespace System;

using namespace System::Windows::Forms;

using namespace System::Net::NetworkInformation; // Для работы с ping

using namespace System::Diagnostics; // Для работы с процессами

using namespace System::Threading; // Для использования Thread::Sleep

using namespace System::IO; // Для работы с файлами

// Кнопка Закрытие окна

private: System::Void ExitButton_Click(System::Object^ sender, System::EventArgs^ e) {

this->Close();

}

// Кнопка Сохранения результата в файл

private: System::Void SaveInFileButton_Click(System::Object^ sender, System::EventArgs^ e) {

// Проверяем, пуст ли TextBox

if (String::IsNullOrWhiteSpace(ResulttextBox->Text)) {

MessageBox::Show("Вы не проверили работоспособность программы!", "Предупреждение", MessageBoxButtons::OK, MessageBoxIcon::Warning);

return;

}

// Формируем путь для файла на рабочем столе

String^desktopPath=System::Environment::GetFolderPath(System::Environment::SpecialFolder::Desktop);

String^ fileName = "ResultFileInfDef.txt"; // Название файла

String^ filePath = System::IO::Path::Combine(desktopPath, fileName);

// Сохраняем текст в файл

System::IO::File::WriteAllText(filePath, ResulttextBox->Text);

}

// Кнопка Проверки Интернет соединения

private: System::Void InternetConnectionButton(System::Object^ sender, System::EventArgs^ e) {

InternetСonnectiontextBox->Clear();

Ping^ pingSender = gcnew Ping();

// Проверка интернет соединения

try {

PingReply^ reply = pingSender->Send("77.88.8.8");

// Проверка на получения ответа

if (reply->Status == IPStatus::Success) {

InternetСonnectiontextBox->Text = (DateTime::Now.ToString() + ": Соединение с интернетом установлено!");

}

else {

InternetСonnectiontextBox->Text = (DateTime::Now.ToString() + ": Нет соединения с интернетом!");

}

}

catch (Exception^ ex) {

InternetСonnectiontextBox->Text = (DateTime::Now.ToString() + ": Ошибка при проверке соединения: " + ex->Message);

}

}

// Кнопка Проверки наличия установленного антивирусного ПО

private: System::Void CheckAntivirusSoftwareButton_Click(System::Object^ sender, System::EventArgs^ e) {

CheckAntivirusSoftwaretextBox->Clear();

// Путь к папке с Kaspersky

String^ kasperskyPath = "C:\\Program Files (x86)\\Kaspersky Lab\\Kaspersky 21.18";

// Проверка существования пути и исполняемого файла

try {

if (System::IO::File::Exists(kasperskyPath + "\\avpui.exe")) {

CheckAntivirusSoftwaretextBox->AppendText(DateTime::Now.ToString() + ": Антивирус Kaspersky установлен!");

}

else {

CheckAntivirusSoftwaretextBox->AppendText(DateTime::Now.ToString() + ": Антивирус Kaspersky не установлен!");

}

}

catch (Exception^ ex) {

CheckAntivirusSoftwaretextBox->AppendText("Ошибка при проверке: " + ex->Message);

}

}

// Кнопка наличия установленного МЭ

private: System::Void CheckFirewallButton_Click(System::Object^ sender, System::EventArgs^ e) {

CheckFirewalltextBox->Clear();

// Путь к папке

String^ firewallPath = "C:\\Program Files\\Windows Defender";

// Проверка существования пути

try {

if (System::IO::File::Exists(firewallPath + "\\MpDlpCmd.exe")) {

CheckFirewalltextBox->AppendText(DateTime::Now.ToString() + ": МЭ установлен!");

}

else {

CheckFirewalltextBox->AppendText(DateTime::Now.ToString() + ": МЭ не установлен!");

}

}

catch (Exception^ ex) {

CheckFirewalltextBox->AppendText("Ошибка при проверке: " + ex->Message);

}

}

// Кнопка вывода результатов

private: System::Void ResultButton_Click_Click(System::Object^ sender, System::EventArgs^ e) {

ResulttextBox->Clear();

// Получаем текст из текстбоксов

String^ firewallText = CheckFirewalltextBox->Text;

String^ internetConnectionText = InternetСonnectiontextBox->Text;

String^ antivirusSoftwareText = CheckAntivirusSoftwaretextBox->Text;

String^ firewallWorkText = CheckFirewallWorktextBox->Text;

String^ antivirusTestText = AntivirusTesttextBox->Text;

// Объединяем текст с переносами строк

String^ result = internetConnectionText + Environment::NewLine +

firewallText + Environment::NewLine +

firewallWorkText + Environment::NewLine +

antivirusSoftwareText + Environment::NewLine +

antivirusTestText;

// Устанавливаем текст в результирующий текстбокс

ResulttextBox->Text = result;

}

// Кнопка Проверки работоспособности МЭ

private: System::Void CheckFirewallWorkButton_Click(System::Object^ sender, System::EventArgs^ e) {

CheckFirewallWorktextBox->Clear();

// Проверяем состояние всех профилей встроенного межсетевого экрана Windows

String^ firewallProfilesCommand = "netsh advfirewall show allprofiles";

try {

// Запускаем команду

Process^ process = gcnew Process();

ProcessStartInfo^ startInfo = gcnew ProcessStartInfo("cmd.exe", "/c " + firewallProfilesCommand);

startInfo->RedirectStandardOutput = true; // Перенаправление стандартного вывода

startInfo->UseShellExecute = false; // Не использовать оболочку Windows для открытия нового процесса

startInfo->CreateNoWindow = true; // Не создавать новое окно для процесса

// Применяем настройки к процессу

process->StartInfo = startInfo;

process->Start();

String^ output = process->StandardOutput->ReadToEnd();

process->WaitForExit();

// Проверка на наличие упоминаний о включенном межсетевом экране

if (output->Contains("ВКЛЮЧИТЬ") || output->Contains("ON")) {

CheckFirewallWorktextBox->AppendText(DateTime::Now.ToString() + ": Встроенный МЭ Windows работает!");

}

else {

CheckFirewallWorktextBox->AppendText(DateTime::Now.ToString() + ": Встроенный МЭ Windows отключен!");

}

}

catch (Exception^ ex) {

// Обработка исключений

CheckFirewalltextBox->AppendText("Ошибка при проверке: " + ex->Message);

}

}

// Кнопка Проверки работоспособности антивируса

private: System::Void AntivirusTestButton_Click(System::Object^ sender, System::EventArgs^ e) {

AntivirusTesttextBox->Clear();

// Создание файла AntivirusTest.txt на рабочем столе

String^ desktopPath = System::Environment::GetFolderPath(System::Environment::SpecialFolder::Desktop);

String^ fileName = "AntivirusTest.txt"; // Название файла

String^ filePath = System::IO::Path::Combine(desktopPath, fileName);

// Объявляем переменные

String^ part1 = "X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H";

String^ part2 = "+H*";

// Объединяем строки и записываем в файл

String^ combined = part1 + part2;

System::IO::File::WriteAllText(filePath, combined);

// Проверка существования файла через определённое время

Thread::Sleep(70000);

// Проверяем существование файла

if (System::IO::File::Exists(filePath)) {

AntivirusTesttextBox->AppendText(DateTime::Now.ToString() + ": Антивирус не обнаружил вредоносный файл!");

}

else {

AntivirusTesttextBox->AppendText(DateTime::Now.ToString() + ": Антивирус удалил вредоносный файл!");

}

}

// Кнопка Сброса результатов

private: System::Void ResetButton_Click(System::Object^ sender, System::EventArgs^ e) {

// Очищаем другие текстбоксы

CheckFirewalltextBox->Clear();

InternetСonnectiontextBox->Clear();

CheckAntivirusSoftwaretextBox->Clear();

CheckFirewallWorktextBox->Clear();

AntivirusTesttextBox->Clear();

ResulttextBox->Clear();

}

};

}

Соседние файлы в папке Курсовая