Spaces:
Running
Running
| function normalizeUrl(url) { | |
| return url.trim() | |
| .replace(/^https?:\/\//i, '') | |
| .replace(/\/$/, '') | |
| .toLowerCase(); | |
| } | |
| async function checkPhishing(url) { | |
| const testUrl = normalizeUrl(url); | |
| return openPhishList.some(ph => normalizeUrl(ph) === testUrl); | |
| } | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
| <title>Stella Barbarella SOC Analyst & Cybersecurity Portfolio</title> | |
| <meta name="description" content="Cybersecurity Portfolio of Stella Barbarella – SOC Analyst, Threat Hunter & Cybersecurity Enthusiast." /> | |
| <meta name="keywords" content="SOC Analyst, Cybersecurity, Threat Hunting, Phishing Detector, Cyber Threat Map, Charts" /> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" /> | |
| <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /> | |
| <link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster/dist/MarkerCluster.Default.css" /> | |
| <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> | |
| <script src="https://unpkg.com/leaflet.markercluster/dist/leaflet.markercluster.js"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/particles.js@2.0.0/particles.min.js"></script> | |
| <style> | |
| .cyber-gradient { | |
| background: linear-gradient(135deg, #101820 0%, #0a1220 50%, #0a0a2a 100%); | |
| } | |
| .cyber-border { | |
| border-color: #00ffee; | |
| } | |
| .cyber-shadow { | |
| box-shadow: 0 0 15px rgba(0, 255, 238, 0.3); | |
| } | |
| .cyber-text { | |
| color: #00ffee; | |
| } | |
| .cyber-bg { | |
| background-color: rgba(10, 20, 30, 0.92); | |
| } | |
| .cyber-button { | |
| transition: all 0.3s ease; | |
| } | |
| .cyber-button:hover { | |
| background: rgba(0, 255, 255, 0.1); | |
| color: #00ffee; | |
| box-shadow: 0 0 10px #00ffee; | |
| } | |
| .leaflet-container { | |
| background: #101820 ; | |
| } | |
| .log-output { | |
| font-family: 'Courier New', monospace; | |
| } | |
| #particles-js { | |
| position: fixed; | |
| width: 100%; | |
| height: 100%; | |
| z-index: -1; | |
| top: 0; | |
| left: 0; | |
| } | |
| .language-selector { | |
| position: fixed; | |
| top: 20px; | |
| right: 20px; | |
| z-index: 1000; | |
| } | |
| .threat-map-iframe { | |
| border: 1px solid #00ffee; | |
| border-radius: 8px; | |
| } | |
| </style> | |
| </head> | |
| <body class="cyber-gradient text-gray-100 min-h-screen"> | |
| <div id="particles-js"></div> | |
| <!-- Language Selector --> | |
| <div class="language-selector"> | |
| <div class="flex space-x-2"> | |
| <button onclick="changeLanguage('en')" class="px-3 py-1 bg-gray-800 hover:bg-gray-700 rounded-md cyber-button">EN</button> | |
| <button onclick="changeLanguage('bg')" class="px-3 py-1 bg-gray-800 hover:bg-gray-700 rounded-md cyber-button">BG</button> | |
| <button onclick="changeLanguage('fr')" class="px-3 py-1 bg-gray-800 hover:bg-gray-700 rounded-md cyber-button">FR</button> | |
| </div> | |
| </div> | |
| <header class="bg-black bg-opacity-85 pb-0 border-b-2 cyber-border"> | |
| <nav class="container mx-auto px-4 py-4"> | |
| <ul class="flex flex-wrap justify-center gap-2 mb-2"> | |
| <li><a href="#about" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.about">About Me</a></li> | |
| <li><a href="#projects" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.projects">Projects</a></li> | |
| <li><a href="#chart" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.charts">Charts</a></li> | |
| <li><a href="#attack-sim" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.attackSim">AttackSim</a></li> | |
| <li><a href="#cybersec-chatbot" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.chatbot">🤖 Open AI Chatbot</a></li> | |
| <li><a href="#map-section" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.liveMap">Live Map</a></li> | |
| <li><a href="#testimonials" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.testimonials">Testimonials</a></li> | |
| <li><a href="#contact" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.contact">Contact</a></li> | |
| </ul> | |
| <ul class="flex flex-wrap justify-center gap-2 mt-2"> | |
| <li> | |
| <a class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" href="penetration_test_report_acme_en.pdf" target="_blank" rel="noopener" download> | |
| <span data-i18n="nav.report">📄 Report (PDF)</span> | |
| </a> | |
| </li> | |
| <li> | |
| <a href="presentation.html" target="_blank" rel="noopener" class="px-6 py-3 cyber-bg rounded-lg cyber-button inline-block" data-i18n="nav.presentation"> | |
| 📊 View Pentest Presentation | |
| </a> | |
| </li> | |
| </ul> | |
| <div class="text-center my-6"> | |
| <img src="images/logo.png" alt="Stella Barbarella Logo" class="mx-auto h-24" /> | |
| </div> | |
| </nav> | |
| </header> | |
| <main class="container mx-auto px-4 py-8"> | |
| <!-- About Section --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="about"> | |
| <h1 class="text-3xl font-bold cyber-text mb-2">Stella Barbarella</h1> | |
| <p class="text-xl" data-i18n="about.subtitle">SOC Analyst | Cybersecurity Enthusiast | Threat Hunter</p> | |
| <div class="mt-4" data-i18n="about.description"> | |
| <p>Cybersecurity professional with expertise in threat detection, incident response, and security operations.</p> | |
| <p class="mt-2">Specialized in analyzing security events, identifying vulnerabilities, and implementing protective measures.</p> | |
| </div> | |
| </section> | |
| <!-- Projects Section --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="projects"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="projects.title">Projects</h2> | |
| <ul class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"> | |
| <li><a href="cyber-threat-map.html" class="block px-6 py-4 cyber-bg rounded-lg cyber-button text-center" data-i18n="projects.threatMap">🔍 Cyber Threat Map</a></li> | |
| <li><a href="threat-hunting.html" class="block px-6 py-4 cyber-bg rounded-lg cyber-button text-center" data-i18n="projects.threatHunting">🧠 Threat Hunting</a></li> | |
| <li><a href="#checkpoint-map" class="block px-6 py-4 cyber-bg rounded-lg cyber-button text-center" data-i18n="projects.threatLive">🌐 Threat Live</a></li> | |
| <li><a href="Stella_Barbarella_CV.odt" download class="block px-6 py-4 cyber-bg rounded-lg cyber-button text-center" data-i18n="projects.myCV">📄 My CV</a></li> | |
| </ul> | |
| </section> | |
| <!-- Phishing Checker --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="phishing-checker"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="phishing.title">Phishing URL Checker</h2> | |
| <form id="phishing-form" class="space-y-4"> | |
| <label for="url" class="block" data-i18n="phishing.label">Enter URL to check:</label> | |
| <div class="flex flex-col md:flex-row gap-2"> | |
| <input type="text" id="url" placeholder="https://example.com" required | |
| class="flex-grow px-4 py-2 bg-gray-800 border border-gray-700 rounded-lg focus:outline-none focus:ring-2 focus:ring-cyan-500" /> | |
| <button type="submit" class="px-6 py-2 bg-cyan-600 hover:bg-cyan-700 rounded-lg cyber-button" data-i18n="phishing.button"> | |
| Check | |
| </button> | |
| </div> | |
| </form> | |
| <div id="phishing-result" class="mt-4 p-4 rounded-lg hidden"></div> | |
| </section> | |
| <!-- Pentest Reports --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="pentest-reports"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="pentest.title">Pentest Reports</h2> | |
| <p class="mb-4" data-i18n="pentest.intro"> | |
| Explore real-world pentest deliverables from <strong>Stella Barbarella</strong>. | |
| </p> | |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> | |
| <div class="p-4 bg-gray-800 rounded-lg"> | |
| <h3 class="text-lg font-semibold cyber-text" data-i18n="pentest.report1.title">ACME Corporation Security Assessment</h3> | |
| <p class="mt-2 text-sm" data-i18n="pentest.report1.description">Comprehensive penetration test report covering web application and network security.</p> | |
| <a href="#" class="inline-block mt-3 px-4 py-2 bg-cyan-600 hover:bg-cyan-700 rounded cyber-button text-sm" data-i18n="pentest.download"> | |
| Download Report | |
| </a> | |
| </div> | |
| <div class="p-4 bg-gray-800 rounded-lg"> | |
| <h3 class="text-lg font-semibold cyber-text" data-i18n="pentest.report2.title">Financial Institution Red Team Exercise</h3> | |
| <p class="mt-2 text-sm" data-i18n="pentest.report2.description">Simulated attack scenario with detailed findings and remediation recommendations.</p> | |
| <a href="#" class="inline-block mt-3 px-4 py-2 bg-cyan-600 hover:bg-cyan-700 rounded cyber-button text-sm" data-i18n="pentest.download"> | |
| Download Report | |
| </a> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Log Analyzer --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="log-analyzer"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="logs.title">Live Log Analyzer</h2> | |
| <button id="toggle-logs" class="mb-4 px-4 py-2 bg-gray-800 hover:bg-gray-700 rounded-lg cyber-button" data-i18n="logs.toggle"> | |
| ⏸ Pause Logs | |
| </button> | |
| <pre id="log-output" class="log-output p-4 bg-black rounded-lg overflow-auto h-64"></pre> | |
| </section> | |
| <!-- Chatbot --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="cybersec-chatbot"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="chatbot.title">CyberSec AI Chat 🤖</h2> | |
| <div class="bg-gray-800 p-4 rounded-lg"> | |
| <p class="mb-4" data-i18n="chatbot.description">Ask our AI assistant about cybersecurity topics, threats, and best practices.</p> | |
| <iframe src="https://stellababy2004-cyber-chat.hf.space" frameborder="0" width="100%" height="600" class="rounded-lg"></iframe> | |
| <div id="chatbot-fallback" class="hidden mt-4 p-4 bg-red-900 rounded-lg"> | |
| <p data-i18n="chatbot.fallback">The chatbot is currently unavailable. Please try again later.</p> | |
| <a href="https://chat.openai.com/" target="_blank" class="inline-block mt-2 px-4 py-2 bg-cyan-600 hover:bg-cyan-700 rounded cyber-button" data-i18n="chatbot.alternative"> | |
| Try Alternative Chatbot | |
| </a> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Attack Simulation --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="attack-sim"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="attack.title">Attack Simulation Lab</h2> | |
| <p class="mb-4" data-i18n="attack.description">Select an attack type to simulate:</p> | |
| <div id="attack-buttons" class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6"> | |
| <button type="button" class="px-4 py-3 cyber-bg rounded-lg cyber-button" data-attack="phishing" data-i18n="attack.phishing">Phishing</button> | |
| <button type="button" class="px-4 py-3 cyber-bg rounded-lg cyber-button" data-attack="brute-force" data-i18n="attack.bruteForce">Brute Force</button> | |
| <button type="button" class="px-4 py-3 cyber-bg rounded-lg cyber-button" data-attack="malware" data-i18n="attack.malware">Malware</button> | |
| <button type="button" class="px-4 py-3 cyber-bg rounded-lg cyber-button" data-attack="ddos" data-i18n="attack.ddos">DDoS</button> | |
| </div> | |
| <div id="attack-result" class="p-4 bg-gray-800 rounded-lg hidden"></div> | |
| </section> | |
| <!-- Testimonials --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="testimonials"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="testimonials.title">Testimonials</h2> | |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-6"> | |
| <div class="p-6 bg-gray-800 rounded-lg"> | |
| <blockquote> | |
| <p class="italic" data-i18n="testimonials.quote1">"Stella's attention to detail and analytical skills are unmatched!"</p> | |
| <footer class="mt-4 font-semibold cyber-text">- <span data-i18n="testimonials.author1">John Doe, Cybersecurity Expert</span></footer> | |
| </blockquote> | |
| </div> | |
| <div class="p-6 bg-gray-800 rounded-lg"> | |
| <blockquote> | |
| <p class="italic" data-i18n="testimonials.quote2">"Her passion for cybersecurity is evident in her work."</p> | |
| <footer class="mt-4 font-semibold cyber-text">- <span data-i18n="testimonials.author2">Jane Smith, SOC Manager</span></footer> | |
| </blockquote> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Checkpoint Map --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="checkpoint-map"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="checkpoint.title">Live Threat Map (Check Point)</h2> | |
| <div class="aspect-w-16 aspect-h-9"> | |
| <iframe src="https://threatmap.checkpoint.com/" title="Live Threat Map" class="threat-map-iframe w-full h-96"></iframe> | |
| </div> | |
| </section> | |
| <!-- Chart Section --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="chart"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="chart.title">Cyber Threat Analysis</h2> | |
| <div class="chart-container"> | |
| <canvas id="threatChart" height="200"></canvas> | |
| </div> | |
| </section> | |
| <!-- Map Section --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8 mb-8" id="map-section"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="map.title">Global Threat Locations</h2> | |
| <div id="map" class="w-full h-96 rounded-lg border border-cyan-500"></div> | |
| <button id="clear-map" class="mt-4 px-4 py-2 bg-gray-800 hover:bg-gray-700 rounded-lg cyber-button" data-i18n="map.clear"> | |
| 🧹 Clear Map | |
| </button> | |
| </section> | |
| <!-- Contact Section --> | |
| <section class="cyber-bg rounded-xl cyber-shadow p-8" id="contact"> | |
| <h2 class="text-2xl font-bold cyber-text mb-4" data-i18n="contact.title">Contact Me</h2> | |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-6"> | |
| <div> | |
| <p data-i18n="contact.email">Email: <a href="mailto:stiliana.stoyanova@orange.fr" class="text-cyan-400 hover:text-cyan-300">stiliana.stoyanova@orange.fr</a></p> | |
| <p class="mt-2" data-i18n="contact.linkedin">LinkedIn: <a href="#" class="text-cyan-400 hover:text-cyan-300" target="_blank">linkedin.com/in/stella-barbarella</a></p> | |
| </div> | |
| <div> | |
| <p data-i18n="contact.availability">Available for consulting and freelance projects.</p> | |
| <p class="mt-2" data-i18n="contact.response">Response time: typically within 24 hours.</p> | |
| </div> | |
| </div> | |
| </section> | |
| </main> | |
| <footer class="bg-black bg-opacity-70 py-6 mt-12"> | |
| <div class="container mx-auto px-4 text-center"> | |
| <p data-i18n="footer.copyright">© 2023 Stella Barbarella. All rights reserved.</p> | |
| <div class="flex justify-center space-x-4 mt-4"> | |
| <a href="#" class="text-gray-400 hover:text-cyan-400"><i class="fab fa-github fa-lg"></i></a> | |
| <a href="#" class="text-gray-400 hover:text-cyan-400"><i class="fab fa-linkedin fa-lg"></i></a> | |
| <a href="#" class="text-gray-400 hover:text-cyan-400"><i class="fab fa-twitter fa-lg"></i></a> | |
| </div> | |
| </div> | |
| </footer> | |
| <script> | |
| // Language support | |
| const translations = { | |
| en: { | |
| "nav.about": "About Me", | |
| "nav.projects": "Projects", | |
| "nav.charts": "Charts", | |
| "nav.attackSim": "AttackSim", | |
| "nav.chatbot": "🤖 Open AI Chatbot", | |
| "nav.liveMap": "Live Map", | |
| "nav.testimonials": "Testimonials", | |
| "nav.contact": "Contact", | |
| "nav.report": "📄 Report (PDF)", | |
| "nav.presentation": "📊 View Pentest Presentation", | |
| "about.subtitle": "SOC Analyst | Cybersecurity Enthusiast | Threat Hunter", | |
| "about.description": "<p>Cybersecurity professional with expertise in threat detection, incident response, and security operations.</p><p class='mt-2'>Specialized in analyzing security events, identifying vulnerabilities, and implementing protective measures.</p>", | |
| "projects.title": "Projects", | |
| "projects.threatMap": "🔍 Cyber Threat Map", | |
| "projects.threatHunting": "🧠 Threat Hunting", | |
| "projects.threatLive": "🌐 Threat Live", | |
| "projects.myCV": "📄 My CV", | |
| "phishing.title": "Phishing URL Checker", | |
| "phishing.label": "Enter URL to check:", | |
| "phishing.button": "Check", | |
| "pentest.title": "Pentest Reports", | |
| "pentest.intro": "Explore real-world pentest deliverables from <strong>Stella Barbarella</strong>.", | |
| "pentest.report1.title": "ACME Corporation Security Assessment", | |
| "pentest.report1.description": "Comprehensive penetration test report covering web application and network security.", | |
| "pentest.report2.title": "Financial Institution Red Team Exercise", | |
| "pentest.report2.description": "Simulated attack scenario with detailed findings and remediation recommendations.", | |
| "pentest.download": "Download Report", | |
| "logs.title": "Live Log Analyzer", | |
| "logs.toggle": "⏸ Pause Logs", | |
| "chatbot.title": "CyberSec AI Chat 🤖", | |
| "chatbot.description": "Ask our AI assistant about cybersecurity topics, threats, and best practices.", | |
| "chatbot.fallback": "The chatbot is currently unavailable. Please try again later.", | |
| "chatbot.alternative": "Try Alternative Chatbot", | |
| "attack.title": "Attack Simulation Lab", | |
| "attack.description": "Select an attack type to simulate:", | |
| "attack.phishing": "Phishing", | |
| "attack.bruteForce": "Brute Force", | |
| "attack.malware": "Malware", | |
| "attack.ddos": "DDoS", | |
| "testimonials.title": "Testimonials", | |
| "testimonials.quote1": "\"Stella's attention to detail and analytical skills are unmatched!\"", | |
| "testimonials.author1": "John Doe, Cybersecurity Expert", | |
| "testimonials.quote2": "\"Her passion for cybersecurity is evident in her work.\"", | |
| "testimonials.author2": "Jane Smith, SOC Manager", | |
| "checkpoint.title": "Live Threat Map (Check Point)", | |
| "chart.title": "Cyber Threat Analysis", | |
| "map.title": "Global Threat Locations", | |
| "map.clear": "🧹 Clear Map", | |
| "contact.title": "Contact Me", | |
| "contact.email": "Email:", | |
| "contact.linkedin": "LinkedIn:", | |
| "contact.availability": "Available for consulting and freelance projects.", | |
| "contact.response": "Response time: typically within 24 hours.", | |
| "footer.copyright": "© 2023 Stella Barbarella. All rights reserved." | |
| }, | |
| bg: { | |
| "nav.about": "За Мен", | |
| "nav.projects": "Проекти", | |
| "nav.charts": "Графики", | |
| "nav.attackSim": "Атака Симулатор", | |
| "nav.chatbot": "🤖 Отвори AI Чатбот", | |
| "nav.liveMap": "Жива Карта", | |
| "nav.testimonials": "Препоръки", | |
| "nav.contact": "Контакт", | |
| "nav.report": "📄 Доклад (PDF)", | |
| "nav.presentation": "📊 Виж Презентация", | |
| "about.subtitle": "SOC Аналитик | Киберсигурност Ентусиаст | Ловец на Заплахи", | |
| "about.description": "<p>Професионалист в киберсигурността с опит в откриване на заплахи, реагиране на инциденти и сигурностни операции.</p><p class='mt-2'>Специализирана в анализ на сигурностни събития, идентифициране на уязвимости и прилагане на защитни мерки.</p>", | |
| "projects.title": "Проекти", | |
| "projects.threatMap": "🔍 Карта на Киберзаплахи", | |
| "projects.threatHunting": "🧠 Търсене на Заплахи", | |
| "projects.threatLive": "🌐 Живи Заплахи", | |
| "projects.myCV": "📄 Моето CV", | |
| "phishing.title": "Проверка на URL за Фишинг", | |
| "phishing.label": "Въведете URL за проверка:", | |
| "phishing.button": "Провери", | |
| "pentest.title": "Доклади за Пенетрационни Тестове", | |
| "pentest.intro": "Разгледайте реални доклади от пенетрационни тестове на <strong>Stella Barbarella</strong>.", | |
| "pentest.report1.title": "Оценка на Сигурността на ACME Corporation", | |
| "pentest.report1.description": "Изчерпателен доклад за пенетрационен тест, обхващащ уеб приложение и мрежова сигурност.", | |
| "pentest.report2.title": "Упражнение на Червен Екип за Финансова Институция", | |
| "pentest.report2.description": "Симулиран сценарий на атака с подробни намерения и препоръки за подобрение.", | |
| "pentest.download": "Изтегли Доклад", | |
| "logs.title": "Анализатор на Логове в Реално Време", | |
| "logs.toggle": "⏸ Спри Логовете", | |
| "chatbot.title": "Киберсигурностен AI Чат 🤖", | |
| "chatbot.description": "Питайте нашия AI асистент за теми, свързани с киберсигурност, заплахи и най-добри практики.", | |
| "chatbot.fallback": "Чатботът е временно недостъпен. Моля, опитайте по-късно.", | |
| "chatbot.alternative": "Опитайте Алтернативен Чатбот", | |
| "chatbot.fallback": "Чатботът е временно недостъпен. Моля, опитайте по-късно.", | |
| "chatbot.alternative": "Опитайте Алтернативен Чатбот", | |
| "attack.title": "Лаборатория за Симулация на Атаки", | |
| "attack.description": "Изберете тип атака за симулиране:", | |
| "attack.phishing": "Фишинг", | |
| "attack.bruteForce": "Груба Сила", | |
| "attack.malware": "Зловреден Софтуер", | |
| "attack.ddos": "DDoS", | |
| "testimonials.title": "Препоръки", | |
| "testimonials.quote1": "\"Вниманието към детайлите и аналитичните умения на Стела са безпрецедентни!\"", | |
| "testimonials.author1": "Джон Доу, Експерт по Киберсигурност", | |
| "testimonials.quote2": "\"Страстта й към киберсигурността се вижда в работата й.\"", | |
| "testimonials.author2": "Джейн Смит, Мениджър SOC", | |
| "checkpoint.title": "Жива Карта на Заплахи (Check Point)", | |
| "chart.title": "Анализ на Киберзаплахи", | |
| "map.title": "Глобални Локации на Заплахи", | |
| "map.clear": "🧹 Изчисти Картата", | |
| "contact.title": "Връзка с Мен", | |
| "contact.email": "Имейл:", | |
| "contact.linkedin": "LinkedIn:", | |
| "contact.availability": "Налична съм за консултации и фрийланс проекти.", | |
| "contact.response": "Време за отговор: обикновено в рамките на 24 часа.", | |
| "footer.copyright": "© 2023 Stella Barbarella. Всички права запазени." | |
| }, | |
| fr: { | |
| "nav.about": "À Propos", | |
| "nav.projects": "Projets", | |
| "nav.charts": "Graphiques", | |
| "nav.attackSim": "Simulation d'Attaque", | |
| "nav.chatbot": "🤖 Ouvrir le Chatbot IA", | |
| "nav.liveMap": "Carte en Direct", | |
| "nav.testimonials": "Témoignages", | |
| "nav.contact": "Contact", | |
| "nav.report": "📄 Rapport (PDF)", | |
| "nav.presentation": "📊 Voir la Présentation", | |
| "about.subtitle": "Analyste SOC | Passionnée de Cybersécurité | Chasseuse de Menaces", | |
| "about.description": "<p>Professionnelle en cybersécurité avec une expertise en détection de menaces, réponse aux incidents et opérations de sécurité.</p><p class='mt-2'>Spécialisée dans l'analyse des événements de sécurité, l'identification des vulnérabilités et la mise en œuvre de mesures de protection.</p>", | |
| "projects.title": "Projets", | |
| "projects.threatMap": "🔍 Carte des Cybermenaces", | |
| "projects.threatHunting": "🧠 Chasse aux Menaces", | |
| "projects.threatLive": "🌐 Menaces en Direct", | |
| "projects.myCV": "📄 Mon CV", | |
| "phishing.title": "Vérificateur d'URL de Hameçonnage", | |
| "phishing.label": "Entrez l'URL à vérifier:", | |
| "phishing.button": "Vérifier", | |
| "pentest.title": "Rapports de Tests d'Intrusion", | |
| "pentest.intro": "Découvrez des livrables réels de tests d'intrusion par <strong>Stella Barbarella</strong>.", | |
| "pentest.report1.title": "Évaluation de Sécurité d'ACME Corporation", | |
| "pentest.report1.description": "Rapport complet de test d'intrusion couvrant la sécurité des applications web et du réseau.", | |
| "pentest.report2.title": "Exercice d'Équipe Rouge pour une Institution Financière", | |
| "pentest.report2.description": "Scénario d'attaque simulé avec des conclusions détaillées et des recommandations de remédiation.", | |
| "pentest.download": "Télécharger le Rapport", | |
| "logs.title": "Analyseur de Journaux en Direct", | |
| "logs.toggle": "⏸ Pause Journaux", | |
| "chatbot.title": "Chat IA de Cybersécurité 🤖", | |
| "chatbot.description": "Posez des questions à notre assistant IA sur des sujets de cybersécurité, des menaces et des bonnes pratiques.", | |
| "chatbot.fallback": "Le chatbot est actuellement indisponible. Veuillez réessayer plus tard.", | |
| "chatbot.alternative": "Essayer un Chatbot Alternatif", | |
| "chatbot.fallback": "Le chatbot est actuellement indisponible. Veuillez réessayer plus tard.", | |
| "chatbot.alternative": "Essayer un Chatbot Alternatif", | |
| "attack.title": "Laboratoire de Simulation d'Attaque", | |
| "attack.description": "Sélectionnez un type d'attaque à simuler:", | |
| "attack.phishing": "Hameçonnage", | |
| "attack.bruteForce": "Force Brute", | |
| "attack.malware": "Logiciel Malveillant", | |
| "attack.ddos": "DDoS", | |
| "testimonials.title": "Témoignages", | |
| "testimonials.quote1": "\"L'attention aux détails et les compétences analytiques de Stella sont incomparables !\"", | |
| "testimonials.author1": "John Doe, Expert en Cybersécurité", | |
| "testimonials.quote2": "\"Sa passion pour la cybersécurité est évidente dans son travail.\"", | |
| "testimonials.author2": "Jane Smith, Responsable SOC", | |
| "checkpoint.title": "Carte des Menaces en Direct (Check Point)", | |
| "chart.title": "Analyse des Cybermenaces", | |
| "map.title": "Localisations Mondiales des Menaces", | |
| "map.clear": "🧹 Effacer la Carte", | |
| "contact.title": "Contactez-moi", | |
| "contact.email": "Email:", | |
| "contact.linkedin": "LinkedIn:", | |
| "contact.availability": "Disponible pour des projets de conseil et freelance.", | |
| "contact.response": "Temps de réponse: généralement sous 24 heures.", | |
| "footer.copyright": "© 2023 Stella Barbarella. Tous droits réservés." | |
| } | |
| }; | |
| let currentLanguage = 'en'; | |
| function changeLanguage(lang) { | |
| currentLanguage = lang; | |
| document.querySelectorAll('[data-i18n]').forEach(element => { | |
| const key = element.getAttribute('data-i18n'); | |
| if (translations[lang][key]) { | |
| if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') { | |
| element.placeholder = translations[lang][key]; | |
| } else { | |
| element.innerHTML = translations[lang][key]; | |
| } | |
| } | |
| }); | |
| } | |
| // Initialize with English | |
| changeLanguage('en'); | |
| // Map functionality | |
| document.addEventListener("DOMContentLoaded", function () { | |
| if (typeof L === "undefined") return; | |
| const map = L.map('map').setView([20, 0], 2); | |
| window.attackSimMap = map; | |
| window.globalMapMarkers = []; | |
| L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { | |
| attribution: '© OpenStreetMap contributors' | |
| }).addTo(map); | |
| // Add threat markers | |
| const threatCities = [ | |
| { name: "London", coords: [51.5074, -0.1278], type: "Phishing" }, | |
| { name: "New York", coords: [40.7128, -74.0060], type: "DDoS" }, | |
| { name: "Paris", coords: [48.8566, 2.3522], type: "Malware" }, | |
| { name: "Tokyo", coords: [35.6895, 139.6917], type: "Ransomware" }, | |
| { name: "Sofia", coords: [42.6977, 23.3219], type: "Brute Force" } | |
| ]; | |
| threatCities.forEach(city => { | |
| const marker = L.marker(city.coords) | |
| .addTo(map) | |
| .bindPopup( | |
| `<b>Threat detected in ${city.name}</b><br>Type: <span style="color:#00ffee">${city.type}</span>` | |
| ); | |
| window.globalMapMarkers.push(marker); | |
| }); | |
| document.getElementById('clear-map').addEventListener('click', function () { | |
| if (window.globalMapMarkers && Array.isArray(window.globalMapMarkers)) { | |
| window.globalMapMarkers.forEach(marker => { | |
| if (map.hasLayer(marker)) { | |
| map.removeLayer(marker); | |
| } | |
| }); | |
| window.globalMapMarkers = []; | |
| } | |
| }); | |
| }); | |
| // Log analyzer | |
| document.addEventListener("DOMContentLoaded", function () { | |
| const logOutput = document.getElementById('log-output'); | |
| const toggleBtn = document.getElementById('toggle-logs'); | |
| let paused = false; | |
| let logInterval; | |
| const logs = [ | |
| "[INFO] Connection from 192.168.1.10 accepted.", | |
| "[ALERT] Suspicious login attempt detected from 203.0.113.5.", | |
| "[WARNING] Multiple failed logins for user 'admin'.", | |
| "[INFO] Malware signature updated successfully.", | |
| "[CRITICAL] Ransomware activity detected on host 10.0.0.23.", | |
| "[INFO] Outbound traffic to 8.8.8.8 allowed.", | |
| "[ALERT] Phishing email detected and quarantined.", | |
| "[INFO] User 'stella' changed password.", | |
| "[WARNING] Unusual data transfer detected.", | |
| "[INFO] System scan completed. No threats found.", | |
| "[NOTICE] New device registered: 10.1.1.5.", | |
| "[DEBUG] Packet dropped due to invalid checksum.", | |
| "[ERROR] Failed to update antivirus definitions.", | |
| "[SUCCESS] Backup completed successfully.", | |
| "[FAIL] Backup failed: disk full.", | |
| "[INFO] User 'admin' logged out.", | |
| "[ALERT] Port scan detected from 185.23.44.12.", | |
| "[CRITICAL] Data exfiltration attempt blocked.", | |
| "[WARNING] High CPU usage detected on server01.", | |
| "[NOTICE] Scheduled maintenance started.", | |
| "[SUCCESS] Patch applied to all endpoints." | |
| ]; | |
| function addLog() { | |
| if (!paused) { | |
| const log = logs[Math.floor(Math.random() * logs.length)]; | |
| const now = new Date().toLocaleTimeString(); | |
| let color = "#00ffee"; | |
| if (log.includes("CRITICAL")) color = "#ff1744"; | |
| else if (log.includes("ALERT")) color = "#ffea00"; | |
| else if (log.includes("WARNING")) color = "#ff9100"; | |
| else if (log.includes("ERROR") || log.includes("FAIL")) color = "#ff1744"; | |
| else if (log.includes("SUCCESS")) color = "#00e676"; | |
| else if (log.includes("NOTICE")) color = "#00b0ff"; | |
| else if (log.includes("DEBUG")) color = "#bdbdbd"; | |
| else if (log.includes("INFO")) color = "#00ffee"; | |
| const span = document.createElement('span'); | |
| span.textContent = `[${now}] ${log}\n`; | |
| span.style.color = color; | |
| logOutput.appendChild(span); | |
| logOutput.scrollTop = logOutput.scrollHeight; | |
| } | |
| } | |
| function startLogs() { | |
| logInterval = setInterval(addLog, 1200); | |
| } | |
| function stopLogs() { | |
| clearInterval(logInterval); | |
| } | |
| if (logOutput && toggleBtn) { | |
| startLogs(); | |
| toggleBtn.addEventListener('click', function () { | |
| paused = !paused; | |
| if (paused) { | |
| stopLogs(); | |
| toggleBtn.innerHTML = currentLanguage === 'en' ? "▶ Resume Logs" : | |
| currentLanguage === 'bg' ? "▶ Продължи Логовете" : | |
| "▶ Reprendre les Journaux"; | |
| } else { | |
| startLogs(); | |
| toggleBtn.innerHTML = currentLanguage === 'en' ? "⏸ Pause Logs" : | |
| currentLanguage === 'bg' ? "⏸ Спри Логовете" : | |
| "⏸ Pause Journaux"; | |
| } | |
| }); | |
| } | |
| }); | |
| // Attack simulation | |
| document.addEventListener("DOMContentLoaded", function () { | |
| const buttons = document.querySelectorAll('#attack-buttons .button'); | |
| const result = document.getElementById('attack-result'); | |
| const logOutput = document.getElementById('log-output'); | |
| const attackMap = window.attackSimMap; | |
| const attackMarkers = window.globalMapMarkers || []; | |
| const attackDescriptions = { | |
| en: { | |
| phishing: "Simulation: A phishing email was sent to an employee. The SOC detects a suspicious link and blocks access.", | |
| "brute-force": "Simulation: Multiple failed login attempts detected. The system temporarily blocks the IP address.", | |
| malware: "Simulation: A malicious file was uploaded. The antivirus system isolates it and alerts the SOC team.", | |
| ddos: "Simulation: High traffic volume detected towards the server. DDoS protection limits attacking IPs." | |
| }, | |
| bg: { | |
| phishing: "Симулация: Изпратен е фишинг имейл до служител. SOC открива подозрителна връзка и блокира достъпа.", | |
| "brute-force": "Симулация: Открити са множество неуспешни опити за влизане. Системата временно блокира IP адреса.", | |
| malware: "Симулация: Качен е зловреден файл. Антивирусната система го изолира и сигнализира екипа на SOC.", | |
| ddos: "Симулация: Открит е голям обем трафик към сървъра. DDoS защитата ограничава атакуващите IP адреси." | |
| }, | |
| fr: { | |
| phishing: "Simulation: Un e-mail de phishing a été envoyé à un employé. Le SOC détecte un lien suspect et bloque l'accès.", | |
| "brute-force": "Simulation: Plusieurs tentatives de connexion infructueuses détectées. Le système bloque temporairement l'adresse IP.", | |
| malware: "Simulation: Un fichier malveillant a été téléchargé. Le système antivirus l'isole et alerte l'équipe SOC.", | |
| ddos: "Simulation: Volume de trafic élevé détecté vers le serveur. La protection DDoS limite les adresses IP attaquantes." | |
| } | |
| }; | |
| const attackLogs = { | |
| en: { | |
| phishing: "[ALERT] Phishing email detected and quarantined.", | |
| "brute-force": "[WARNING] Multiple failed logins for user 'admin'.", | |
| malware: "[CRITICAL] Malware detected and isolated.", | |
| ddos: "[ALERT] DDoS attack detected. Traffic filtered." | |
| }, | |
| bg: { | |
| phishing: "[ALERT] Фишинг имейл открит и изолиран.", | |
| "brute-force": "[WARNING] Множество неуспешни влизания за потребител 'admin'.", | |
| malware: "[CRITICAL] Зловреден софтуер открит и изолиран.", | |
| ddos: "[ALERT] DDoS атака открита. Трафикът е филтриран." | |
| }, | |
| fr: { | |
| phishing: "[ALERT] E-mail de phishing détecté et mis en quarantaine.", | |
| "brute-force": "[WARNING] Plusieurs échecs de connexion pour l'utilisateur 'admin'.", | |
| malware: "[CRITICAL] Logiciel malveillant détecté et isolé.", | |
| ddos: "[ALERT] Attaque DDoS détectée. Trafic filtré." | |
| } | |
| }; | |
| const attackLocations = { | |
| phishing: [51.5, -0.09], | |
| "brute-force": [40.7, -74.0], | |
| malware: [48.85, 2.35], | |
| ddos: [35.68, 139.76] | |
| }; | |
| const chartIndex = { | |
| phishing: 0, | |
| malware: 1, | |
| ddos: 3, | |
| "brute-force": 4 | |
| }; | |
| buttons.forEach(btn => { | |
| btn.addEventListener('click', function () { | |
| const type = btn.getAttribute('data-attack'); | |
| result.style.display = "block"; | |
| result.textContent = attackDescriptions[currentLanguage][type] || "No information for this attack type."; | |
| result.className = "p-4 bg-gray-800 rounded-lg"; | |
| if (attackLogs[currentLanguage][type]) { | |
| const now = new Date().toLocaleTimeString(); | |
| const span = document.createElement('span'); | |
| span.textContent = `[${now}] ${attackLogs[currentLanguage][type]}\n`; | |
| span.style.color = "#ffea00"; | |
| logOutput.appendChild(span); | |
| logOutput.scrollTop = logOutput.scrollHeight; | |
| } | |
| if (attackMap && attackLocations[type]) { | |
| const marker = L.marker(attackLocations[type]) | |
| .addTo(attackMap) | |
| .bindPopup(`${type.charAt(0).toUpperCase()}${type.slice(1)} attack`) | |
| .openPopup(); | |
| attackMarkers.push(marker); | |
| window.globalMapMarkers = attackMarkers; | |
| } | |
| if (window.threatChartInstance && chartIndex[type] !== undefined) { | |
| window.threatChartInstance.data.datasets[0].data[chartIndex[type]] += 1; | |
| window.threatChartInstance.update(); | |
| } | |
| }); | |
| }); | |
| }); | |
| // Chart initialization | |
| document.addEventListener("DOMContentLoaded", function () { | |
| const ctx = document.getElementById('threatChart').getContext('2d'); | |
| window.threatChartInstance = new Chart(ctx, { | |
| type: 'bar', | |
| data: { | |
| labels: ['Phishing', 'Malware', 'Ransomware', 'DDoS', 'Brute Force'], | |
| datasets: [{ | |
| label: 'Detected Threats', | |
| data: [12, 8, 4, 10, 6], | |
| backgroundColor: [ | |
| '#00ffeecc','#ff00ccbb','#ffaa00bb','#00ff88bb','#ffea00bb' | |
| ], | |
| borderColor: '#00ffee', | |
| borderWidth: 2 | |
| }] | |
| }, | |
| options: { | |
| plugins: { legend: { display: false } }, | |
| scales: { | |
| y: { beginAtZero: true, ticks: { color: '#00ffee' }, grid: { color: '#222' } }, | |
| x: { ticks: { color: '#00ffee' }, grid: { color: '#222' } } | |
| } | |
| } | |
| }); | |
| }); | |
| // Phishing checker | |
| let openPhishList = []; | |
| let phishingListLoaded = false; | |
| fetch('openphish.txt') | |
| .then(res => { | |
| if (!res.ok) throw new Error('List not found'); | |
| return res.text(); | |
| }) | |
| .then(text => { | |
| openPhishList = text.split('\n').map(u => u.trim()).filter(Boolean); | |
| phishingListLoaded = true; | |
| }) | |
| .catch(() => { | |
| phishingListLoaded = false; | |
| const r = document.getElementById('phishing-result'); | |
| r.textContent = currentLanguage === 'en' ? '⚠️ Unable to load phishing list. Please try again later.' : | |
| currentLanguage === 'bg' ? '⚠️ Неуспешно зареждане на списъка с фишинг. Моля, опитайте по-късно.' : | |
| '⚠️ Impossible de charger la liste de phishing. Veuillez réessayer plus tard.'; | |
| r.style.color = 'orange'; | |
| document.getElementById('url').disabled = true; | |
| document.querySelector('#phishing-form button').disabled = true; | |
| }); | |
| function normalizeUrl(url) { | |
| return url.trim() | |
| .replace(/^https?:\/\//i, '') | |
| .replace(/\/$/, '') | |
| .toLowerCase(); | |
| } | |
| async function checkPhishing(url) { | |
| const testUrl = normalizeUrl(url); | |
| return openPhishList.some(ph => normalizeUrl(ph) === testUrl); | |
| } | |
| document.getElementById('phishing-form').addEventListener('submit', async function(e) { | |
| e.preventDefault(); | |
| if (!phishingListLoaded) return; | |
| const url = document.getElementById('url').value; | |
| const resultDiv = document.getElementById('phishing-result'); | |
| resultDiv.className = "p-4 rounded-lg"; | |
| resultDiv.textContent = currentLanguage === 'en' ? 'Checking…' : | |
| currentLanguage === 'bg' ? 'Проверка…' : | |
| 'Vérification…'; | |
| const isPhish = await checkPhishing(url); | |
| if (isPhish) { | |
| resultDiv.textContent = currentLanguage === 'en' ? '⚠️ Dangerous/phishing site!' : | |
| currentLanguage === 'bg' ? '⚠️ Опасен/фишинг сайт!' : | |
| '⚠️ Site de phishing dangereux !'; | |
| resultDiv.className = "p-4 bg-red-900 rounded-lg"; | |
| } else { | |
| resultDiv.textContent = currentLanguage === 'en' ? '✅ The site appears safe.' : | |
| currentLanguage === 'bg' ? '✅ Сайтът изглежда безопасен.' : | |
| '✅ Le site semble sûr.'; | |
| resultDiv.className = "p-4 bg-green-900 rounded-lg"; | |
| } | |
| resultDiv.style.display = "block"; | |
| }); | |
| // Particles.js | |
| document.addEventListener("DOMContentLoaded", function () { | |
| if (typeof particlesJS !== "undefined") { | |
| particlesJS('particles-js', { | |
| "particles": { | |
| "number": { | |
| "value": 80, | |
| "density": { | |
| "enable": true, | |
| "value_area": 800 | |
| } | |
| }, | |
| "color": { | |
| "value": "#00ffee" | |
| }, | |
| "shape": { | |
| "type": "circle", | |
| "stroke": { | |
| "width": 0, | |
| "color": "#000000" | |
| }, | |
| "polygon": { | |
| "nb_sides": 5 | |
| } | |
| }, | |
| "opacity": { | |
| "value": 0.5, | |
| "random": false, | |
| "anim": { | |
| "enable": false, | |
| "speed": 1, | |
| "opacity_min": 0.1, | |
| "sync": false | |
| } | |
| }, | |
| "size": { | |
| "value": 3, | |
| "random": true, | |
| "anim": { | |
| "enable": false, | |
| "speed": 40, | |
| "size_min": 0.1, | |
| "sync": false | |
| } | |
| }, | |
| "line_linked": { | |
| "enable": true, | |
| "distance": 150, | |
| "color": "#00ffee", | |
| "opacity": 0.4, | |
| "width": 1 | |
| }, | |
| "move": { | |
| "enable": true, | |
| "speed": 2, | |
| "direction": "none", | |
| "random": false, | |
| "straight": false, | |
| "out_mode": "out", | |
| "bounce": false, | |
| "attract": { | |
| "enable": false, | |
| "rotateX": 600, | |
| "rotateY": 1200 | |
| } | |
| } | |
| }, | |
| "interactivity": { | |
| "detect_on": "canvas", | |
| "events": { | |
| "onhover": { | |
| "enable": true, | |
| "mode": "grab" | |
| }, | |
| "onclick": { | |
| "enable": true, | |
| "mode": "push" | |
| }, | |
| "resize": true | |
| }, | |
| "modes": { | |
| "grab": { | |
| "distance": 140, | |
| "line_linked": { | |
| "opacity": 1 | |
| } | |
| }, | |
| "bubble": { | |
| "distance": 400, | |
| "size": 40, | |
| "duration": 2, | |
| "opacity": 8, | |
| "speed": 3 | |
| }, | |
| "repulse": { | |
| "distance": 200, | |
| "duration": 0.4 | |
| }, | |
| "push": { | |
| "particles_nb": 4 | |
| }, | |
| "remove": { | |
| "particles_nb": 2 | |
| } | |
| } | |
| }, | |
| "retina_detect": true | |
| }, function() { | |
| console.log('Particles.js initialized'); | |
| }); | |
| } | |
| }); | |
| </script> | |
| <script> | |
| // Check if chatbot iframe loaded successfully | |
| function checkChatbotStatus() { | |
| const chatbotIframe = document.querySelector('#cybersec-chatbot iframe'); | |
| const fallback = document.getElementById('chatbot-fallback'); | |
| // First check if iframe exists | |
| if (!chatbotIframe) { | |
| fallback.classList.remove('hidden'); | |
| return; | |
| } | |
| // Check if iframe loaded successfully | |
| chatbotIframe.onload = function() { | |
| fallback.classList.add('hidden'); | |
| }; | |
| chatbotIframe.onerror = function() { | |
| fallback.classList.remove('hidden'); | |
| }; | |
| // Fallback check after 5 seconds | |
| setTimeout(function() { | |
| try { | |
| // Try to access iframe content (will throw error if cross-origin) | |
| const iframeDoc = chatbotIframe.contentDocument || chatbotIframe.contentWindow.document; | |
| // If we got here, iframe loaded | |
| fallback.classList.add('hidden'); | |
| } catch (e) { | |
| // If error accessing, show fallback | |
| fallback.classList.remove('hidden'); | |
| } | |
| }, 5000); | |
| } | |
| // Initialize when page loads | |
| document.addEventListener('DOMContentLoaded', checkChatbotStatus); | |
| // Re-check when language changes | |
| function changeLanguage(lang) { | |
| currentLanguage = lang; | |
| document.querySelectorAll('[data-i18n]').forEach(element => { | |
| const key = element.getAttribute('data-i18n'); | |
| if (translations[lang][key]) { | |
| if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') { | |
| element.placeholder = translations[lang][key]; | |
| } else { | |
| element.innerHTML = translations[lang][key]; | |
| } | |
| } | |
| }); | |
| checkChatbotStatus(); // Re-check chatbot status on language change | |
| } | |
| </script> | |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=stellababy2004/cyber" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
| </html> |