- •Введение
- •1 Реализация программного обеспечения
- •1.1 Модуль проверки подключения к интернету
- •Модуль проверки установленного по
- •Модуль проверки работоспособности межсетевого экрана
- •1.4 Модуль проверки работоспособности антивируса
- •1.5 Модуль сохранения результатов в файл
- •Заключение
- •Список использованных источников
- •Приложение а
Модуль проверки установленного по
Функция проверки установленного программного обеспечения выполняет поиск антивирусных программ(АВ) и межсетевых экранов(МЭ), установленных в системе. Проверка осуществляется путём анализа запущенных процессов и системных служб. Для идентификации программ используются предопределённые списки процессов и словари для отображения технических имен в пользовательские. Для проверки антивируса анализируются запущенные процессы системы путём перебора. При обнаружении антивирусного процесса его техническое имя преобразуется в читаемое с помощью словаря. При отсутствии антивируса в процессах проверяется служба 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()
