check-msdefender 1.1.16__py3-none-any.whl → 1.2.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
  """Check Microsoft Defender API endpoints and check values - Nagios plugin."""
2
- __version__ = "1.1.16"
2
+ __version__ = "1.2.1"
3
3
  __author__ = "ldvchosal"
4
4
  __email__ = "ldvchosa@github.com"
@@ -225,14 +225,14 @@ class DefenderClient:
225
225
 
226
226
  token = self._get_token()
227
227
 
228
- # Use the TVM API endpoint for products
229
- url = f"{self.base_url}/api/machines/SoftwareVulnerabilitiesByMachine"
228
+ # Use the TVM API endpoint for vulnerabilities by machine
229
+ url = f"{self.base_url}/api/vulnerabilities/machinesVulnerabilities"
230
230
  headers = {
231
231
  "Authorization": f"Bearer {token}",
232
232
  "Content-Type": DefenderClient.application_json,
233
233
  }
234
234
 
235
- params = {"pageIndex": "1", "pageSize": "50000"}
235
+ params = {"$top": "10000"}
236
236
 
237
237
  try:
238
238
  start_time = time.time()
@@ -40,13 +40,13 @@ class MachinesService:
40
40
 
41
41
  # Liat machines
42
42
  # Define the sort order
43
- status_priority = {"Onboarded": 1, "InsufficientInfo": 2, "Unsupported": 3}
43
+ status_priority = {"Onboarded": 1, "InsufficientInfo": 2, "Unsupported": 3, "CanBeOnboarded": 4}
44
44
 
45
- # Sort by priority
45
+ # Sort by priority (unknown statuses get priority 99)
46
46
  sorted_machines = sorted(
47
47
  machines,
48
48
  key=lambda x: (
49
- status_priority[x["onboardingStatus"] or ""],
49
+ status_priority.get(x["onboardingStatus"] or "", 99),
50
50
  x["computerDnsName"] or "",
51
51
  ),
52
52
  )
@@ -54,7 +54,7 @@ class ProductsService:
54
54
  products_data = self.defender.get_products()
55
55
  all_products = products_data.get("value", [])
56
56
  products = [
57
- product for product in all_products if product.get("deviceId") == target_machine_id
57
+ product for product in all_products if product.get("machineId") == target_machine_id
58
58
  ]
59
59
 
60
60
  self.logger.info(f"Found {len(products)} vulnerabilities for machine {target_dns_name}")
@@ -62,14 +62,14 @@ class ProductsService:
62
62
  # Group vulnerabilities by software
63
63
  software_vulnerabilities = {}
64
64
  for vulnerability in products:
65
- software_name = vulnerability.get("softwareName", "Unknown")
66
- software_version = vulnerability.get("softwareVersion", "Unknown")
67
- software_vendor = vulnerability.get("softwareVendor", "Unknown")
65
+ software_name = vulnerability.get("productName", "Unknown")
66
+ software_version = vulnerability.get("productVersion", "Unknown")
67
+ software_vendor = vulnerability.get("productVendor", "Unknown")
68
68
  cve_id = vulnerability.get("cveId", "Unknown")
69
69
  cvss_score = vulnerability.get("cvssScore", 0)
70
70
  disk_paths = vulnerability.get("diskPaths", [])
71
71
  registry_paths = vulnerability.get("registryPaths", [])
72
- severity = vulnerability.get("vulnerabilitySeverityLevel", "Unknown")
72
+ severity = vulnerability.get("severity", "Unknown")
73
73
 
74
74
  software_key = f"{software_name}-{software_version}-{software_vendor}"
75
75
 
@@ -101,7 +101,7 @@ class ProductsService:
101
101
  low_count = 0
102
102
 
103
103
  for vulnerability in products:
104
- severityLevel = vulnerability.get("vulnerabilitySeverityLevel", "Unknown")
104
+ severityLevel = vulnerability.get("severity", "Unknown")
105
105
  severity = (severityLevel or "Unknown").lower()
106
106
  if severity == "critical":
107
107
  critical_count += 1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: check-msdefender
3
- Version: 1.1.16
3
+ Version: 1.2.1
4
4
  Summary: A Nagios plugin for monitoring Microsoft Defender API endpoints
5
5
  Keywords: nagios,monitoring,microsoft,graph,api,azure
6
6
  Author-Email: ldvchosal <ldvchosal@github.com>
@@ -1,8 +1,8 @@
1
- check_msdefender-1.1.16.dist-info/METADATA,sha256=bBTyWLUW7Q4aHvjUW3ju0a8QVOiBsbTygSc_WwQWM1c,14853
2
- check_msdefender-1.1.16.dist-info/WHEEL,sha256=tsUv_t7BDeJeRHaSrczbGeuK-TtDpGsWi_JfpzD255I,90
3
- check_msdefender-1.1.16.dist-info/entry_points.txt,sha256=OqVzHI1PaD9V22g0K7BhA2nYv4O-pH8mcLzuGdsk5rM,79
4
- check_msdefender-1.1.16.dist-info/licenses/LICENSE,sha256=kW3DwIsKc9HVYdS4f4tI6sLo-EPqBQbz-WmuvHU4Nak,1065
5
- check_msdefender/__init__.py,sha256=xFHBr_kCxF33YVg7-9vG-qPcLuU4vmT2OkeTf_8OnDg,161
1
+ check_msdefender-1.2.1.dist-info/METADATA,sha256=d1GsyosYFST-LKdTcf1_Kfoan2lVcO7wH-lTpFKVlAE,14852
2
+ check_msdefender-1.2.1.dist-info/WHEEL,sha256=tsUv_t7BDeJeRHaSrczbGeuK-TtDpGsWi_JfpzD255I,90
3
+ check_msdefender-1.2.1.dist-info/entry_points.txt,sha256=OqVzHI1PaD9V22g0K7BhA2nYv4O-pH8mcLzuGdsk5rM,79
4
+ check_msdefender-1.2.1.dist-info/licenses/LICENSE,sha256=kW3DwIsKc9HVYdS4f4tI6sLo-EPqBQbz-WmuvHU4Nak,1065
5
+ check_msdefender/__init__.py,sha256=LO9bjNejm0Yz3BtvvopcVFFiuP1R4Mdurk89jQag6i4,160
6
6
  check_msdefender/__main__.py,sha256=TuNsRSdnkQm9OdBTAwD5aB2zV_Irc50WgylVWhrfnLY,124
7
7
  check_msdefender/check_msdefender.py,sha256=OO4Tg2DBW28AT-2LOH-qJM2pE5TPcF615BF7HjyZsmA,137
8
8
  check_msdefender/cli/__init__.py,sha256=NWaS5ZI9_252AcReugF_WGPMOvQ_B7sC_s3pSrGujcI,291
@@ -20,7 +20,7 @@ check_msdefender/cli/handlers.py,sha256=hp_CX_3qPoQGrPPVeiojb2j7tuFMva4ebWg9CxVU
20
20
  check_msdefender/core/__init__.py,sha256=naBiEkixiWTuHU3GENk8fqC8H3p_hkzRsmSY2uiM_TQ,47
21
21
  check_msdefender/core/auth.py,sha256=7mkGmhGHy4t38O0e4Rz7dQ52xfMbK3IUXMlw3u83aB4,1585
22
22
  check_msdefender/core/config.py,sha256=IoWBL_DB110F4i6hFfli6iFDBXx57dHh32lCuLkcgNk,1170
23
- check_msdefender/core/defender.py,sha256=JChnsyKD2grSMlxSDHEbTd4Al8pW-_8TAN8-1JsINR4,10389
23
+ check_msdefender/core/defender.py,sha256=OyVrI2nEng95eSdDke8aCdL3wODZpRpJfroEQONBCT0,10383
24
24
  check_msdefender/core/exceptions.py,sha256=X4s_XM64SEVSs-4mGKqnF8xXwGFY3E0buvkgRNuCCX4,600
25
25
  check_msdefender/core/logging_config.py,sha256=Rd1F-IDXTx7yckrI8kyx2Ht20f5OcArPCAXb44BOmbg,4084
26
26
  check_msdefender/core/nagios.py,sha256=FmwWZbJHdLDR8Ah0ejt5wj7jNWC6YHbeE5YMyKLSCQA,6303
@@ -28,9 +28,9 @@ check_msdefender/services/__init__.py,sha256=_fiKXxcz263IghXn9BnUWDKPgedhUPoSakE
28
28
  check_msdefender/services/alerts_service.py,sha256=poKZw1WKphmtPPnuMDrGRuPQbRLjLDZpo2rhFCh7TDc,4034
29
29
  check_msdefender/services/detail_service.py,sha256=tXfb6H2dhrTZ5y85H8W58GA8CvA-7aUwMIbNdcqECw0,3381
30
30
  check_msdefender/services/lastseen_service.py,sha256=LiNVeUbAoMzowMvE90P7zCtKFHBLbIDp5mmkVHRLwqs,3128
31
- check_msdefender/services/machines_service.py,sha256=KLRwltpYtwg_qtW6BGIxlH-PB9LcnEyW-i3C4RGSD30,3238
31
+ check_msdefender/services/machines_service.py,sha256=xnvka5h_WQxpYHSZQkrJLEYcw7I-zvan0xUrUXeOyIo,3302
32
32
  check_msdefender/services/models.py,sha256=CDmQ5vU0-GawIalqXjXNk3rry6gsyjv6eSlW2NiXwQ0,979
33
33
  check_msdefender/services/onboarding_service.py,sha256=RIOsvALCoKV0YqnCHKYRkelSPrO-F-6vNBLlto4MpiI,2686
34
- check_msdefender/services/products_service.py,sha256=V8aEaY6cfTfOTMZq8dEIvgxYKxecj7p2hu6YsdG79Ro,9191
34
+ check_msdefender/services/products_service.py,sha256=9ezHS6yc3gvYHQBQEif947q_EnOlPx3_QCPY1urMILc,9153
35
35
  check_msdefender/services/vulnerabilities_service.py,sha256=LuRRQlFt-K82tGUhLCx_QCOp4CbBgSp7fktmeSSoa9o,6838
36
- check_msdefender-1.1.16.dist-info/RECORD,,
36
+ check_msdefender-1.2.1.dist-info/RECORD,,