Назад к задачам
Junior — Senior
4

Подсчёт количества уязвимостей за 2023 и 2024 годы

Компании, где спрашивали:

Cybersec
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо определить, сколько уязвимостей имеет идентификатор, начинающийся с CVE‑2023 и сколько – с CVE‑2024, получая данные постранично из API. Ниже приведён пример решения на Python, которое последовательно запрашивает страницы, агрегирует количество уязвимостей для каждого устройства и подсчитывает общую сумму.

from collections import defaultdict
import requests, json


def aggregate_page(data_page, counters):
    page_total = 0
    for entry in data_page:
        dev_id = entry["device_id"]
        vuln_count = len(entry["vulnerabilities"])
        counters[dev_id] += vuln_count
        page_total += vuln_count
    return page_total

counters = defaultdict(int)
overall_total = 0
page_idx = 1

while True:
    api_url = f"{base_url}?page_number={page_idx}"
    response = requests.get(api_url, auth=(username, password)).json()
    overall_total += aggregate_page(response["results"], counters)
    if response["more"] is False:
        break
    page_idx += 1

print(json.dumps(dict(counters), indent=4))
print(overall_total)