Spaces:
Sleeping
Sleeping
File size: 2,677 Bytes
de38b77 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import requests
import json
class ThreatIntelligence:
def __init__(self):
self.api_keys = {}
self.endpoints = {}
self.threat_data = []
def add_api_key(self, provider, api_key):
self.api_keys[provider] = api_key
def set_endpoint(self, provider, endpoint):
self.endpoints[provider] = endpoint
def fetch_threat_data(self, provider):
if provider in self.api_keys and provider in self.endpoints:
headers = {"Authorization": f"Bearer {self.api_keys[provider]}"}
response = requests.get(self.endpoints[provider], headers=headers)
if response.status_code == 200:
self.threat_data.append(response.json())
else:
print(f"Failed to fetch data from {provider}: {response.status_code}")
else:
print(f"API key or endpoint for {provider} not set.")
def aggregate_threat_data(self):
aggregated_data = {}
for data in self.threat_data:
for item in data:
threat_id = item.get("id")
if threat_id not in aggregated_data:
aggregated_data[threat_id] = item
else:
aggregated_data[threat_id].update(item)
return aggregated_data
def normalize_threat_data(self, data):
normalized_data = []
for item in data.values():
normalized_item = {
"id": item.get("id"),
"type": item.get("type"),
"description": item.get("description"),
"severity": item.get("severity"),
"source": item.get("source"),
"timestamp": item.get("timestamp")
}
normalized_data.append(normalized_item)
return normalized_data
def integrate_with_misp(self, misp_url, misp_key):
headers = {"Authorization": f"Bearer {misp_key}"}
response = requests.get(misp_url, headers=headers)
if response.status_code == 200:
self.threat_data.append(response.json())
else:
print(f"Failed to integrate with MISP: {response.status_code}")
def integrate_with_opencti(self, opencti_url, opencti_key):
headers = {"Authorization": f"Bearer {opencti_key}"}
response = requests.get(opencti_url, headers=headers)
if response.status_code == 200:
self.threat_data.append(response.json())
else:
print(f"Failed to integrate with OpenCTI: {response.status_code}")
def get_threat_data(self):
return self.threat_data
def clear_threat_data(self):
self.threat_data = []
|