
- •Введение
- •Принципы функционирования межсетевых экранов и антивирусного программного обеспечения
- •Разработка модуля проверки наличия установленного мэ
- •Разработка модуля проверки работоспособности мэ
- •Разработка модуля проверки наличия установленного антивируса
- •Разработка модуля тестирования антивирусного по
- •Вывод результатов
- •Экспорт результатов
- •Заключение
- •Список использованных источников
- •Приложение
Вывод результатов
Результаты выводятся в основное поле на форме приложения. В любом порядке выполняется проверка МЭ и антивирусов, в результате чего в соответствующие текстовые поля заносятся данные. Рисунок блок-схемы алгоритма вывода результатов работы представлен на рисунке 11.
Рисунок 11 – Блок схема алгоритма вывода результатов
На рисунке 12 представлен результат работы модуля вывода результата в окно вывода.
Рисунок 12 - Результат работы программы
Экспорт результатов
Результат проверки работы приложения можно записать в файл. Сначала происходит проверка, вывел ли пользователь результат на экран. Поcле проверки происходит сохранения текстовый файл ResultFileDef.txt на рабочий стол. Рисунок блок-схемы сохранения результата работы в файл представлен на рисунке 13, а на рисунке 14 содержимое файла после выполнения работы.
Рисунок 13 – Блок-схема алгоритма сохранения результата в файл
Рисунок 14 - Журнал работы программы
Полный код программы представлен в приложении в листинге 1.
Заключение
В ходе выполнения курсовой работы была исследована теоретическая база, о видах ПО для защиты ПК: антивирусы и МЭ. Были изучены принципы работы программ для борьбы с вредоносным ПО. Было разработано приложение, которое проверят работу антивируса и МЭ.
В качестве среды разработки выбрана Visual Studio 2019, а язык программирования – C++/CLI. В данной среде разработаны детализированные алгоритмы для различных модулей программного обеспечения, предназначенных для мониторинга работы антивирусных программ и межсетевых экранов. Также был спроектирован пользовательский интерфейс приложения.
В ходе выполнения этой курсовой работы мною были получены важные знания и навыки в области информационной безопасности. Изучение принципов функционирования антивирусного ПО и МЭ дало мне возможность понять, как эти инструменты защищают компьютерные системы от различных угроз.
Список использованных источников
Техническая документация Microsoft Windows.
Документация по семейству продуктов Visual Studio https://learn.microsoft.com/ru-ru/visualstudio/
Т.А. Маркина: Средства защиты вычислительных систем и сетей
Работа с потоками в C++/CLI http://blog.kislenko.net/show.php?id=2607
Техническая документация по 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();
}
};
}