import gradio as gr import requests from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings from llama_index.embeddings.huggingface import HuggingFaceEmbedding import os import re from collections import defaultdict from datetime import datetime, timedelta import json import time import logging from retrying import retry # Set up logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) # Suppress Hugging Face symlink warning os.environ["HF_HUB_DISABLE_SYMLINKS_WARNING"] = "1" # Modal Mistral-7B API endpoint MODAL_API = "https://rithvickkumar27--mistral-7b-api-analyze.modal.run" # Configure LlamaIndex Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5") # Initialize LlamaIndex def init_llama_index(): try: documents = SimpleDirectoryReader("corpus", filename_as_id=True).load_data() logger.info(f"Loaded {len(documents)} corpus documents") return VectorStoreIndex.from_documents(documents) except Exception as e: logger.error(f"Error loading corpus: {e}") return None index = init_llama_index() query_engine = index.as_retriever() if index else None # Retry decorator for Mistral-7B API @retry(stop_max_attempt_number=3, wait_fixed=2000) def call_mistral_llm(prompt): logger.debug(f"Sending prompt to Mistral-7B API: {prompt[:100]}...") try: response = requests.post(MODAL_API, json={"prompt": prompt}, timeout=120) logger.debug(f"Mistral-7B API response status: {response.status_code}") if response.status_code == 200: data = response.json() if "error" in data: logger.error(f"Mistral API error: {data['error']}") return f"Modal API error: {data['error']}" response_text = data.get("response", "LLM error: No response") logger.info("Mistral-7B response received successfully") return response_text else: logger.error(f"Mistral API error: Status {response.status_code}") return f"Modal API error: Status {response.status_code}" except requests.exceptions.RequestException as e: logger.error(f"Mistral API request failed: {e}") raise # Enhanced DSATP log parsing def dsatp_parse_log(text: str) -> dict: log = text.lower() lines = log.split('\n') detected_threats = [] # Comprehensive threat dictionary threats = { "compromised": {"classification": "System Compromise", "severity": "Critical", "mitigation": "Isolate process, run port scan, reset credentials"}, "unauthorized": {"classification": "Unauthorized Access", "severity": "High", "mitigation": "Quarantine MAC address, review access logs"}, "high cpu": {"classification": "Resource Abuse", "severity": "Medium", "mitigation": "Check for crypto-miner or DoS, limit resource usage"}, "inbound traffic": {"classification": "Network Intrusion", "severity": "Medium", "mitigation": "Block closed ports, enable firewall rules"}, "firmware mismatch": {"classification": "Firmware Vulnerability", "severity": "High", "mitigation": "Validate OTA or rollback, update firmware"}, "ddos": {"classification": "DDoS Attack", "severity": "Critical", "mitigation": "Rate-limit traffic, enable DDoS protection"}, "phishing": {"classification": "Phishing Attempt", "severity": "High", "mitigation": "Block malicious URLs, educate users"}, "sql injection": {"classification": "SQL Injection", "severity": "Critical", "mitigation": "Sanitize inputs, patch database"}, "xss": {"classification": "Cross-Site Scripting", "severity": "High", "mitigation": "Escape HTML, update web apps"}, "privilege escalation": {"classification": "Privilege Escalation", "severity": "Critical", "mitigation": "Patch vulnerabilities, restrict permissions"}, "trojan": {"classification": "Malware Detected", "severity": "Critical", "mitigation": "Quarantine file, run antivirus"}, "ransomware": {"classification": "Malware Detected", "severity": "Critical", "mitigation": "Quarantine file, run antivirus, restore from backup"}, "heuristic.behavior.suspicious": {"classification": "Suspicious Activity", "severity": "High", "mitigation": "Monitor process, run memory scan"}, "malicious": {"classification": "Malware Detected", "severity": "Critical", "mitigation": "Quarantine file, run antivirus, block malicious URLs"}, "ufw block": {"classification": "Network Intrusion", "severity": "High", "mitigation": "Investigate blocked IP, strengthen firewall rules"}, "sudo": {"classification": "Privilege Escalation", "severity": "High", "mitigation": "Audit user permissions, review sudo logs"}, "reverse ssh": {"classification": "Persistence Mechanism", "severity": "Critical", "mitigation": "Disable unauthorized SSH services, inspect network connections"}, "failed password": {"classification": "Brute-Force Attempt", "severity": "Critical", "mitigation": "Block suspicious IPs, disable password-based SSH, enable fail2ban"}, "invalid user": {"classification": "Brute-Force Attempt", "severity": "Critical", "mitigation": "Block suspicious IPs, disable password-based SSH, enable fail2ban"} } # Advanced threat detection failed_attempts = defaultdict(list) suspicious_terms = [ "failed password", "invalid user", "error", "denied", "malformed packet", "flood", "syn flood", "http flood", "suspicious url", "script tag", "sqlmap", "union select", "escalation attempt", "rootkit", "yara_match", "wget", "curl", "bash", "sh", "payload", "ufw", "sudo", "root", "ssh", "cron", "systemd" ] ip_pattern = r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b' timestamp_pattern = r'\w{3}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2}' url_pattern = r'(https?://[^\s]+)' sql_pattern = r'(union\s+select|select\s+.*\s+from|drop\s+table)' xss_pattern = r'(