{"id":4531,"date":"2025-11-19T04:32:15","date_gmt":"2025-11-19T04:32:15","guid":{"rendered":"https:\/\/hackernews.ae\/ar\/?page_id=4531"},"modified":"2025-11-19T04:43:14","modified_gmt":"2025-11-19T04:43:14","slug":"hacker-news-monitor","status":"publish","type":"page","link":"https:\/\/hackernews.ae\/ar\/hacker-news-monitor\/","title":{"rendered":"\u0627\u0644\u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u0623\u0645\u0646\u064a"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4531\" class=\"elementor elementor-4531\">\n\t\t\t\t\t\t<section class=\"has-el-gap el-gap-default elementor-section elementor-top-section elementor-element elementor-element-74f9f5c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"74f9f5c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bee7883\" data-id=\"bee7883\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0bfb248 elementor-widget elementor-widget-html\" data-id=\"0bfb248\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"ar\" dir=\"rtl\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>\u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a\u0629 | \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0633\u062a\u062e\u0628\u0627\u0631\u064a\u0629 \u0641\u064a \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a<\/title>\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.0\/dist\/chart.umd.min.js\"><\/script>\r\n    <style>\r\n\r\n        .monitor-container {\r\n            max-width: 1400px;\r\n            margin: 0 auto;\r\n            padding: 40px 20px;\r\n        }\r\n\r\n        .monitor-header {\r\n            text-align: center;\r\n            margin-bottom: 50px;\r\n        }\r\n\r\n        .monitor-header h1 {\r\n            font-size: 2.5rem;\r\n            color: #1a1f36;\r\n            margin-bottom: 10px;\r\n            font-weight: 700;\r\n        }\r\n\r\n        .monitor-header p {\r\n            color: #6c757d;\r\n            font-size: 1.1rem;\r\n        }\r\n\r\n        .live-indicator {\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n            background: #1a1f36;\r\n            color: white;\r\n            padding: 8px 16px;\r\n            border-radius: 20px;\r\n            font-size: 0.9rem;\r\n            margin-top: 15px;\r\n        }\r\n\r\n        .live-dot {\r\n            width: 8px;\r\n            height: 8px;\r\n            background: #ff6b35;\r\n            border-radius: 50%;\r\n            animation: pulse 2s infinite;\r\n        }\r\n\r\n        @keyframes pulse {\r\n            0%, 100% { opacity: 1; }\r\n            50% { opacity: 0.3; }\r\n        }\r\n\r\n        .info-banner {\r\n            background: #e6f7ff;\r\n            border: 1px solid #91d5ff;\r\n            border-radius: 8px;\r\n            padding: 15px 20px;\r\n            margin-bottom: 25px;\r\n            color: #0050b3;\r\n            font-size: 0.9rem;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n        }\r\n\r\n        .info-banner svg {\r\n            width: 20px;\r\n            height: 20px;\r\n            fill: #0050b3;\r\n            flex-shrink: 0;\r\n        }\r\n\r\n        \/* Threat Level Indicator *\/\r\n        .threat-level {\r\n            background: linear-gradient(135deg, #1a1f36 0%, #2d3748 100%);\r\n            color: white;\r\n            padding: 35px;\r\n            border-radius: 12px;\r\n            margin-bottom: 40px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n            box-shadow: 0 4px 15px rgba(102, 126, 234, 0.25);\r\n            position: relative;\r\n            overflow: hidden;\r\n        }\r\n\r\n        .threat-level::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: -50%;\r\n            right: -10%;\r\n            width: 400px;\r\n            height: 400px;\r\n            background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);\r\n            border-radius: 50%;\r\n        }\r\n\r\n        .threat-level-info {\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n\r\n        .threat-level-info h3 {\r\n            font-size: 1.5rem;\r\n            margin-bottom: 10px;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n            color: #fff;\r\n        }\r\n\r\n        .threat-level-info p {\r\n            opacity: 0.9;\r\n            font-size: 0.95rem;\r\n        }\r\n\r\n        .threat-meter {\r\n            display: flex;\r\n            gap: 8px;\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n\r\n        .threat-bar {\r\n            width: 12px;\r\n            height: 60px;\r\n            background: rgba(255,255,255,0.25);\r\n            border-radius: 6px;\r\n            transition: all 0.5s ease;\r\n        }\r\n\r\n        .threat-bar.active {\r\n            background: white;\r\n            box-shadow: 0 0 10px rgba(255,255,255,0.5);\r\n        }\r\n\r\n        .stats-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\r\n            gap: 20px;\r\n            margin-bottom: 40px;\r\n        }\r\n\r\n        .stat-card {\r\n            background: white;\r\n            padding: 25px;\r\n            border-radius: 12px;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.08);\r\n            border-left: 4px solid #ff6b35;\r\n            transition: transform 0.3s ease, box-shadow 0.3s ease;\r\n        }\r\n\r\n        .stat-card:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 4px 12px rgba(0,0,0,0.12);\r\n        }\r\n\r\n        .stat-header {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n            margin-bottom: 15px;\r\n        }\r\n\r\n        .stat-icon {\r\n            width: 40px;\r\n            height: 40px;\r\n            background: #f0f4ff;\r\n            border-radius: 10px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n        }\r\n\r\n        .stat-icon svg {\r\n            width: 24px;\r\n            height: 24px;\r\n            fill: #1a1f36;\r\n        }\r\n\r\n        .stat-title {\r\n            font-size: 0.9rem;\r\n            color: #6c757d;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n            font-weight: 600;\r\n        }\r\n\r\n        .stat-value {\r\n            font-size: 2rem;\r\n            font-weight: 700;\r\n            color: #1a1f36;\r\n            margin-bottom: 5px;\r\n        }\r\n\r\n        .stat-label {\r\n            font-size: 0.85rem;\r\n            color: #6c757d;\r\n        }\r\n\r\n        \/* Attack Map Section *\/\r\n        .attack-map-section {\r\n            background: white;\r\n            border-radius: 12px;\r\n            padding: 0;\r\n            margin-bottom: 40px;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.08);\r\n            overflow: hidden;\r\n        }\r\n\r\n        .attack-map-header {\r\n            background: #1a1f36;\r\n            color: white;\r\n            padding: 20px 25px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n        }\r\n\r\n        .attack-map-header h3 {\r\n            font-size: 1.3rem;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n            color: #fff;\r\n        }\r\n\r\n        .attack-map-header svg {\r\n            width: 26px;\r\n            height: 26px;\r\n            fill: white;\r\n        }\r\n\r\n        .attack-map-body {\r\n            padding: 0;\r\n            position: relative;\r\n            background: #0a0e27;\r\n            min-height: 500px;\r\n        }\r\n\r\n        .attack-map-iframe {\r\n            width: 100%;\r\n            height: 500px;\r\n            border: none;\r\n        }\r\n\r\n        \/* Statistics Charts Section *\/\r\n        .charts-section {\r\n            background: white;\r\n            border-radius: 12px;\r\n            padding: 35px;\r\n            margin-bottom: 40px;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.08);\r\n        }\r\n\r\n        .charts-section h3 {\r\n            font-size: 1.5rem;\r\n            color: #1a1f36;\r\n            margin-bottom: 25px;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n        }\r\n\r\n        .charts-section h3 svg {\r\n            width: 28px;\r\n            height: 28px;\r\n            fill: #ff6b35;\r\n        }\r\n\r\n        .charts-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\r\n            gap: 30px;\r\n        }\r\n\r\n        .chart-container {\r\n            position: relative;\r\n            height: 300px;\r\n        }\r\n\r\n        \/* Security Tips *\/\r\n        .security-tips {\r\n            background: linear-gradient(135deg, #fff3cd 0%, #ffe5a1 100%);\r\n            border-left: 4px solid #ffc107;\r\n            padding: 25px;\r\n            border-radius: 8px;\r\n            margin-bottom: 40px;\r\n            box-shadow: 0 2px 8px rgba(255, 193, 7, 0.15);\r\n        }\r\n\r\n        .security-tips h4 {\r\n            color: #856404;\r\n            margin-bottom: 15px;\r\n            font-size: 1.1rem;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n        }\r\n\r\n        .security-tips h4 svg {\r\n            width: 24px;\r\n            height: 24px;\r\n            fill: #ffc107;\r\n        }\r\n\r\n        .security-tips ul {\r\n            list-style-position: inside;\r\n            color: #856404;\r\n        }\r\n\r\n        .security-tips li {\r\n            margin-bottom: 8px;\r\n            padding-left: 10px;\r\n        }\r\n\r\n        \/* Quick Tools Section *\/\r\n        .tools-section {\r\n            background: white;\r\n            border-radius: 12px;\r\n            padding: 35px;\r\n            margin-bottom: 40px;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.08);\r\n        }\r\n\r\n        .tools-section h3 {\r\n            font-size: 1.5rem;\r\n            color: #1a1f36;\r\n            margin-bottom: 25px;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n        }\r\n\r\n        .tools-section h3 svg {\r\n            width: 28px;\r\n            height: 28px;\r\n            fill: #ff6b35;\r\n        }\r\n\r\n        .tools-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\r\n            gap: 20px;\r\n        }\r\n\r\n        .tool-card {\r\n            background: #f8f9fa;\r\n            padding: 20px;\r\n            border-radius: 8px;\r\n            border: 2px solid #e2e8f0;\r\n            transition: all 0.3s ease;\r\n        }\r\n\r\n        .tool-card:hover {\r\n            border-color: #ff6b35;\r\n            box-shadow: 0 4px 12px rgba(255, 107, 53, 0.15);\r\n            transform: translateY(-2px);\r\n        }\r\n\r\n        .tool-card h4 {\r\n            font-size: 1.1rem;\r\n            color: #1a1f36;\r\n            margin-bottom: 15px;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n        }\r\n\r\n        .tool-card h4 svg {\r\n            width: 20px;\r\n            height: 20px;\r\n            fill: #ff6b35;\r\n        }\r\n\r\n        .tool-input, .tool-textarea {\r\n            width: 100%;\r\n            padding: 12px 15px;\r\n            border: 1px solid #e2e8f0;\r\n            border-radius: 6px;\r\n            font-size: 0.9rem;\r\n            margin-bottom: 12px;\r\n            transition: border-color 0.3s ease;\r\n            font-family: inherit;\r\n        }\r\n\r\n        .tool-textarea {\r\n            min-height: 80px;\r\n            resize: vertical;\r\n        }\r\n\r\n        .tool-input:focus, .tool-textarea:focus {\r\n            outline: none;\r\n            border-color: #ff6b35;\r\n        }\r\n\r\n        .tool-button {\r\n            width: 100%;\r\n            padding: 0px 12px;\r\n            background: #ff6b35;\r\n            color: white;\r\n            border: none;\r\n            border-radius: 6px;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            font-size: 0.95rem;\r\n        }\r\n\r\n        .tool-button:hover {\r\n            background: #e55a2b;\r\n            transform: translateY(-1px);\r\n            box-shadow: 0 2px 8px rgba(255, 107, 53, 0.3);\r\n        }\r\n\r\n        .tool-button:active {\r\n            transform: translateY(0);\r\n        }\r\n\r\n        .tool-result {\r\n            margin-top: 12px;\r\n            padding: 12px;\r\n            background: white;\r\n            border-radius: 6px;\r\n            font-size: 0.9rem;\r\n            display: none;\r\n            border-left: 3px solid #ff6b35;\r\n        }\r\n\r\n        .tool-result.show {\r\n            display: block;\r\n            animation: slideIn 0.3s ease;\r\n        }\r\n\r\n        @keyframes slideIn {\r\n            from {\r\n                opacity: 0;\r\n                transform: translateY(-10px);\r\n            }\r\n            to {\r\n                opacity: 1;\r\n                transform: translateY(0);\r\n            }\r\n        }\r\n\r\n        .content-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(450px, 1fr));\r\n            gap: 25px;\r\n            margin-bottom: 40px;\r\n        }\r\n\r\n        .monitor-card {\r\n            background: white;\r\n            border-radius: 12px;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.08);\r\n            overflow: hidden;\r\n        }\r\n\r\n        .card-header {\r\n            background: #1a1f36;\r\n            color: white;\r\n            padding: 20px 25px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n        }\r\n\r\n        .card-header-left {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n        }\r\n\r\n        .card-header svg {\r\n            width: 24px;\r\n            height: 24px;\r\n            fill: white;\r\n        }\r\n\r\n        .card-title {\r\n            font-size: 1.2rem;\r\n            font-weight: 600;\r\n        }\r\n\r\n        .update-time {\r\n            font-size: 0.75rem;\r\n            color: #a0aec0;\r\n        }\r\n\r\n        .card-body {\r\n            padding: 25px;\r\n            max-height: 500px;\r\n            overflow-y: auto;\r\n        }\r\n\r\n        .card-body::-webkit-scrollbar {\r\n            width: 6px;\r\n        }\r\n\r\n        .card-body::-webkit-scrollbar-track {\r\n            background: #f1f1f1;\r\n        }\r\n\r\n        .card-body::-webkit-scrollbar-thumb {\r\n            background: #cbd5e0;\r\n            border-radius: 3px;\r\n        }\r\n\r\n        .card-body::-webkit-scrollbar-thumb:hover {\r\n            background: #a0aec0;\r\n        }\r\n\r\n        .threat-item {\r\n            padding: 15px;\r\n            border-left: 3px solid #e2e8f0;\r\n            margin-bottom: 15px;\r\n            background: #f8f9fa;\r\n            border-radius: 6px;\r\n            transition: all 0.3s ease;\r\n        }\r\n\r\n        .threat-item:hover {\r\n            border-left-color: #ff6b35;\r\n            background: #fff;\r\n            box-shadow: 0 2px 6px rgba(0,0,0,0.05);\r\n        }\r\n\r\n        .threat-item:last-child {\r\n            margin-bottom: 0;\r\n        }\r\n\r\n        .threat-header {\r\n            display: flex;\r\n            align-items: flex-start;\r\n            justify-content: space-between;\r\n            margin-bottom: 8px;\r\n        }\r\n\r\n        .threat-id {\r\n            font-weight: 600;\r\n            color: #1a1f36;\r\n            font-size: 0.95rem;\r\n        }\r\n\r\n        .severity-badge {\r\n            padding: 4px 10px;\r\n            border-radius: 12px;\r\n            font-size: 0.75rem;\r\n            font-weight: 600;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n        }\r\n\r\n        .severity-critical {\r\n            background: #fee;\r\n            color: #c53030;\r\n        }\r\n\r\n        .severity-high {\r\n            background: #fff5f5;\r\n            color: #e53e3e;\r\n        }\r\n\r\n        .severity-medium {\r\n            background: #fffaf0;\r\n            color: #dd6b20;\r\n        }\r\n\r\n        .severity-low {\r\n            background: #f0fff4;\r\n            color: #38a169;\r\n        }\r\n\r\n        .threat-description {\r\n            font-size: 0.9rem;\r\n            color: #4a5568;\r\n            margin-bottom: 8px;\r\n            line-height: 1.5;\r\n        }\r\n\r\n        .threat-meta {\r\n            display: flex;\r\n            gap: 15px;\r\n            font-size: 0.8rem;\r\n            color: #718096;\r\n            flex-wrap: wrap;\r\n        }\r\n\r\n        .threat-meta span {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 5px;\r\n        }\r\n\r\n        .loading {\r\n            text-align: center;\r\n            padding: 40px;\r\n            color: #6c757d;\r\n        }\r\n\r\n        .loading-spinner {\r\n            width: 40px;\r\n            height: 40px;\r\n            border: 4px solid #e2e8f0;\r\n            border-top-color: #ff6b35;\r\n            border-radius: 50%;\r\n            animation: spin 1s linear infinite;\r\n            margin: 0 auto 15px;\r\n        }\r\n\r\n        @keyframes spin {\r\n            to { transform: rotate(360deg); }\r\n        }\r\n\r\n        .error-message {\r\n            background: #fff5f5;\r\n            color: #c53030;\r\n            padding: 15px;\r\n            border-radius: 6px;\r\n            border-left: 4px solid #fc8181;\r\n            font-size: 0.9rem;\r\n        }\r\n\r\n        .threat-source {\r\n            font-size: 0.8rem;\r\n            color: #718096;\r\n            margin-top: 8px;\r\n        }\r\n\r\n        .wide-card {\r\n            grid-column: 1 \/ -1;\r\n        }\r\n\r\n        \/* WebSec CTA Section *\/\r\n        .cta-section {\r\n            background: linear-gradient(135deg, #1a1f36 0%, #2d3748 100%);\r\n            border-radius: 16px;\r\n            padding: 60px 40px;\r\n            margin: 60px 0 40px;\r\n            position: relative;\r\n            overflow: hidden;\r\n            box-shadow: 0 10px 40px rgba(0,0,0,0.15);\r\n        }\r\n\r\n        .cta-section::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: -50%;\r\n            right: -10%;\r\n            width: 500px;\r\n            height: 500px;\r\n            background: radial-gradient(circle, rgba(255,107,53,0.15) 0%, transparent 70%);\r\n            border-radius: 50%;\r\n        }\r\n\r\n        .cta-section::after {\r\n            content: '';\r\n            position: absolute;\r\n            bottom: -30%;\r\n            left: -10%;\r\n            width: 400px;\r\n            height: 400px;\r\n            background: radial-gradient(circle, rgba(102, 126, 234, 0.1) 0%, transparent 70%);\r\n            border-radius: 50%;\r\n        }\r\n\r\n        .cta-content {\r\n            position: relative;\r\n            z-index: 1;\r\n            max-width: 900px;\r\n            margin: 0 auto;\r\n            text-align: center;\r\n        }\r\n\r\n        .cta-badge {\r\n            display: inline-block;\r\n            background: rgba(255,107,53,0.2);\r\n            color: #ff6b35;\r\n            padding: 8px 20px;\r\n            border-radius: 20px;\r\n            font-size: 0.85rem;\r\n            font-weight: 600;\r\n            margin-bottom: 20px;\r\n            text-transform: uppercase;\r\n            letter-spacing: 1px;\r\n        }\r\n\r\n        .cta-section h2 {\r\n            font-size: 2.5rem;\r\n            color: white;\r\n            margin-bottom: 20px;\r\n            line-height: 1.2;\r\n        }\r\n\r\n        .cta-section p {\r\n            font-size: 1.1rem;\r\n            color: #cbd5e0;\r\n            margin-bottom: 40px;\r\n            line-height: 1.6;\r\n        }\r\n\r\n        .cta-features {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\r\n            gap: 30px;\r\n            margin-bottom: 40px;\r\n        }\r\n\r\n        .cta-feature {\r\n            text-align: center;\r\n        }\r\n\r\n        .cta-feature-icon {\r\n            width: 70px;\r\n            height: 70px;\r\n            background: rgba(255,255,255,0.1);\r\n            border-radius: 16px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            margin: 0 auto 15px;\r\n            transition: all 0.3s ease;\r\n        }\r\n\r\n        .cta-feature:hover .cta-feature-icon {\r\n            background: rgba(255,255,255,0.15);\r\n            transform: translateY(-5px);\r\n        }\r\n\r\n        .cta-feature-icon svg {\r\n            width: 35px;\r\n            height: 35px;\r\n            fill: #ff6b35;\r\n        }\r\n\r\n        .cta-feature h4 {\r\n            color: white;\r\n            font-size: 1.1rem;\r\n            margin-bottom: 8px;\r\n        }\r\n\r\n        .cta-feature p {\r\n            font-size: 0.9rem;\r\n            margin-bottom: 0;\r\n        }\r\n\r\n        .cta-buttons {\r\n            display: flex;\r\n            gap: 20px;\r\n            justify-content: center;\r\n            flex-wrap: wrap;\r\n        }\r\n\r\n        .cta-button {\r\n            padding: 16px 40px;\r\n            font-size: 1rem;\r\n            font-weight: 600;\r\n            border-radius: 8px;\r\n            text-decoration: none;\r\n            transition: all 0.3s ease;\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n        }\r\n\r\n        .cta-button-primary {\r\n            background: #ff6b35;\r\n            color: white;\r\n            border: 2px solid #ff6b35;\r\n        }\r\n\r\n        .cta-button-primary:hover {\r\n            background: #e55a2b;\r\n            border-color: #e55a2b;\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 6px 20px rgba(255,107,53,0.4);\r\n        }\r\n\r\n        .cta-button-secondary {\r\n            background: transparent;\r\n            color: white;\r\n            border: 2px solid rgba(255,255,255,0.3);\r\n        }\r\n\r\n        .cta-button-secondary:hover {\r\n            background: rgba(255,255,255,0.1);\r\n            border-color: white;\r\n            transform: translateY(-2px);\r\n        }\r\n\r\n        @media (max-width: 968px) {\r\n            .content-grid {\r\n                grid-template-columns: 1fr;\r\n            }\r\n            \r\n            .monitor-header h1 {\r\n                font-size: 2rem;\r\n            }\r\n            \r\n            .stats-grid {\r\n                grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\r\n            }\r\n\r\n            .cta-section {\r\n                padding: 40px 25px;\r\n            }\r\n\r\n            .cta-section h2 {\r\n                font-size: 1.8rem;\r\n            }\r\n\r\n            .tools-grid {\r\n                grid-template-columns: 1fr;\r\n            }\r\n\r\n            .charts-grid {\r\n                grid-template-columns: 1fr;\r\n            }\r\n\r\n            .threat-level {\r\n                flex-direction: column;\r\n                gap: 20px;\r\n                text-align: center;\r\n            }\r\n        }\r\n\r\n        .last-updated {\r\n            text-align: center;\r\n            color: #6c757d;\r\n            font-size: 0.85rem;\r\n            margin-top: 30px;\r\n            padding: 15px;\r\n            background: white;\r\n            border-radius: 8px;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body data-rsssl=1>\r\n    <div class=\"monitor-container\">\r\n        <div class=\"monitor-header\">\r\n            <h1>\u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a\u0629<\/h1>\r\n            <p>\u0645\u0631\u0627\u0642\u0628\u0629 \u0641\u0648\u0631\u064a\u0629 \u0644\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a\u0629 \u0627\u0644\u0639\u0627\u0644\u0645\u064a\u0629 \u0648\u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0648\u0627\u0644\u0647\u062c\u0645\u0627\u062a<\/p>\r\n            <div class=\"live-indicator\">\r\n                <span class=\"live-dot\"><\/span>\r\n                <span>\u0627\u0644\u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0646\u0634\u0637\u0629<\/span>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"info-banner\">\r\n            <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"\/>\r\n            <\/svg>\r\n            <span>\u0645\u0635\u0627\u062f\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a: CVEDB (Shodan)\u060c \u0643\u062a\u0627\u0644\u0648\u062c CISA KEV\u060c CheckPoint ThreatCloud | \u062a\u062d\u062f\u064a\u062b \u0643\u0644 5 \u062f\u0642\u0627\u0626\u0642<\/span>\r\n        <\/div>\r\n\r\n        <!-- Threat Level Indicator -->\r\n        <div class=\"threat-level\">\r\n            <div class=\"threat-level-info\">\r\n                <h3>\r\n                    <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width: 28px; height: 28px; fill: white;\">\r\n                        <path d=\"M12 2L2 7v10c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V7l-10-5z\"\/>\r\n                    <\/svg>\r\n                    \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u062a\u0647\u062f\u064a\u062f \u0627\u0644\u062d\u0627\u0644\u064a: <span id=\"threat-level-text\">\u0645\u0631\u062a\u0641\u0639<\/span>\r\n                <\/h3>\r\n                <p>\u0628\u0646\u0627\u0621\u064b \u0639\u0644\u0649 \u0646\u0634\u0627\u0637 \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0627\u0644\u0623\u062e\u064a\u0631 \u0648\u0627\u062a\u062c\u0627\u0647\u0627\u062a \u0627\u0644\u0627\u0633\u062a\u063a\u0644\u0627\u0644 \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0639\u0627\u0644\u0645<\/p>\r\n            <\/div>\r\n            <div class=\"threat-meter\">\r\n                <div class=\"threat-bar\"><\/div>\r\n                <div class=\"threat-bar\"><\/div>\r\n                <div class=\"threat-bar active\"><\/div>\r\n                <div class=\"threat-bar\"><\/div>\r\n                <div class=\"threat-bar\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"stats-grid\">\r\n            <div class=\"stat-card\">\r\n                <div class=\"stat-header\">\r\n                    <div class=\"stat-icon\">\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M12 2L2 7v10c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V7l-10-5zm0 18c-4.41 0-8-3.59-8-8V8.3l8-4.44 8 4.44V12c0 4.41-3.59 8-8 8zm-1-6h2v2h-2v-2zm0-8h2v6h-2V6z\"\/>\r\n                        <\/svg>\r\n                    <\/div>\r\n                    <span class=\"stat-title\">CVE \u062d\u062f\u064a\u062b\u0629<\/span>\r\n                <\/div>\r\n                <div class=\"stat-value\" id=\"recent-cves-count\">-<\/div>\r\n                <div class=\"stat-label\">\u0623\u062d\u062f\u062b \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629<\/div>\r\n            <\/div>\r\n\r\n            <div class=\"stat-card\">\r\n                <div class=\"stat-header\">\r\n                    <div class=\"stat-icon\">\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\/>\r\n                        <\/svg>\r\n                    <\/div>\r\n                    <span class=\"stat-title\">\u0645\u0633\u062a\u063a\u0644\u0629 \u0645\u0639\u0631\u0648\u0641\u0629<\/span>\r\n                <\/div>\r\n                <div class=\"stat-value\" id=\"active-exploits-count\">-<\/div>\r\n                <div class=\"stat-label\">\u0643\u062a\u0627\u0644\u0648\u062c CISA KEV<\/div>\r\n            <\/div>\r\n\r\n            <div class=\"stat-card\">\r\n                <div class=\"stat-header\">\r\n                    <div class=\"stat-icon\">\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\/>\r\n                        <\/svg>\r\n                    <\/div>\r\n                    <span class=\"stat-title\">\u062e\u0637\u0648\u0631\u0629 \u062d\u0631\u062c\u0629<\/span>\r\n                <\/div>\r\n                <div class=\"stat-value\" id=\"critical-count\">-<\/div>\r\n                <div class=\"stat-label\">CVE \u0639\u0627\u0644\u064a\u0629 \u0627\u0644\u062a\u0623\u062b\u064a\u0631<\/div>\r\n            <\/div>\r\n\r\n            <div class=\"stat-card\">\r\n                <div class=\"stat-header\">\r\n                    <div class=\"stat-icon\">\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"\/>\r\n                        <\/svg>\r\n                    <\/div>\r\n                    <span class=\"stat-title\">\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0645\u062a\u062a\u0628\u0639<\/span>\r\n                <\/div>\r\n                <div class=\"stat-value\" id=\"total-threats-count\">-<\/div>\r\n                <div class=\"stat-label\">\u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629<\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Real-Time Attack Map -->\r\n        <div class=\"attack-map-section\">\r\n            <div class=\"attack-map-header\">\r\n                <h3>\r\n                    <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                        <path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"\/>\r\n                    <\/svg>\r\n                    \u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0647\u062c\u0645\u0627\u062a \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a\u0629 \u0641\u064a \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a\r\n                <\/h3>\r\n                <span class=\"update-time\">\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0628\u0627\u0634\u0631\u0629<\/span>\r\n            <\/div>\r\n            <div class=\"attack-map-body\">\r\n                <iframe \r\n                    class=\"attack-map-iframe\" \r\n                    src=\"https:\/\/threatmap.checkpoint.com\/ThreatPortal\/livemap.html\" \r\n                    frameborder=\"0\" \r\n                    allowfullscreen>\r\n                <\/iframe>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Statistics & Charts -->\r\n        <div class=\"charts-section\">\r\n            <h3>\r\n                <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                    <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"\/>\r\n                <\/svg>\r\n                \u0625\u062d\u0635\u0627\u0626\u064a\u0627\u062a \u0627\u0644\u0627\u0633\u062a\u062e\u0628\u0627\u0631\u0627\u062a \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u064a\u0629\r\n            <\/h3>\r\n            <div class=\"charts-grid\">\r\n                <div class=\"chart-container\">\r\n                    <canvas id=\"severityChart\"><\/canvas>\r\n                <\/div>\r\n                <div class=\"chart-container\">\r\n                    <canvas id=\"trendChart\"><\/canvas>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Security Tips -->\r\n        <div class=\"security-tips\">\r\n            <h4>\r\n                <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                    <path d=\"M12 2L2 7v10c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V7l-10-5zm-1 13H9v-2h2v2zm0-4H9V7h2v4z\"\/>\r\n                <\/svg>\r\n                \u062a\u0648\u0635\u064a\u0627\u062a \u0627\u0644\u0623\u0645\u0627\u0646 \u0644\u0647\u0630\u0627 \u0627\u0644\u064a\u0648\u0645\r\n            <\/h4>\r\n            <ul>\r\n                <li><strong>\u0623\u0648\u0644\u0648\u064a\u0629:<\/strong> \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0641\u0648\u0631\u0627\u064b \u0625\u0630\u0627 \u062a\u0623\u062b\u0631\u062a \u0628\u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u063a\u0644\u0629 \u0627\u0644\u0645\u0639\u0631\u0648\u0641\u0629 \u0627\u0644\u0645\u062f\u0631\u062c\u0629 \u0623\u062f\u0646\u0627\u0647<\/li>\r\n                <li><strong>\u0636\u0631\u0648\u0631\u064a:<\/strong> \u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u062a\u0639\u062f\u062f\u0629 \u0627\u0644\u0639\u0648\u0627\u0645\u0644 (MFA) \u0639\u0644\u0649 \u062c\u0645\u064a\u0639 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062d\u0631\u062c\u0629 \u0648\u062d\u0633\u0627\u0628\u0627\u062a \u0627\u0644\u0645\u0633\u0624\u0648\u0644\u064a\u0646<\/li>\r\n                <li><strong>\u0645\u0648\u0635\u0649 \u0628\u0647:<\/strong> \u0645\u0631\u0627\u062c\u0639\u0629 \u0648\u062a\u062d\u062f\u064a\u062b \u0642\u0648\u0627\u0639\u062f \u062c\u062f\u0627\u0631 \u0627\u0644\u062d\u0645\u0627\u064a\u0629 \u0628\u0627\u0646\u062a\u0638\u0627\u0645 \u0644\u062d\u0638\u0631 \u0627\u0644\u0648\u0635\u0648\u0644 \u063a\u064a\u0631 \u0627\u0644\u0645\u0635\u0631\u062d \u0628\u0647<\/li>\r\n                <li><strong>\u0623\u0641\u0636\u0644 \u0645\u0645\u0627\u0631\u0633\u0629:<\/strong> \u0645\u0631\u0627\u0642\u0628\u0629 \u0633\u062c\u0644\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645 \u0644\u0644\u0623\u0646\u0634\u0637\u0629 \u063a\u064a\u0631 \u0627\u0644\u0639\u0627\u062f\u064a\u0629 \u0648\u0627\u0644\u062a\u0633\u0644\u0644\u0627\u062a \u0627\u0644\u0645\u062d\u062a\u0645\u0644\u0629<\/li>\r\n                <li><strong>\u0648\u0642\u0627\u064a\u0629:<\/strong> \u0625\u0628\u0642\u0627\u0621 \u062c\u0645\u064a\u0639 \u0627\u0644\u0628\u0631\u0627\u0645\u062c \u0648\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644 \u0648\u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0645\u062d\u062f\u062b\u0629 \u0628\u0623\u062d\u062f\u062b \u0627\u0644\u062a\u0635\u062d\u064a\u062d\u0627\u062a<\/li>\r\n            <\/ul>\r\n        <\/div>\r\n\r\n        <!-- Quick Tools -->\r\n        <div class=\"tools-section\">\r\n            <h3>\r\n                <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                    <path d=\"M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z\"\/>\r\n                <\/svg>\r\n                \u0623\u062f\u0648\u0627\u062a \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0627\u0644\u0623\u0645\u0646\u064a\r\n            <\/h3>\r\n            <div class=\"tools-grid\">\r\n                <div class=\"tool-card\">\r\n                    <h4>\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\/>\r\n                        <\/svg>\r\n                        \u0627\u0644\u0628\u062d\u062b \u0639\u0646 CVE\r\n                    <\/h4>\r\n                    <input type=\"text\" class=\"tool-input\" id=\"cve-lookup-input\" placeholder=\"\u0623\u062f\u062e\u0644 \u0631\u0642\u0645 CVE (\u0645\u062b\u0627\u0644: CVE-2024-12345)\">\r\n                    <button class=\"tool-button\" onclick=\"lookupCVE()\">\u0627\u0644\u0628\u062d\u062b \u0641\u064a \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a CVE<\/button>\r\n                    <div class=\"tool-result\" id=\"cve-lookup-result\"><\/div>\r\n                <\/div>\r\n\r\n                <div class=\"tool-card\">\r\n                    <h4>\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z\"\/>\r\n                        <\/svg>\r\n                        \u062d\u0627\u0633\u0628\u0629 CVSS\r\n                    <\/h4>\r\n                    <input type=\"number\" class=\"tool-input\" id=\"cvss-input\" placeholder=\"\u0623\u062f\u062e\u0644 \u062f\u0631\u062c\u0629 CVSS (0-10)\" min=\"0\" max=\"10\" step=\"0.1\">\r\n                    <button class=\"tool-button\" onclick=\"calculateCVSS()\">\u062d\u0633\u0627\u0628 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u062e\u0637\u0648\u0631\u0629<\/button>\r\n                    <div class=\"tool-result\" id=\"cvss-result\"><\/div>\r\n                <\/div>\r\n\r\n                <div class=\"tool-card\">\r\n                    <h4>\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"\/>\r\n                        <\/svg>\r\n                        \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u062c\u063a\u0631\u0627\u0641\u064a \u0644\u0644\u0640 IP\r\n                    <\/h4>\r\n                    <input type=\"text\" class=\"tool-input\" id=\"ip-input\" placeholder=\"\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 IP (\u0645\u062b\u0627\u0644: 8.8.8.8)\">\r\n                    <button class=\"tool-button\" onclick=\"lookupIP()\">\u0627\u0644\u0628\u062d\u062b \u0639\u0646 \u0627\u0644\u0645\u0648\u0642\u0639<\/button>\r\n                    <div class=\"tool-result\" id=\"ip-result\"><\/div>\r\n                <\/div>\r\n\r\n                <div class=\"tool-card\">\r\n                    <h4>\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z\"\/>\r\n                        <\/svg>\r\n                        \u0645\u062d\u0644\u0644 \u0627\u0644\u0647\u0627\u0634\r\n                    <\/h4>\r\n                    <input type=\"text\" class=\"tool-input\" id=\"hash-input\" placeholder=\"\u0623\u062f\u062e\u0644 \u0627\u0644\u0647\u0627\u0634 (MD5\/SHA1\/SHA256)\">\r\n                    <button class=\"tool-button\" onclick=\"analyzeHash()\">\u062a\u062d\u062f\u064a\u062f \u0646\u0648\u0639 \u0627\u0644\u0647\u0627\u0634<\/button>\r\n                    <div class=\"tool-result\" id=\"hash-result\"><\/div>\r\n                <\/div>\r\n\r\n                <div class=\"tool-card\">\r\n                    <h4>\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"\/>\r\n                        <\/svg>\r\n                        \u0641\u0627\u062d\u0635 \u0627\u0644\u0645\u0646\u0627\u0641\u0630\r\n                    <\/h4>\r\n                    <input type=\"number\" class=\"tool-input\" id=\"port-input\" placeholder=\"\u0623\u062f\u062e\u0644 \u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 (1-65535)\" min=\"1\" max=\"65535\">\r\n                    <button class=\"tool-button\" onclick=\"checkPort()\">\u0641\u062d\u0635 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0646\u0641\u0630<\/button>\r\n                    <div class=\"tool-result\" id=\"port-result\"><\/div>\r\n                <\/div>\r\n\r\n                <div class=\"tool-card\">\r\n                    <h4>\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z\"\/>\r\n                        <\/svg>\r\n                        \u0645\u0634\u0641\u0631\/\u0641\u0627\u0643 \u062a\u0634\u0641\u064a\u0631 Base64\r\n                    <\/h4>\r\n                    <textarea class=\"tool-textarea\" id=\"base64-input\" placeholder=\"\u0623\u062f\u062e\u0644 \u0627\u0644\u0646\u0635 \u0644\u0644\u062a\u0634\u0641\u064a\u0631\/\u0641\u0643 \u0627\u0644\u062a\u0634\u0641\u064a\u0631\"><\/textarea>\r\n                    <div style=\"display: flex; gap: 10px;\">\r\n                        <button class=\"tool-button\" style=\"width: 50%;\" onclick=\"base64Encode()\">\u062a\u0634\u0641\u064a\u0631<\/button>\r\n                        <button class=\"tool-button\" style=\"width: 50%;\" onclick=\"base64Decode()\">\u0641\u0643 \u0627\u0644\u062a\u0634\u0641\u064a\u0631<\/button>\r\n                    <\/div>\r\n                    <div class=\"tool-result\" id=\"base64-result\"><\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"content-grid\">\r\n            <div class=\"monitor-card\">\r\n                <div class=\"card-header\">\r\n                    <div class=\"card-header-left\">\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M12 2L2 7v10c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V7l-10-5z\"\/>\r\n                        <\/svg>\r\n                        <span class=\"card-title\">\u0623\u062d\u062f\u062b \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629<\/span>\r\n                    <\/div>\r\n                    <span class=\"update-time\" id=\"cve-update-time\">\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u062f\u064a\u062b...<\/span>\r\n                <\/div>\r\n                <div class=\"card-body\" id=\"cve-list\">\r\n                    <div class=\"loading\">\r\n                        <div class=\"loading-spinner\"><\/div>\r\n                        <p>\u062c\u0627\u0631\u064a \u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629...<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"monitor-card\">\r\n                <div class=\"card-header\">\r\n                    <div class=\"card-header-left\">\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\/>\r\n                        <\/svg>\r\n                        <span class=\"card-title\">\u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u063a\u0644\u0629 \u0627\u0644\u0645\u0639\u0631\u0648\u0641\u0629<\/span>\r\n                    <\/div>\r\n                    <span class=\"update-time\" id=\"kev-update-time\">\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u062f\u064a\u062b...<\/span>\r\n                <\/div>\r\n                <div class=\"card-body\" id=\"kev-list\">\r\n                    <div class=\"loading\">\r\n                        <div class=\"loading-spinner\"><\/div>\r\n                        <p>\u062c\u0627\u0631\u064a \u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a KEV...<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"monitor-card wide-card\">\r\n                <div class=\"card-header\">\r\n                    <div class=\"card-header-left\">\r\n                        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                            <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm-1-13h2v6h-2zm0 8h2v2h-2z\"\/>\r\n                        <\/svg>\r\n                        <span class=\"card-title\">\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0630\u0627\u062a \u062e\u0637\u0648\u0631\u0629 \u062d\u0631\u062c\u0629 \u0648\u0639\u0627\u0644\u064a\u0629<\/span>\r\n                    <\/div>\r\n                    <span class=\"update-time\" id=\"critical-update-time\">\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u062f\u064a\u062b...<\/span>\r\n                <\/div>\r\n                <div class=\"card-body\" id=\"critical-list\">\r\n                    <div class=\"loading\">\r\n                        <div class=\"loading-spinner\"><\/div>\r\n                        <p>\u062c\u0627\u0631\u064a \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u062d\u0631\u062c\u0629...<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- WebSec CTA Section -->\r\n        <div class=\"cta-section\">\r\n            <div class=\"cta-content\">\r\n                <div class=\"cta-badge\">\u062d\u0644\u0648\u0644 \u0623\u0645\u0646 \u0633\u064a\u0628\u0631\u0627\u0646\u064a \u0627\u062d\u062a\u0631\u0627\u0641\u064a\u0629<\/div>\r\n                <h2>\u0627\u062d\u0645\u0650 \u0639\u0645\u0644\u0643 \u0645\u0646 \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a\u0629<\/h2>\r\n                <p>\u062d\u062a\u0649 \u0623\u0642\u0648\u0649 \u0627\u0644\u062d\u0635\u0648\u0646 \u064a\u0645\u0643\u0646 \u0623\u0646 \u062a\u0633\u0642\u0637 \u0628\u0633\u0628\u0628 \u062b\u063a\u0631\u0629 \u0628\u0633\u064a\u0637\u0629. \u0641\u064a WebSec\u060c \u0646\u0642\u062f\u0645 \u062d\u0644\u0648\u0644 \u0623\u0645\u0646 \u0633\u064a\u0628\u0631\u0627\u0646\u064a \u0645\u062a\u0642\u062f\u0645\u0629\u060c \u0646\u062d\u0645\u064a \u0627\u0644\u0634\u0631\u0643\u0627\u062a \u0645\u0646 \u062c\u0645\u064a\u0639 \u0627\u0644\u0623\u062d\u062c\u0627\u0645 \u0645\u0646 \u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u064a\u0648\u0645 \u0648\u0627\u0644\u063a\u062f.<\/p>\r\n                \r\n                <div class=\"cta-features\">\r\n                    <div class=\"cta-feature\">\r\n                        <div class=\"cta-feature-icon\">\r\n                            <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                                <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z\"\/>\r\n                            <\/svg>\r\n                        <\/div>\r\n                        <h4>\u0645\u0631\u0627\u0642\u0628\u0629 \u0639\u0644\u0649 \u0645\u062f\u0627\u0631 \u0627\u0644\u0633\u0627\u0639\u0629<\/h4>\r\n                        <p>\u0643\u0634\u0641 \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0648\u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629<\/p>\r\n                    <\/div>\r\n\r\n                    <div class=\"cta-feature\">\r\n                        <div class=\"cta-feature-icon\">\r\n                            <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                                <path d=\"M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z\"\/>\r\n                            <\/svg>\r\n                        <\/div>\r\n                        <h4>\u0641\u0631\u064a\u0642 \u062e\u0628\u0631\u0627\u0621<\/h4>\r\n                        <p>\u0645\u062a\u062e\u0635\u0635\u0648\u0646 \u0623\u0645\u0646\u064a\u0648\u0646 \u0645\u0639\u062a\u0645\u062f\u0648\u0646 \u0641\u064a \u062e\u062f\u0645\u062a\u0643<\/p>\r\n                    <\/div>\r\n\r\n                    <div class=\"cta-feature\">\r\n                        <div class=\"cta-feature-icon\">\r\n                            <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                                <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\/>\r\n                            <\/svg>\r\n                        <\/div>\r\n                        <h4>\u0646\u062a\u0627\u0626\u062c \u0645\u062b\u0628\u062a\u0629<\/h4>\r\n                        <p>\u0645\u0648\u062b\u0648\u0642 \u0628\u0647\u0627 \u0645\u0646 \u0642\u0628\u0644 \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062a \u0627\u0644\u0631\u0627\u0626\u062f\u0629 \u0639\u0627\u0644\u0645\u064a\u0627\u064b<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"cta-buttons\">\r\n                    <a href=\"https:\/\/websec.net\/contact\/\" class=\"cta-button cta-button-primary\" target=\"_blank\" rel=\"noopener\">\r\n                        \u0637\u0644\u0628 \u062a\u0642\u064a\u064a\u0645 \u0623\u0645\u0646\u064a \u0645\u062c\u0627\u0646\u064a\r\n                        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" style=\"transform: scaleX(-1);\">\r\n                            <path d=\"M5 12h14M12 5l7 7-7 7\"\/>\r\n                        <\/svg>\r\n                    <\/a>\r\n                    <a href=\"https:\/\/websec.net\/\" class=\"cta-button cta-button-secondary\" target=\"_blank\" rel=\"noopener\">\r\n                        \u0627\u0633\u062a\u0643\u0634\u0641 \u062e\u062f\u0645\u0627\u062a\u0646\u0627\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"last-updated\">\r\n            \u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b: <span id=\"last-update-time\">-<\/span> | \u062a\u062d\u062f\u064a\u062b \u062a\u0644\u0642\u0627\u0626\u064a \u0643\u0644 5 \u062f\u0642\u0627\u0626\u0642\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        \/\/ IMPORTANT: Update this to point to your PHP proxy file location\r\n        const PROXY_URL = '\/cyber-data-proxy-v2.php';\r\n        \r\n        const REFRESH_INTERVAL = 300000; \/\/ 5 minutes\r\n\r\n        \/\/ Initialize Charts\r\n        let severityChart, trendChart;\r\n\r\n        function initCharts() {\r\n            \/\/ Severity Distribution Chart\r\n            const severityCtx = document.getElementById('severityChart').getContext('2d');\r\n            severityChart = new Chart(severityCtx, {\r\n                type: 'doughnut',\r\n                data: {\r\n                    labels: ['\u062d\u0631\u062c', '\u0639\u0627\u0644\u064a', '\u0645\u062a\u0648\u0633\u0637', '\u0645\u0646\u062e\u0641\u0636'],\r\n                    datasets: [{\r\n                        data: [0, 0, 0, 0],\r\n                        backgroundColor: ['#c53030', '#e53e3e', '#dd6b20', '#38a169']\r\n                    }]\r\n                },\r\n                options: {\r\n                    responsive: true,\r\n                    maintainAspectRatio: false,\r\n                    plugins: {\r\n                        title: {\r\n                            display: true,\r\n                            text: '\u062a\u0648\u0632\u064a\u0639 \u062e\u0637\u0648\u0631\u0629 CVE',\r\n                            font: { size: 16 }\r\n                        },\r\n                        legend: {\r\n                            position: 'bottom'\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n\r\n            \/\/ Trend Chart\r\n            const trendCtx = document.getElementById('trendChart').getContext('2d');\r\n            trendChart = new Chart(trendCtx, {\r\n                type: 'bar',\r\n                data: {\r\n                    labels: ['\u062d\u0631\u062c', '\u0639\u0627\u0644\u064a', '\u0645\u062a\u0648\u0633\u0637', '\u0645\u0646\u062e\u0641\u0636'],\r\n                    datasets: [{\r\n                        label: 'CVE \u062d\u062f\u064a\u062b\u0629',\r\n                        data: [0, 0, 0, 0],\r\n                        backgroundColor: '#ff6b35'\r\n                    }]\r\n                },\r\n                options: {\r\n                    responsive: true,\r\n                    maintainAspectRatio: false,\r\n                    plugins: {\r\n                        title: {\r\n                            display: true,\r\n                            text: 'CVE \u062d\u0633\u0628 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u062e\u0637\u0648\u0631\u0629',\r\n                            font: { size: 16 }\r\n                        },\r\n                        legend: {\r\n                            display: false\r\n                        }\r\n                    },\r\n                    scales: {\r\n                        y: {\r\n                            beginAtZero: true\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n        }\r\n\r\n        function updateCharts(cves) {\r\n            let critical = 0, high = 0, medium = 0, low = 0;\r\n            \r\n            cves.forEach(cve => {\r\n                const cvss = parseFloat(cve.cvss_v3 || cve.cvss || 0);\r\n                if (cvss >= 9.0) critical++;\r\n                else if (cvss >= 7.0) high++;\r\n                else if (cvss >= 4.0) medium++;\r\n                else low++;\r\n            });\r\n\r\n            severityChart.data.datasets[0].data = [critical, high, medium, low];\r\n            severityChart.update();\r\n\r\n            trendChart.data.datasets[0].data = [critical, high, medium, low];\r\n            trendChart.update();\r\n        }\r\n\r\n        \/\/ Tool Functions\r\n        function lookupCVE() {\r\n            const input = document.getElementById('cve-lookup-input').value.trim().toUpperCase();\r\n            const result = document.getElementById('cve-lookup-result');\r\n            \r\n            if (!input) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0631\u0642\u0645 CVE<\/p>';\r\n                return;\r\n            }\r\n            \r\n            if (!input.match(\/^CVE-\\d{4}-\\d+$\/)) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062a\u0646\u0633\u064a\u0642 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d:<\/strong> \u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u062a\u0646\u0633\u064a\u0642 CVE-YYYY-XXXXX<\/p>';\r\n                return;\r\n            }\r\n            \r\n            result.classList.add('show');\r\n            result.innerHTML = '<p style=\"color: #38a169;\"><strong>\u0627\u0644\u0628\u062d\u062b \u0645\u062a\u0627\u062d:<\/strong> \u0639\u0631\u0636 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0643\u0627\u0645\u0644\u0629 \u0641\u064a <a href=\"https:\/\/cvedb.shodan.io\/cve\/' + input + '\" target=\"_blank\" style=\"color: #ff6b35; text-decoration: underline;\">CVEDB \u2197<\/a><\/p>';\r\n        }\r\n\r\n        function calculateCVSS() {\r\n            const score = parseFloat(document.getElementById('cvss-input').value);\r\n            const result = document.getElementById('cvss-result');\r\n            \r\n            if (isNaN(score) || score < 0 || score > 10) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u062f\u0631\u062c\u0629 \u0635\u062d\u064a\u062d\u0629 \u0628\u064a\u0646 0.0 \u0648 10.0<\/p>';\r\n                return;\r\n            }\r\n            \r\n            let severity = '', color = '', description = '';\r\n            \r\n            if (score >= 9.0) {\r\n                severity = '\u062d\u0631\u062c';\r\n                color = '#c53030';\r\n                description = '\u064a\u062a\u0637\u0644\u0628 \u0625\u062c\u0631\u0627\u0621 \u0641\u0648\u0631\u064a. \u0647\u0630\u0647 \u0627\u0644\u062b\u063a\u0631\u0629 \u062a\u0634\u0643\u0644 \u062e\u0637\u0631\u0627\u064b \u0634\u062f\u064a\u062f\u0627\u064b.';\r\n            } else if (score >= 7.0) {\r\n                severity = '\u0639\u0627\u0644\u064a';\r\n                color = '#e53e3e';\r\n                description = '\u064a\u0644\u0632\u0645 \u062a\u0635\u062d\u064a\u062d \u0630\u0648 \u0623\u0648\u0644\u0648\u064a\u0629. \u062e\u0637\u0631 \u0643\u0628\u064a\u0631 \u0639\u0644\u0649 \u0627\u0644\u0623\u0646\u0638\u0645\u0629.';\r\n            } else if (score >= 4.0) {\r\n                severity = '\u0645\u062a\u0648\u0633\u0637';\r\n                color = '#dd6b20';\r\n                description = '\u064a\u062c\u0628 \u0645\u0639\u0627\u0644\u062c\u062a\u0647. \u0645\u0633\u062a\u0648\u0649 \u062e\u0637\u0631 \u0645\u0639\u062a\u062f\u0644.';\r\n            } else {\r\n                severity = '\u0645\u0646\u062e\u0641\u0636';\r\n                color = '#38a169';\r\n                description = '\u0645\u0631\u0627\u0642\u0628\u0629 \u0648\u062e\u0637\u0629 \u0645\u0639\u0627\u0644\u062c\u0629. \u0623\u0648\u0644\u0648\u064a\u0629 \u062e\u0637\u0631 \u0623\u0642\u0644.';\r\n            }\r\n            \r\n            result.classList.add('show');\r\n            result.innerHTML = `\r\n                <p><strong>\u062f\u0631\u062c\u0629 CVSS:<\/strong> ${score.toFixed(1)}\/10.0<\/p>\r\n                <p><strong>\u0627\u0644\u062e\u0637\u0648\u0631\u0629:<\/strong> <span style=\"color: ${color}; font-weight: 600;\">${severity}<\/span><\/p>\r\n                <p style=\"margin-top: 8px; font-size: 0.85rem;\">${description}<\/p>\r\n            `;\r\n        }\r\n\r\n        function lookupIP() {\r\n            const ip = document.getElementById('ip-input').value.trim();\r\n            const result = document.getElementById('ip-result');\r\n            \r\n            if (!ip) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0639\u0646\u0648\u0627\u0646 IP<\/p>';\r\n                return;\r\n            }\r\n            \r\n            result.classList.add('show');\r\n            result.innerHTML = '<p style=\"color: #38a169;\"><strong>\u0645\u0644\u0627\u062d\u0638\u0629:<\/strong> \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0648\u0642\u0639 \u062c\u063a\u0631\u0627\u0641\u064a \u062d\u0642\u064a\u0642\u064a \u0644\u0644\u0640 IP\u060c \u062a\u0643\u0627\u0645\u0644 \u0645\u0639 \u062e\u062f\u0645\u0627\u062a \u0645\u062b\u0644 <a href=\"https:\/\/ipapi.co\/' + ip + '\/json\/\" target=\"_blank\" style=\"color: #ff6b35;\">ipapi.co<\/a> \u0623\u0648 <a href=\"https:\/\/ipinfo.io\/' + ip + '\/json\" target=\"_blank\" style=\"color: #ff6b35;\">ipinfo.io<\/a><\/p>';\r\n        }\r\n\r\n        function analyzeHash() {\r\n            const hash = document.getElementById('hash-input').value.trim();\r\n            const result = document.getElementById('hash-result');\r\n            \r\n            if (!hash) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0647\u0627\u0634<\/p>';\r\n                return;\r\n            }\r\n            \r\n            let type = '\u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641';\r\n            if (hash.length === 32 && \/^[a-fA-F0-9]+$\/.test(hash)) type = 'MD5';\r\n            else if (hash.length === 40 && \/^[a-fA-F0-9]+$\/.test(hash)) type = 'SHA-1';\r\n            else if (hash.length === 64 && \/^[a-fA-F0-9]+$\/.test(hash)) type = 'SHA-256';\r\n            \r\n            result.classList.add('show');\r\n            result.innerHTML = `\r\n                <p><strong>\u0646\u0648\u0639 \u0627\u0644\u0647\u0627\u0634:<\/strong> ${type}<\/p>\r\n                <p style=\"margin-top: 8px; font-size: 0.85rem;\">\u0627\u0644\u0637\u0648\u0644: ${hash.length} \u062d\u0631\u0641<\/p>\r\n            `;\r\n        }\r\n\r\n        function checkPort() {\r\n            const port = parseInt(document.getElementById('port-input').value);\r\n            const result = document.getElementById('port-result');\r\n            \r\n            if (!port || port < 1 || port > 65535) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u0623\u062f\u062e\u0644 \u0645\u0646\u0641\u0630 \u0635\u062d\u064a\u062d (1-65535)<\/p>';\r\n                return;\r\n            }\r\n            \r\n            const commonPorts = {\r\n                21: 'FTP', 22: 'SSH', 23: 'Telnet', 25: 'SMTP', 53: 'DNS',\r\n                80: 'HTTP', 110: 'POP3', 143: 'IMAP', 443: 'HTTPS', \r\n                3306: 'MySQL', 3389: 'RDP', 5432: 'PostgreSQL', 8080: 'HTTP Proxy'\r\n            };\r\n            \r\n            const service = commonPorts[port] || '\u062e\u062f\u0645\u0629 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641\u0629\/\u0645\u062e\u0635\u0635\u0629';\r\n            \r\n            result.classList.add('show');\r\n            result.innerHTML = `\r\n                <p><strong>\u0627\u0644\u0645\u0646\u0641\u0630:<\/strong> ${port}<\/p>\r\n                <p><strong>\u0627\u0644\u062e\u062f\u0645\u0629:<\/strong> ${service}<\/p>\r\n            `;\r\n        }\r\n\r\n        function base64Encode() {\r\n            const text = document.getElementById('base64-input').value;\r\n            const result = document.getElementById('base64-result');\r\n            \r\n            if (!text) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0646\u0635 \u0644\u0644\u062a\u0634\u0641\u064a\u0631<\/p>';\r\n                return;\r\n            }\r\n            \r\n            try {\r\n                const encoded = btoa(unescape(encodeURIComponent(text)));\r\n                result.classList.add('show');\r\n                result.innerHTML = `<p><strong>\u0645\u0634\u0641\u0631:<\/strong><\/p><p style=\"word-break: break-all; margin-top: 8px;\">${encoded}<\/p>`;\r\n            } catch (e) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u062a\u0634\u0641\u064a\u0631 \u0627\u0644\u0646\u0635<\/p>';\r\n            }\r\n        }\r\n\r\n        function base64Decode() {\r\n            const text = document.getElementById('base64-input').value;\r\n            const result = document.getElementById('base64-result');\r\n            \r\n            if (!text) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0646\u0635 \u0644\u0641\u0643 \u0627\u0644\u062a\u0634\u0641\u064a\u0631<\/p>';\r\n                return;\r\n            }\r\n            \r\n            try {\r\n                const decoded = decodeURIComponent(escape(atob(text)));\r\n                result.classList.add('show');\r\n                result.innerHTML = `<p><strong>\u0641\u0643 \u0627\u0644\u062a\u0634\u0641\u064a\u0631:<\/strong><\/p><p style=\"word-break: break-all; margin-top: 8px;\">${decoded}<\/p>`;\r\n            } catch (e) {\r\n                result.classList.add('show');\r\n                result.innerHTML = '<p style=\"color: #e53e3e;\"><strong>\u062e\u0637\u0623:<\/strong> \u0633\u0644\u0633\u0644\u0629 Base64 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629<\/p>';\r\n            }\r\n        }\r\n\r\n        \/\/ Utility Functions\r\n        function formatDate(dateString) {\r\n            try {\r\n                const date = new Date(dateString);\r\n                return date.toLocaleDateString('ar-SA', { \r\n                    month: 'short', \r\n                    day: 'numeric', \r\n                    year: 'numeric' \r\n                });\r\n            } catch (e) {\r\n                return dateString;\r\n            }\r\n        }\r\n\r\n        function getSeverityClass(severity) {\r\n            if (!severity) return 'severity-low';\r\n            severity = severity.toString().toLowerCase();\r\n            if (severity.includes('critical') || severity === 'critical') return 'severity-critical';\r\n            if (severity.includes('high') || severity === 'high') return 'severity-high';\r\n            if (severity.includes('medium') || severity === 'medium') return 'severity-medium';\r\n            return 'severity-low';\r\n        }\r\n\r\n        function getSeverityArabic(severity) {\r\n            const map = {\r\n                'CRITICAL': '\u062d\u0631\u062c',\r\n                'HIGH': '\u0639\u0627\u0644\u064a',\r\n                'MEDIUM': '\u0645\u062a\u0648\u0633\u0637',\r\n                'LOW': '\u0645\u0646\u062e\u0641\u0636'\r\n            };\r\n            return map[severity] || severity;\r\n        }\r\n\r\n        function truncateText(text, maxLength) {\r\n            if (!text) return '';\r\n            if (text.length <= maxLength) return text;\r\n            return text.substring(0, maxLength) + '...';\r\n        }\r\n\r\n        function updateTimestamp(elementId) {\r\n            const now = new Date();\r\n            document.getElementById(elementId).textContent = now.toLocaleTimeString('ar-SA', {\r\n                hour: '2-digit',\r\n                minute: '2-digit'\r\n            });\r\n        }\r\n\r\n        function showError(elementId, message) {\r\n            document.getElementById(elementId).innerHTML = `\r\n                <div class=\"error-message\">\r\n                    ${message}\r\n                <\/div>\r\n            `;\r\n        }\r\n\r\n        function getSeverityFromCVSS(cvss) {\r\n            const score = parseFloat(cvss);\r\n            if (score >= 9.0) return 'CRITICAL';\r\n            if (score >= 7.0) return 'HIGH';\r\n            if (score >= 4.0) return 'MEDIUM';\r\n            return 'LOW';\r\n        }\r\n\r\n        \/\/ Fetch Latest CVEs from CVEDB\r\n        async function fetchLatestCVEs() {\r\n            try {\r\n                const response = await fetch(`${PROXY_URL}?type=cves`);\r\n                \r\n                if (!response.ok) throw new Error('Failed to fetch CVE data');\r\n                \r\n                const data = await response.json();\r\n                const cves = data.cves || [];\r\n                \r\n                document.getElementById('recent-cves-count').textContent = cves.length;\r\n                \r\n                \/\/ Update charts with CVE data\r\n                updateCharts(cves);\r\n                \r\n                let criticalCount = 0;\r\n                cves.forEach(cve => {\r\n                    const cvss = cve.cvss_v3 || cve.cvss || 0;\r\n                    if (parseFloat(cvss) >= 9.0) criticalCount++;\r\n                });\r\n                document.getElementById('critical-count').textContent = criticalCount;\r\n                \r\n                const cveList = document.getElementById('cve-list');\r\n                if (cves.length === 0) {\r\n                    cveList.innerHTML = '<p style=\"text-align: center; color: #6c757d; padding: 20px;\">\u0644\u0627 \u062a\u0648\u062c\u062f CVE \u062d\u062f\u064a\u062b\u0629 \u0645\u062a\u0627\u062d\u0629.<\/p>';\r\n                } else {\r\n                    cveList.innerHTML = cves.slice(0, 10).map(cve => {\r\n                        const cveId = cve.cve_id || 'N\/A';\r\n                        const description = cve.summary || '\u0644\u0627 \u064a\u0648\u062c\u062f \u0648\u0635\u0641 \u0645\u062a\u0627\u062d';\r\n                        const cvss = cve.cvss_v3 || cve.cvss || 'N\/A';\r\n                        const severity = getSeverityFromCVSS(cvss);\r\n                        const severityAr = getSeverityArabic(severity);\r\n                        const published = cve.published_time || '';\r\n                        const kev = cve.kev ? '\u0645\u062f\u0631\u062c \u0641\u064a KEV' : '';\r\n                        \r\n                        return `\r\n                            <div class=\"threat-item\">\r\n                                <div class=\"threat-header\">\r\n                                    <span class=\"threat-id\">${cveId}<\/span>\r\n                                    <span class=\"severity-badge ${getSeverityClass(severity)}\">${severityAr}<\/span>\r\n                                <\/div>\r\n                                <div class=\"threat-description\">${truncateText(description, 200)}<\/div>\r\n                                <div class=\"threat-meta\">\r\n                                    <span>CVSS: ${cvss}<\/span>\r\n                                    ${published ? `<span>\u0646\u064f\u0634\u0631: ${formatDate(published)}<\/span>` : ''}\r\n                                    ${kev ? `<span style=\"color: #c53030; font-weight: 600;\">${kev}<\/span>` : ''}\r\n                                <\/div>\r\n                            <\/div>\r\n                        `;\r\n                    }).join('');\r\n                }\r\n                \r\n                updateTimestamp('cve-update-time');\r\n            } catch (error) {\r\n                console.error('Error fetching CVEs:', error);\r\n                showError('cve-list', '\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a CVE. \u064a\u0631\u062c\u0649 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0648\u0643\u064a\u0644.');\r\n            }\r\n        }\r\n\r\n        \/\/ Fetch CISA Known Exploited Vulnerabilities\r\n        async function fetchKEVData() {\r\n            try {\r\n                const response = await fetch(`${PROXY_URL}?type=kev`);\r\n                \r\n                if (!response.ok) throw new Error('Failed to fetch KEV data');\r\n                \r\n                const data = await response.json();\r\n                const vulnerabilities = data.vulnerabilities || [];\r\n                \r\n                document.getElementById('active-exploits-count').textContent = vulnerabilities.length;\r\n                \r\n                \/\/ Update threat level based on KEV count\r\n                updateThreatLevel(vulnerabilities.length);\r\n                \r\n                const sortedVulns = vulnerabilities.sort((a, b) => \r\n                    new Date(b.dateAdded) - new Date(a.dateAdded)\r\n                ).slice(0, 10);\r\n                \r\n                const kevList = document.getElementById('kev-list');\r\n                if (sortedVulns.length === 0) {\r\n                    kevList.innerHTML = '<p style=\"text-align: center; color: #6c757d; padding: 20px;\">\u0644\u0627 \u062a\u0648\u062c\u062f \u0628\u064a\u0627\u0646\u0627\u062a KEV \u0645\u062a\u0627\u062d\u0629.<\/p>';\r\n                } else {\r\n                    kevList.innerHTML = sortedVulns.map(vuln => {\r\n                        return `\r\n                            <div class=\"threat-item\">\r\n                                <div class=\"threat-header\">\r\n                                    <span class=\"threat-id\">${vuln.cveID}<\/span>\r\n                                    <span class=\"severity-badge severity-critical\">\u0645\u0633\u062a\u063a\u0644 \u0628\u0646\u0634\u0627\u0637<\/span>\r\n                                <\/div>\r\n                                <div class=\"threat-description\">${truncateText(vuln.vulnerabilityName, 150)}<\/div>\r\n                                <div class=\"threat-meta\">\r\n                                    <span>\u0627\u0644\u0645\u0648\u0631\u062f: ${vuln.vendorProject}<\/span>\r\n                                    <span>\u0627\u0644\u0645\u0646\u062a\u062c: ${vuln.product}<\/span>\r\n                                    <span>\u0623\u064f\u0636\u064a\u0641: ${formatDate(vuln.dateAdded)}<\/span>\r\n                                <\/div>\r\n                                <div class=\"threat-source\">\u0627\u0644\u0625\u062c\u0631\u0627\u0621 \u0645\u0637\u0644\u0648\u0628 \u0628\u062d\u0644\u0648\u0644: ${formatDate(vuln.dueDate)}<\/div>\r\n                            <\/div>\r\n                        `;\r\n                    }).join('');\r\n                }\r\n                \r\n                updateTimestamp('kev-update-time');\r\n            } catch (error) {\r\n                console.error('Error fetching KEV data:', error);\r\n                showError('kev-list', '\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a KEV. \u064a\u0631\u062c\u0649 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0648\u0643\u064a\u0644.');\r\n            }\r\n        }\r\n\r\n        \/\/ Fetch Critical Threats from CVEDB\r\n        async function fetchCriticalThreats() {\r\n            try {\r\n                const response = await fetch(`${PROXY_URL}?type=critical`);\r\n                \r\n                if (!response.ok) throw new Error('Failed to fetch critical threats');\r\n                \r\n                const data = await response.json();\r\n                const cves = data.cves || [];\r\n                \r\n                const criticalThreats = cves.filter(cve => {\r\n                    const cvss = parseFloat(cve.cvss_v3 || cve.cvss || 0);\r\n                    return cvss >= 7.0;\r\n                }).slice(0, 15);\r\n                \r\n                const criticalList = document.getElementById('critical-list');\r\n                if (criticalThreats.length === 0) {\r\n                    criticalList.innerHTML = '<p style=\"text-align: center; color: #6c757d; padding: 20px;\">\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u062a\u0647\u062f\u064a\u062f\u0627\u062a \u062d\u0631\u062c\u0629.<\/p>';\r\n                } else {\r\n                    criticalList.innerHTML = criticalThreats.map(cve => {\r\n                        const cveId = cve.cve_id || 'N\/A';\r\n                        const description = cve.summary || '\u0644\u0627 \u064a\u0648\u062c\u062f \u0648\u0635\u0641 \u0645\u062a\u0627\u062d';\r\n                        const cvss = cve.cvss_v3 || cve.cvss || 'N\/A';\r\n                        const severity = getSeverityFromCVSS(cvss);\r\n                        const severityAr = getSeverityArabic(severity);\r\n                        const published = cve.published_time || '';\r\n                        const epss = cve.epss ? (cve.epss * 100).toFixed(2) + '%' : 'N\/A';\r\n                        \r\n                        return `\r\n                            <div class=\"threat-item\">\r\n                                <div class=\"threat-header\">\r\n                                    <span class=\"threat-id\">${cveId}<\/span>\r\n                                    <span class=\"severity-badge ${getSeverityClass(severity)}\">${severityAr} - ${cvss}<\/span>\r\n                                <\/div>\r\n                                <div class=\"threat-description\">${truncateText(description, 250)}<\/div>\r\n                                <div class=\"threat-meta\">\r\n                                    ${published ? `<span>\u0646\u064f\u0634\u0631: ${formatDate(published)}<\/span>` : ''}\r\n                                    <span>EPSS: ${epss}<\/span>\r\n                                <\/div>\r\n                            <\/div>\r\n                        `;\r\n                    }).join('');\r\n                }\r\n                \r\n                updateTimestamp('critical-update-time');\r\n            } catch (error) {\r\n                console.error('Error fetching critical threats:', error);\r\n                showError('critical-list', '\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u062d\u0631\u062c\u0629. \u064a\u0631\u062c\u0649 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0648\u0643\u064a\u0644.');\r\n            }\r\n        }\r\n\r\n        \/\/ Update threat level indicator\r\n        function updateThreatLevel(kevCount) {\r\n            const threatText = document.getElementById('threat-level-text');\r\n            const threatBars = document.querySelectorAll('.threat-bar');\r\n            \r\n            let level = '\u0645\u0646\u062e\u0641\u0636';\r\n            let activeCount = 1;\r\n            \r\n            if (kevCount > 1500) {\r\n                level = '\u062d\u0627\u062f';\r\n                activeCount = 5;\r\n            } else if (kevCount > 1200) {\r\n                level = '\u0639\u0627\u0644\u064a';\r\n                activeCount = 4;\r\n            } else if (kevCount > 900) {\r\n                level = '\u0645\u0631\u062a\u0641\u0639';\r\n                activeCount = 3;\r\n            } else if (kevCount > 500) {\r\n                level = '\u0645\u0639\u062a\u062f\u0644';\r\n                activeCount = 2;\r\n            }\r\n            \r\n            threatText.textContent = level;\r\n            \r\n            threatBars.forEach((bar, index) => {\r\n                if (index < activeCount) {\r\n                    bar.classList.add('active');\r\n                } else {\r\n                    bar.classList.remove('active');\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Update total threats count\r\n        function updateTotalThreats() {\r\n            const recent = parseInt(document.getElementById('recent-cves-count').textContent) || 0;\r\n            const exploits = parseInt(document.getElementById('active-exploits-count').textContent) || 0;\r\n            \r\n            const total = recent + exploits;\r\n            document.getElementById('total-threats-count').textContent = total;\r\n        }\r\n\r\n        \/\/ Update all data\r\n        async function updateAllData() {\r\n            const startTime = new Date();\r\n            \r\n            await Promise.all([\r\n                fetchLatestCVEs(),\r\n                fetchKEVData(),\r\n                fetchCriticalThreats()\r\n            ]);\r\n            \r\n            updateTotalThreats();\r\n            \r\n            document.getElementById('last-update-time').textContent = startTime.toLocaleString('ar-SA', {\r\n                month: 'short',\r\n                day: 'numeric',\r\n                year: 'numeric',\r\n                hour: '2-digit',\r\n                minute: '2-digit'\r\n            });\r\n        }\r\n\r\n        \/\/ Initialize\r\n        document.addEventListener('DOMContentLoaded', () => {\r\n            initCharts();\r\n            updateAllData();\r\n            setInterval(updateAllData, REFRESH_INTERVAL);\r\n        });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a\u0629 | \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0633\u062a\u062e\u0628\u0627\u0631\u064a\u0629 \u0641\u064a \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a \u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a\u0629 \u0645\u0631\u0627\u0642\u0628\u0629 \u0641\u0648\u0631\u064a\u0629 \u0644\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a\u0629 \u0627\u0644\u0639\u0627\u0644\u0645\u064a\u0629 \u0648\u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0648\u0627\u0644\u0647\u062c\u0645\u0627\u062a \u0627\u0644\u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0646\u0634\u0637\u0629 \u0645\u0635\u0627\u062f\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a: CVEDB (Shodan)\u060c \u0643\u062a\u0627\u0644\u0648\u062c CISA KEV\u060c CheckPoint ThreatCloud | \u062a\u062d\u062f\u064a\u062b \u0643\u0644 5 \u062f\u0642\u0627\u0626\u0642 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u062a\u0647\u062f\u064a\u062f \u0627\u0644\u062d\u0627\u0644\u064a: \u0645\u0631\u062a\u0641\u0639 \u0628\u0646\u0627\u0621\u064b \u0639\u0644\u0649 \u0646\u0634\u0627\u0637 \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0627\u0644\u0623\u062e\u064a\u0631 \u0648\u0627\u062a\u062c\u0627\u0647\u0627\u062a \u0627\u0644\u0627\u0633\u062a\u063a\u0644\u0627\u0644 \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0639\u0627\u0644\u0645 CVE \u062d\u062f\u064a\u062b\u0629 &#8211; \u0623\u062d\u062f\u062b<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/no-wrapper.php","meta":{"footnotes":""},"class_list":["post-4531","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/hackernews.ae\/ar\/wp-json\/wp\/v2\/pages\/4531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackernews.ae\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hackernews.ae\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hackernews.ae\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hackernews.ae\/ar\/wp-json\/wp\/v2\/comments?post=4531"}],"version-history":[{"count":7,"href":"https:\/\/hackernews.ae\/ar\/wp-json\/wp\/v2\/pages\/4531\/revisions"}],"predecessor-version":[{"id":4538,"href":"https:\/\/hackernews.ae\/ar\/wp-json\/wp\/v2\/pages\/4531\/revisions\/4538"}],"wp:attachment":[{"href":"https:\/\/hackernews.ae\/ar\/wp-json\/wp\/v2\/media?parent=4531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}