Определение числа обнаруженных уязвимостей из отчёта сканера

Сначала определите формат отчёта и единицу подсчёта: все обнаружения, уникальные CVE или уникальные пары устройство–уязвимость. Затем выберите соответствующий парсер.

Короткий ответ

Что ответить на собеседовании

Сначала определите формат отчёта и единицу подсчёта: все обнаружения, уникальные CVE или уникальные пары устройство–уязвимость. Затем выберите соответствующий парсер.

Подробный разбор

Ответ с пояснениями

Условие

Создайте программу, которая читает оригинальный вывод сканера безопасности (например, в формате JSON, XML или простого текста) и выводит количество уязвимостей, найденных на всех проверенных устройствах.

Ответ

Сначала определите формат отчёта и единицу подсчёта: все обнаружения, уникальные CVE или уникальные пары устройство–уязвимость. Затем выберите соответствующий парсер.

Например, для явно принятой JSON-схемы {'devices': [{'vulnerabilities': [...]}]}:

import json

def count_findings(path):
    with open(path, encoding='utf-8') as source:
        report = json.load(source)
    return sum(len(device['vulnerabilities']) for device in report['devices'])

Так считается число записей-обнаружений на всех устройствах, а не число уникальных CVE. Реальный отчёт может содержать другие поля, поэтому названия нельзя считать универсальными. Для дедупликации нужен стабильный ID уязвимости и устройства. XML и текст разбираются отдельными адаптерами; крупные отчёты обрабатывайте потоково. Пропущенные обязательные разделы должны давать ошибку, а не ложный ноль.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее