Добавил:
мой вк: vk.com/truecrimebitch больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.docx
Скачиваний:
2
Добавлен:
11.05.2025
Размер:
1.55 Mб
Скачать

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

1. ГОСТ Р 7.0.5-2008. Система стандартов по информации, библиотечному и издательскому делу. Библиографическая ссылка Общие требования и правила составления. М. – Стандартинформ, 2008.

2. Н.И. Парфилова, А. Н. Пылькин, Б.Г. Трусов, Программирование. Основы алгоритмизации и программирования. Учебник, 2014г., 240 стр.

3. Климентьев К.. Компьютерные вирусы и антивирусы. Взгляд программиста, ДМК Пресс, 656 стр., 2015г.

4. Холмогоров В., PRO Вирусы, ООО «Страта», Санкт-Петербург, 2015г.

5. Черпаков И., Основы программирования. Учебник и практикум, Юрайт, 220 стр., 2016г.

6. ГОСТ 7.32-2017 Система стандартов по информации, библиотечному и издательскому делу. Отчёт о научно-исследовательской работе. Структура и правила оформления. М. – Стандартинформ, 2017.

7. ГОСТ 2.105-2019 Единая система конструкторской документации. Общие требования к текстовым документам. М. – Стандартинформ, 2019.

Приложения Приложение а

Листинг программы

using System.Diagnostics;

using System.Management;

using System.Net.NetworkInformation;

using System.Windows.Forms;

using NetFwTypeLib;

namespace WinFormsApp1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

// Метод для добавления результатов и обновления текстовых полей

private void AppendResult(string result, TextBox targetTextBox = null)

{

txtResults.AppendText(result + Environment.NewLine + Environ - ment.NewLine);

if (targetTextBox != null)

{

targetTextBox.Text = result.Replace("\n", Environment.NewLine);

}

}

// Универсальный метод для выполнения операций с обработкой исключений

private string ExecuteWithExceptionHandling(Func<string> action)

{

try

{

return action();

}

catch (Exception ex)

{

return $"Ошибка: {ex.Message}";

}

}

/*

* Функционал проверки подключения к Интернету

*/

private void btnCheckInternetConnection_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHan - dling(CheckInternetConnectionStatus);

AppendResult(result, txtInternetStatus);

}

private string CheckInternetConnectionStatus()

{

using (var ping = new Ping())

{

PingReply reply = ping.Send("8.8.8.8", 3000);

return reply.Status == IPStatus.Success ? "Соединение с Интернетом установлено." : "Соединение с Интернетом отсутствует.";

}

}

/*

* Функционал проверки наличия установленного межсетевого экрана

*/

private void btnCheckFirewall_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHandling(CheckFirewallStatus);

AppendResult(result, txtFirewall);

}

private string CheckFirewallStatus()

{

INetFwProfile fwProfile = GetFirewallProfile();

return fwProfile != null && fwProfile.FirewallEnabled ? "Межсетевой экран включен." : "Межсетевой экран отключен.";

}

private INetFwProfile GetFirewallProfile()

{

INetFwMgr fwMgr = (INet - FwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));

return fwMgr.LocalPolicy.CurrentProfile;

}

/*

* Функционал проверки работоспособности межсетевого экрана

*/

private void btnCheckFirewallStatus_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHan - dling(CheckFirewallOperationalStatus);

AppendResult(result, txtFirewallStatus);

}

private string CheckFirewallOperationalStatus()

{

Type policyType = Type.GetTypeFromProgID("HNetCfg.FwPolicy2");

INetFwPolicy2 fwPolicy = (INetFwPoli - cy2)Activator.CreateInstance(policyType);

bool isDomainEnabled = fwPoli - cy.FirewallEnabled[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN];

bool isPrivateEnabled = fwPoli - cy.FirewallEnabled[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE];

bool isPublicEnabled = fwPoli - cy.FirewallEnabled[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC];

bool areExceptionsAllowed = !fwPoli - cy.BlockAllInboundTraffic[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN] &&

!fwPoli - cy.BlockAllInboundTraffic[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE] &&

!fwPoli - cy.BlockAllInboundTraffic[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC];

return $"Статус межсетевого экрана:\n" +

$"- Доменный профиль: {(isDomainEnabled ? "Включен" : "Отключен")}\n" +

$"- Частный профиль: {(isPrivateEnabled ? "Включен" : "Отключен")}\n" +

$"- Публичный профиль: {(isPublicEnabled ? "Включен" : "Отключен")}\n" +

$"- Исключения для входящих соединений: {(areExceptionsAllowed ? "Разрешены" : "Запрещены")}\n";

}

/*

* Функционал проверки наличия антивирусного ПО

*/

private void btnCheckAntivirus_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHandling(CheckAntivirusStatus);

AppendResult(result, txtCheckAntivirus);

}

private string CheckAntivirusStatus()

{

string antivirusInfo = "Установленные антивирусные программы:\n";

ManagementObjectSearcher searcher = new ManagementObjectSearch - er(@"root\SecurityCenter2", "SELECT * FROM AntiVirusProduct");

foreach(ManagementObject obj in searcher.Get())

{

antivirusInfo += $"- {obj["displayName"]}\n";

}

return antivirusInfo.Length > "Установленные антивирусные программы:\n".Length ? antivirusInfo : "Антивирусные программы не найдены.";

}

/*

* Функционал проверки работоспособности антивирусного ПО

*/

private void btnCheckAntivirusStatus_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHan - dling(CheckAntivirusOperationalStatus);

AppendResult(result, txtCheckAntivirusStatus);

}

private string CheckAntivirusOperationalStatus()

{

string antivirusStatus = "Проверка работоспособности антивирусного ПО:\n";

ManagementObjectSearcher searcher = new ManagementObjectSearch - er(@"root\SecurityCenter2", "SELECT * FROM AntiVirusProduct");

foreach(ManagementObject obj in searcher.Get())

{

string displayName = obj["displayName"] ? .ToString();

uint productState = (uint)obj["productState"];

bool isRealTimeProtectionOn = (productState & 0x10) != 0;

bool isUpdated = (productState & 0x1000) != 0;

antivirusStatus += isRealTimeProtectionOn ?

$"- {displayName}: Защита включена, база {(isUpdated ? "обновлена" : "устарела")}\n" :

$"- {displayName}: Защита отключена\n";

}

return antivirusStatus.Length > "Проверка работоспособности антивирусного ПО:\n".Length ? antivirusStatus : "Рабочих антивирусных программ не обнаружено.";

}

/*

* Функционал тестирования антивирусного ПО

*/

private void btnTestAntivirus_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHandling(TestAntivirus);

AppendResult(result, txtTestAntivirus);

}

private string TestAntivirus()

{

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

string filePath = Path.Combine(Path.GetTempPath(), "EICART-estFile.com");

File.WriteAllText(filePath, eicarTestString);

if (!File.Exists(filePath))

{

return "Антивирус успешно обнаружил и удалил тестовый файл.";

}

else

{

File.Delete(filePath);

return "Антивирус не обнаружил тестовый файл.";

}

}

/*

* Функционал сохранения результатов

*/

private void btnSave_Click(object sender, EventArgs e)

{

using (SaveFileDialog saveFileDialog = new SaveFileDialog())

{

saveFileDialog.Filter = "Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*";

saveFileDialog.Title = "Сохранить результаты";

saveFileDialog.FileName = "Результаты проверок.txt";

if (saveFileDialog.ShowDialog() == DialogResult.OK)

{

try

{

File.WriteAllText(saveFileDialog.FileName, txtRe - sults.Text);

MessageBox.Show("Результаты успешно сохранены.", "Сохранение", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

catch (Exception ex)

{

MessageBox.Show($"Ошибка при сохранении файла: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

}

}

private void btnExit_Click(object sender, EventArgs e)

{

DialogResult result = MessageBox.Show("Вы действительно хотите выйти?", "Подтверждение выхода", MessageBoxButtons.YesNo, MessageBoxI - con.Question);

if (result == DialogResult.Yes)

{

Application.Exit();

}

}

}

}