Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.docx
Скачиваний:
0
Добавлен:
26.04.2026
Размер:
548.34 Кб
Скачать
    1. Модуль проверки установленного по

Функция проверки установленного программного обеспечения выполняет поиск антивирусных программ(АВ) и межсетевых экранов(МЭ), установленных в системе. Проверка осуществляется путём анализа запущенных процессов и системных служб. Для идентификации программ используются предопределённые списки процессов и словари для отображения технических имен в пользовательские. Для проверки антивируса анализируются запущенные процессы системы путём перебора. При обнаружении антивирусного процесса его техническое имя преобразуется в читаемое с помощью словаря. При отсутствии антивируса в процессах проверяется служба Windows Defender. Для проверки межсетевого экрана анализируются процессы сторонних файрволов при их отсутствии проверяется служба Windows Firewall. По результатам проверки формируются статусы для антивируса и межсетевого экрана. В случае обнаружения программ выводится сообщение "Найден" с указанием названия продукта, в случае отсутствия - "Не найден". Блок схема данной функции представлена на рисунке 1.2.1. Работа модуля представлена на рисунках 1.2.2 – 1.2.3. Программный код модуля представлен в листинге 2.

Рисунок 1.2.1 – Блок схема модуля проверки установленного программного обеспечения

Рисунок 1.2.2 - Окно проверки работоспособности

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

Листинг 2 – Программный код модуля проверки установленного программного обеспечения

def check_installed_software(self):

def task():

self.start_progress()

self.update_status("Поиск установленного ПО...")

antivirus_names = {

'avp': 'Kaspersky Anti-Virus',

'avpui': 'Kaspersky Anti-Virus',

'msmpeng': 'Windows Defender',

'windefend': 'Windows Defender',

'securityhealthservice': 'Windows Security',

'avast': 'Avast Antivirus',

'avg': 'AVG Antivirus',

'bdagent': 'Bitdefender',

'norton': 'Norton Antivirus',

'mcafee': 'McAfee Antivirus',

'mcshield': 'McAfee Antivirus',

'egui': 'ESET NOD32',

'ekrn': 'ESET NOD32',

'bullguard': 'BullGuard'

}

antivirus_processes = [

'avp', 'avpui', 'msmpeng', 'windefend', 'securityhealthservice',

'avast', 'avg', 'bdagent', 'norton', 'mcafee', 'mcshield',

'egui', 'ekrn', 'bullguard', 'pccntmon', 'tmcc'

]

firewall_processes = [

'cfp', 'outpost', 'pfirewall', 'vsmon', 'zonealarm'

]

# ПРОВЕРКА АНТИВИРУСА

av_found = False

av_name = ""

for proc in psutil.process_iter(['name']):

try:

proc_name = proc.info['name'].lower()

# Исключаем VPN и другие не-антивирусы

if any(vpn in proc_name for vpn in ['vpn', 'openvpn', 'wireguard']):

continue

if any(av in proc_name for av in antivirus_processes):

av_found = True

# Получаем красивое имя из словаря

for process_key, nice_name in antivirus_names.items():

if process_key in proc_name:

av_name = nice_name

break

if not av_name:

av_name = proc.info['name']

break

except (psutil.NoSuchProcess, psutil.AccessDenied):

continue

if not av_found:

try:

result_defender = subprocess.run([

'sc', 'query', 'windefend'

], capture_output=True, text=True, timeout=10)

if 'RUNNING' in result_defender.stdout:

av_found = True

av_name = "Windows Defender"

except:

pass

if av_found:

self.antivirus_status = f"Найден ({av_name})"

else:

self.antivirus_status = "Не найден"

# ПРОВЕРКА ФАЕРВОЛА

fw_found = False

fw_name = ""

# Словарь для фаерволов

firewall_names = {

'cfp': 'Comodo Firewall',

'outpost': 'Outpost Firewall',

'vsmon': 'ZoneAlarm Firewall'

}

# 1. Проверяем процессы сторонних фаерволов

for proc in psutil.process_iter(['name']):

try:

proc_name = proc.info['name'].lower()

if any(fw in proc_name for fw in firewall_processes):

fw_found = True

# Получаем красивое имя из словаря

for process_key, nice_name in firewall_names.items():

if process_key in proc_name:

fw_name = nice_name

break

if not fw_name:

fw_name = proc.info['name']

break

except (psutil.NoSuchProcess, psutil.AccessDenied):

continue

# 2. Если не нашли процессы, проверяем Windows Firewall

if not fw_found:

try:

result = subprocess.run(

['sc', 'query', 'mpssvc'],

capture_output=True, text=True, timeout=10

)

if 'RUNNING' in result.stdout:

fw_found = True

fw_name = "Windows Firewall"

except:

pass

# 3. Дополнительная проверка через netsh

if not fw_found:

try:

result = subprocess.run(

['netsh', 'advfirewall', 'show', 'allprofiles'],

capture_output=True, text=True, timeout=10

)

if 'ON' in result.stdout or 'Вкл' in result.stdout:

fw_found = True

fw_name = "Windows Firewall"

except:

pass

if fw_found:

self.firewall_status = f"Найден ({fw_name})"

else:

self.firewall_status = "Не найден"

self.stop_progress()

self.update_status("Поиск завершен")

self.update_results_table()

threading.Thread(target=task).start()

Соседние файлы в предмете Методы и средства защиты информации в компьютерных сетях