fix large entity
This commit is contained in:
@@ -14,7 +14,6 @@ from utils.helpers import _is_valid_ip, _is_valid_domain
|
||||
from providers.crtsh_provider import CrtShProvider
|
||||
from providers.dns_provider import DNSProvider
|
||||
from providers.shodan_provider import ShodanProvider
|
||||
from providers.virustotal_provider import VirusTotalProvider
|
||||
|
||||
|
||||
class ScanStatus:
|
||||
@@ -66,8 +65,7 @@ class Scanner:
|
||||
self.provider_eligibility = {
|
||||
'dns': {'domains': True, 'ips': True},
|
||||
'crtsh': {'domains': True, 'ips': False},
|
||||
'shodan': {'domains': True, 'ips': True},
|
||||
'virustotal': {'domains': True, 'ips': True}
|
||||
'shodan': {'domains': True, 'ips': True}
|
||||
}
|
||||
|
||||
# Initialize providers with session config
|
||||
@@ -169,8 +167,7 @@ class Scanner:
|
||||
provider_classes = {
|
||||
'dns': DNSProvider,
|
||||
'crtsh': CrtShProvider,
|
||||
'shodan': ShodanProvider,
|
||||
'virustotal': VirusTotalProvider
|
||||
'shodan': ShodanProvider
|
||||
}
|
||||
|
||||
for provider_name, provider_class in provider_classes.items():
|
||||
@@ -757,18 +754,24 @@ class Scanner:
|
||||
|
||||
def _create_large_entity(self, source: str, provider_name: str, results: List, current_depth: int) -> None:
|
||||
"""Create a large entity node for forensic tracking."""
|
||||
entity_id = f"large_entity_{provider_name}_{hash(source) & 0x7FFFFFFF}"
|
||||
entity_id = f"Large Entity: {provider_name}"
|
||||
|
||||
# Extract targets from results
|
||||
targets = [rel[1] for rel in results if len(rel) > 1]
|
||||
|
||||
# Determine node type
|
||||
targets = []
|
||||
node_type = 'unknown'
|
||||
if targets:
|
||||
if _is_valid_domain(targets[0]):
|
||||
node_type = 'domain'
|
||||
elif _is_valid_ip(targets[0]):
|
||||
node_type = 'ip'
|
||||
|
||||
for rel in results:
|
||||
if len(rel) > 1:
|
||||
target = rel[1]
|
||||
targets.append(target)
|
||||
|
||||
# Determine node type and add node to graph
|
||||
if _is_valid_domain(target):
|
||||
node_type = 'domain'
|
||||
self.graph.add_node(target, NodeType.DOMAIN)
|
||||
elif _is_valid_ip(target):
|
||||
node_type = 'ip'
|
||||
self.graph.add_node(target, NodeType.IP)
|
||||
|
||||
# Create large entity metadata
|
||||
metadata = {
|
||||
|
||||
@@ -17,8 +17,7 @@ class SessionConfig:
|
||||
"""Initialize session config with global defaults."""
|
||||
# Copy all attributes from global config
|
||||
self.api_keys: Dict[str, Optional[str]] = {
|
||||
'shodan': None,
|
||||
'virustotal': None
|
||||
'shodan': None
|
||||
}
|
||||
|
||||
# Default settings (copied from global config)
|
||||
@@ -30,7 +29,6 @@ class SessionConfig:
|
||||
# Rate limiting settings (per session)
|
||||
self.rate_limits = {
|
||||
'crtsh': 60,
|
||||
'virustotal': 4,
|
||||
'shodan': 60,
|
||||
'dns': 100
|
||||
}
|
||||
@@ -39,7 +37,6 @@ class SessionConfig:
|
||||
self.enabled_providers = {
|
||||
'crtsh': True,
|
||||
'dns': True,
|
||||
'virustotal': False,
|
||||
'shodan': False
|
||||
}
|
||||
|
||||
@@ -57,7 +54,7 @@ class SessionConfig:
|
||||
Set API key for a provider in this session.
|
||||
|
||||
Args:
|
||||
provider: Provider name (shodan, virustotal)
|
||||
provider: Provider name (shodan, etc)
|
||||
api_key: API key string
|
||||
|
||||
Returns:
|
||||
@@ -107,9 +104,6 @@ class SessionConfig:
|
||||
|
||||
def load_from_env(self):
|
||||
"""Load configuration from environment variables (only if not already set)."""
|
||||
if os.getenv('VIRUSTOTAL_API_KEY') and not self.api_keys['virustotal']:
|
||||
self.set_api_key('virustotal', os.getenv('VIRUSTOTAL_API_KEY'))
|
||||
|
||||
if os.getenv('SHODAN_API_KEY') and not self.api_keys['shodan']:
|
||||
self.set_api_key('shodan', os.getenv('SHODAN_API_KEY'))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user