
- •Содержание
- •Глава 1. Принципы функционирования межсетевых экранов и антивирусного программного обеспечения 6
- •Глава 2. Разработка и описание комплексной системы проверки средств обеспечения безопасности пк 10
- •Введение
- •Глава 1. Принципы функционирования межсетевых экранов и антивирусного программного обеспечения
- •Межсетевые экраны
- •Принципы функционирования межсетевых экранов
- •Виды межсетевых экранов
- •Антивирусное программное обеспечение
- •1.2.1. Принципы функционирования антивирусного программного обеспечения
- •1.2.2. Основные функции антивирусного программного обеспечения
- •Глава 2. Разработка и описание комплексной системы проверки средств обеспечения безопасности пк
- •2.1. Постановка задачи
- •2.2. Описание алгоритмов модулей в виде блок-схем
- •2.3. Программная реализация алгоритмов модулей
- •2.3.1. Модуль для проверки наличия соединения с Интернетом
- •2.3.2. Модуль для проверки наличия межсетевого экрана
- •2.3.3. Модуль для проверки работоспособности межсетевого экрана
- •2.3.4. Модуль для проверки наличия установленного антивирусного программного обеспечения
- •2.3.5. Модуль для проверки работоспособности антивирусного программного обеспечения
- •2.3.6. Модуль для тестирования антивирусного программного обеспечения
- •2.3.7. Модуль для сохранения результатов проверки
- •2.3.8. Модуль для отображения результатов проверки
- •2.3.9. Модуль для завершения работы программы
- •2.3.10. Модуль для добавления результатов
- •2.3.11. Модуль для обработки исключений
- •2.3.12. Модуль для создания тела программы
- •2.3.13. Модуль для создания графического интерфейса программы
- •2.4. Результаты работы программы
- •Заключение
- •Список использованных источников
- •Приложения Приложение а
Список использованных источников
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();
}
}
}
}