Сначала определите формат отчёта и единицу подсчёта: все обнаружения, уникальные 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 и текст разбираются отдельными адаптерами; крупные отчёты обрабатывайте потоково. Пропущенные обязательные разделы должны давать ошибку, а не ложный ноль.