diff --git a/README.md b/README.md index 6f8ed05..b7eb554 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,17 @@ import vulners vulners_api = vulners.Vulners(api_key="YOUR_API_KEY_HERE") references = vulners_api.references("CVE-2014-0160") ``` +### Get Windows KB superseeding and parentseeding information +```python +import vulners + +vulners_api = vulners.Vulners(api_key="YOUR_API_KEY_HERE") +# Superseeding information will be returned as dict +# with two fields: 'superseeds', 'parentseeds'. +# Superseeds means "what KB are covered by this KB". +# Parentseeds means "what KB are covering this KB". +superseeds = vulners_api.kbSuperseeds("KB4524135") +``` ### Score any vulnerability description using [Vulners AI](https://lab.wallarm.com/new-from-wallarm-research-first-ai-based-tool-to-predict-vulnerability-risk-2d0a7e9b3474) ```python import vulners @@ -93,7 +104,7 @@ vulners_api = vulners.Vulners(api_key="YOUR_API_KEY_HERE") text_ai_score = vulners_api.aiScore("My cool vulnerability description") ``` ### Get possible query autocompletions -``` +```python import vulners vulners_api = vulners.Vulners(api_key="YOUR_API_KEY_HERE") diff --git a/vulners/__init__.py b/vulners/__init__.py index cf7b966..44010f8 100644 --- a/vulners/__init__.py +++ b/vulners/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -__version__ = "1.5.2" +__version__ = "1.5.3" from vulners.api import Vulners diff --git a/vulners/api.py b/vulners/api.py index 16b4495..0449514 100644 --- a/vulners/api.py +++ b/vulners/api.py @@ -541,6 +541,21 @@ def kbAudit(self, os, kb_list): """ return self.__kbAudit(os, kb_list) + def kbSuperseeds(self, kb_identificator): + """ + Returns list of superseeds KB's and parentseeds KB's. + Superseeds means "what KB are covered by this KB". + Parentseeds means "what KB are covering this KB". + + superseeds_list --> KB --> parentseeds_list + + :param kb_identificator: Microsoft KB identificator + :return: {'superseeds':[], 'parentseeds':[]} + """ + kb_candidate = self.__id(identificator=kb_identificator, fields=['superseeds', 'parentseeds'], references=False) + kb_document = kb_candidate.get('documents',{}).get(kb_identificator, {}) + return {'superseeds':kb_document.get('superseeds', []), 'parentseeds':kb_document.get('parentseeds', [])} + def documentList(self, identificatorList, fields = None): """ Fetch information about multiple bulletin identificators