Назад к задачам
Junior — Middle+
4

Определение уязвимых устройств по CVE

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

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

Необходимо построить структуру данных, в которой каждому идентификатору устройства (device_id) будет сопоставлено количество уязвимостей, обнаруженных для него. Ниже приведён пример реализации, который последовательно запрашивает страницы API, считает количество уязвимостей в каждом ответе и формирует итоговый словарь, а также суммарное количество уязвимостей.


def process_paginated_response(content, res):
    total = 0
    for item in content:
        device_id = item["device_id"]
        vuln_num = len(item["vulnerabilities"])
        res[device_id] += vuln_num
        total += vuln_num
    return total

res = defaultdict(int)
total_ = 0
page_number = 1

while True:
    url = f"{base_url}?page_number={page_number}"
    content_ = requests.get(url, auth=(username, password)).json()
    total_ += process_paginated_response(content_["results"], res)
    if content_["more"] is False:
        break
    page_number += 1

print(json.dumps(dict(res), indent=4))
print(total_)