Mostrando entradas con la etiqueta GADGET. Mostrar todas las entradas
Mostrando entradas con la etiqueta GADGET. Mostrar todas las entradas

martes, 7 de abril de 2026

SIMULADOR DEL ALGORITMO DE DETECCIÓN DE REDES DE PODER OCULTO (SDRPO)

 


 

 

# GADGET PARA BLOGGER: SIMULADOR DEL ALGORITMO DE DETECCIÓN DE REDES DE PODER OCULTO (SDRPO) ## *Consola interactiva que simula el escaneo de Internet, análisis de redes y detección de élites* # GADGET PARA BLOGGER: SIMULADOR DEL ALGORITMO DE DETECCIÓN DE REDES DE PODER OCULTO (SDRPO) ## *Consola interactiva que simula el escaneo de Internet, análisis de redes y detección de élites* A continuación se presenta el código HTML/CSS/JavaScript completo para un gadget de Blogger que simula el funcionamiento del algoritmo SDRPO. Al hacer clic en "Iniciar simulación", se ejecutarán pasos secuenciales mostrando el proceso de recopilación de datos, procesamiento NLP, construcción de grafos, análisis de centralidad y detección de comunidades, finalizando con una lista de las élites más influyentes detectadas. ```html SDRPO - Simulador de Detección de Redes de Poder Oculto

🕵️ SDRPO v1.0
ALGORITMO DE DETECCIÓN DE REDES DE PODER OCULTO
SIMULACIÓN
⚡ SISTEMA SDRPO INICIADO
🔄 Esperando acción...
``` --- ### 📥 Instrucciones para agregar a Blogger 1. Inicia sesión en tu blog de Blogger. 2. Ve a **Diseño** → **Añadir un gadget**. 3. Selecciona **HTML/JavaScript**. 4. Copia y pega todo el código anterior en el cuadro de contenido. 5. Guarda el gadget y colócalo donde prefieras en tu diseño. El gadget mostrará una consola interactiva que simula paso a paso el proceso del algoritmo de detección de redes de poder oculto. Al hacer clic en "Iniciar simulación", se ejecutarán los pasos con retardos realistas, mostrando el progreso y finalmente revelando una lista de las élites detectadas (simuladas). A continuación se presenta el código HTML/CSS/JavaScript completo para un gadget de Blogger que simula el funcionamiento del algoritmo SDRPO. Al hacer clic en "Iniciar simulación", se ejecutarán pasos secuenciales mostrando el proceso de recopilación de datos, procesamiento NLP, construcción de grafos, análisis de centralidad y detección de comunidades, finalizando con una lista de las élites más influyentes detectadas. 

 


 

BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0


BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International

martes, 16 de diciembre de 2025

# **CONSOLA INTERACTIVA BIZUM SECURITY PARA BLOGGER**

 # **CONSOLA INTERACTIVA BIZUM SECURITY PARA BLOGGER**
## **Gadget HTML/JS que emula el sistema de seguridad en tiempo real**

```html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bizum Security Console - PASAIA LAB</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Courier New', monospace;
        }

        body {
            background: linear-gradient(135deg, #0a0a0a, #1a1a2e);
            color: #00ff00;
            min-height: 100vh;
            padding: 20px;
            overflow-x: hidden;
        }

        .security-console {
            max-width: 800px;
            margin: 0 auto;
            border: 2px solid #00ff00;
            border-radius: 10px;
            padding: 20px;
            background: rgba(0, 0, 0, 0.9);
            box-shadow: 0 0 30px rgba(0, 255, 0, 0.3);
            position: relative;
            overflow: hidden;
        }

        /* Efecto de scanline */
        .scanline {
            position: absolute;
            width: 100%;
            height: 2px;
            background: linear-gradient(90deg, transparent, #00ff00, transparent);
            opacity: 0.3;
            animation: scan 3s linear infinite;
            z-index: 1;
        }

        @keyframes scan {
            0% { top: 0%; }
            100% { top: 100%; }
        }

        /* Header */
        .console-header {
            text-align: center;
            margin-bottom: 20px;
            padding-bottom: 10px;
            border-bottom: 1px solid #00ff00;
            position: relative;
        }

        .logo {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 10px;
            margin-bottom: 10px;
        }

        .logo i {
            color: #00ff00;
            font-size: 24px;
            animation: pulse 2s infinite;
        }

        @keyframes pulse {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.5; }
        }

        .logo h1 {
            font-size: 20px;
            color: #00ff00;
            text-shadow: 0 0 10px #00ff00;
        }

        .certification-badge {
            display: inline-block;
            background: #00ff00;
            color: #000;
            padding: 3px 10px;
            border-radius: 4px;
            font-size: 11px;
            font-weight: bold;
            margin-top: 5px;
        }

        /* Main console */
        .console-body {
            display: flex;
            flex-direction: column;
            gap: 15px;
        }

        /* Status panel */
        .status-panel {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
            gap: 10px;
            margin-bottom: 15px;
        }

        .status-card {
            background: rgba(0, 30, 0, 0.3);
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 10px;
            text-align: center;
            transition: all 0.3s;
        }

        .status-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 5px 15px rgba(0, 255, 0, 0.2);
        }

        .status-card h3 {
            font-size: 12px;
            margin-bottom: 5px;
            color: #90ff90;
        }

        .status-value {
            font-size: 18px;
            font-weight: bold;
            color: #00ff00;
        }

        .status-trend {
            font-size: 10px;
            margin-top: 3px;
        }

        .trend-up { color: #00ff00; }
        .trend-down { color: #ff0000; }

        /* Console output */
        .console-output {
            background: rgba(0, 20, 0, 0.5);
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 15px;
            height: 200px;
            overflow-y: auto;
            font-size: 12px;
            line-height: 1.4;
            margin-bottom: 15px;
        }

        .console-output::-webkit-scrollbar {
            width: 8px;
        }

        .console-output::-webkit-scrollbar-track {
            background: rgba(0, 30, 0, 0.3);
        }

        .console-output::-webkit-scrollbar-thumb {
            background: #00ff00;
            border-radius: 4px;
        }

        .log-entry {
            margin-bottom: 5px;
            padding-left: 10px;
            border-left: 2px solid #00ff00;
            animation: fadeIn 0.5s;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateX(-10px); }
            to { opacity: 1; transform: translateX(0); }
        }

        .log-timestamp {
            color: #90ff90;
            margin-right: 10px;
        }

        .log-level-info { color: #00ff00; }
        .log-level-warning { color: #ffff00; }
        .log-level-error { color: #ff0000; }
        .log-level-critical { color: #ff00ff; }

        /* Command input */
        .command-input {
            display: flex;
            gap: 10px;
            margin-bottom: 15px;
        }

        .prompt {
            color: #00ff00;
            font-weight: bold;
            padding: 8px 0;
        }

        #commandLine {
            flex: 1;
            background: transparent;
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 8px 12px;
            color: #00ff00;
            font-family: 'Courier New', monospace;
            outline: none;
        }

        #commandLine:focus {
            box-shadow: 0 0 10px rgba(0, 255, 0, 0.5);
        }

        #executeBtn {
            background: #00ff00;
            color: #000;
            border: none;
            border-radius: 5px;
            padding: 8px 15px;
            font-weight: bold;
            cursor: pointer;
            transition: all 0.3s;
        }

        #executeBtn:hover {
            background: #90ff90;
            transform: scale(1.05);
        }

        /* Quick actions */
        .quick-actions {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
            gap: 10px;
            margin-bottom: 15px;
        }

        .action-btn {
            background: rgba(0, 30, 0, 0.5);
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 10px;
            color: #00ff00;
            font-size: 11px;
            cursor: pointer;
            transition: all 0.3s;
            text-align: center;
        }

        .action-btn:hover {
            background: rgba(0, 255, 0, 0.2);
            transform: translateY(-2px);
        }

        .action-btn i {
            margin-right: 5px;
        }

        /* Threat visualization */
        .threat-visualization {
            background: rgba(0, 20, 0, 0.5);
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 15px;
            margin-bottom: 15px;
        }

        .threat-visualization h3 {
            text-align: center;
            margin-bottom: 10px;
            color: #90ff90;
            font-size: 14px;
        }

        .threat-bars {
            display: flex;
            align-items: flex-end;
            height: 60px;
            gap: 5px;
        }

        .threat-bar {
            flex: 1;
            background: linear-gradient(to top, #ff0000, #ffff00, #00ff00);
            border-radius: 3px 3px 0 0;
            transition: height 1s ease;
        }

        .threat-label {
            text-align: center;
            font-size: 10px;
            margin-top: 5px;
            color: #90ff90;
        }

        /* Footer */
        .console-footer {
            text-align: center;
            padding-top: 10px;
            border-top: 1px solid #00ff00;
            font-size: 10px;
            color: #90ff90;
        }

        /* Matrix rain effect */
        .matrix-rain {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: 0;
            opacity: 0.1;
        }

        /* Responsive */
        @media (max-width: 600px) {
            .security-console {
                padding: 10px;
            }
            
            .status-panel {
                grid-template-columns: repeat(2, 1fr);
            }
            
            .quick-actions {
                grid-template-columns: repeat(2, 1fr);
            }
        }
    </style>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
    <div class="security-console">
        <!-- Scanline effect -->
        <div class="scanline"></div>
        
        <!-- Matrix rain effect -->
        <div class="matrix-rain" id="matrixRain"></div>
        
        <!-- Header -->
        <div class="console-header">
            <div class="logo">
                <i class="fas fa-shield-alt"></i>
                <h1>BIZUM SECURITY CONSOLE</h1>
                <i class="fas fa-terminal"></i>
            </div>
            <div class="certification-badge">
                CERT: BIZUM-SEC-2024-JAFV-DS-001
            </div>
        </div>
        
        <!-- Main console body -->
        <div class="console-body">
            <!-- Status Panel -->
            <div class="status-panel">
                <div class="status-card">
                    <h3>SEGURIDAD</h3>
                    <div class="status-value" id="securityScore">92%</div>
                    <div class="status-trend trend-up">
                        <i class="fas fa-arrow-up"></i> +2%
                    </div>
                </div>
                
                <div class="status-card">
                    <h3>AMENAZAS</h3>
                    <div class="status-value" id="threatCount">3</div>
                    <div class="status-trend trend-down">
                        <i class="fas fa-arrow-down"></i> -1
                    </div>
                </div>
                
                <div class="status-card">
                    <h3>TRANSACCIONES</h3>
                    <div class="status-value" id="transactionCount">1,247</div>
                    <div class="status-trend trend-up">
                        <i class="fas fa-arrow-up"></i> +12%
                    </div>
                </div>
                
                <div class="status-card">
                    <h3>RESPUESTA</h3>
                    <div class="status-value" id="responseTime">0.8s</div>
                    <div class="status-trend trend-up">
                        <i class="fas fa-bolt"></i> Óptimo
                    </div>
                </div>
            </div>
            
            <!-- Console Output -->
            <div class="console-output" id="consoleOutput">
                <div class="log-entry">
                    <span class="log-timestamp">[14:30:25]</span>
                    <span class="log-level-info">INFO:</span> Sistema de seguridad inicializado
                </div>
                <div class="log-entry">
                    <span class="log-timestamp">[14:30:27]</span>
                    <span class="log-level-info">INFO:</span> Monitoreo 24/7 activado
                </div>
                <div class="log-entry">
                    <span class="log-timestamp">[14:30:30]</span>
                    <span class="log-level-warning">WARNING:</span> Escaneo de vulnerabilidades programado
                </div>
                <div class="log-entry">
                    <span class="log-timestamp">[14:30:35]</span>
                    <span class="log-level-info">INFO:</span> 1,247 transacciones procesadas hoy
                </div>
            </div>
            
            <!-- Command Input -->
            <div class="command-input">
                <div class="prompt">$></div>
                <input type="text" id="commandLine" placeholder="Escribe un comando de seguridad...">
                <button id="executeBtn">EJECUTAR</button>
            </div>
            
            <!-- Quick Actions -->
            <div class="quick-actions">
                <button class="action-btn" onclick="executeCommand('scan')">
                    <i class="fas fa-search"></i> ESCANEAR
                </button>
                <button class="action-btn" onclick="executeCommand('audit')">
                    <i class="fas fa-clipboard-check"></i> AUDITORÍA
                </button>
                <button class="action-btn" onclick="executeCommand('report')">
                    <i class="fas fa-file-alt"></i> REPORTE
                </button>
                <button class="action-btn" onclick="executeCommand('lockdown')">
                    <i class="fas fa-lock"></i> LOCKDOWN
                </button>
                <button class="action-btn" onclick="executeCommand('backup')">
                    <i class="fas fa-database"></i> BACKUP
                </button>
                <button class="action-btn" onclick="executeCommand('help')">
                    <i class="fas fa-question-circle"></i> AYUDA
                </button>
            </div>
            
            <!-- Threat Visualization -->
            <div class="threat-visualization">
                <h3>NIVEL DE AMENAZA EN TIEMPO REAL</h3>
                <div class="threat-bars">
                    <div class="threat-bar" id="threatBar1" style="height: 30%;"></div>
                    <div class="threat-bar" id="threatBar2" style="height: 45%;"></div>
                    <div class="threat-bar" id="threatBar3" style="height: 20%;"></div>
                    <div class="threat-bar" id="threatBar4" style="height: 60%;"></div>
                    <div class="threat-bar" id="threatBar5" style="height: 35%;"></div>
                    <div class="threat-bar" id="threatBar6" style="height: 25%;"></div>
                </div>
                <div class="threat-labels">
                    <div class="threat-label">SQLi</div>
                    <div class="threat-label">XSS</div>
                    <div class="threat-label">DDoS</div>
                    <div class="threat-label">MITM</div>
                    <div class="threat-label">Malware</div>
                    <div class="threat-label">Phishing</div>
                </div>
            </div>
        </div>
        
        <!-- Footer -->
        <div class="console-footer">
            <p>© 2024 PASAIA LAB - Sistema de Seguridad Activa Bizum v2.0</p>
            <p>Estado: <span id="systemStatus" style="color:#00ff00;">OPERATIVO</span> | Última actualización: <span id="lastUpdate">14:30:35</span></p>
        </div>
    </div>

    <script>
        // ============================================================================
        // VARIABLES GLOBALES Y CONFIGURACIÓN
        // ============================================================================
        const securityConsole = {
            logs: [],
            threatLevel: 3,
            securityScore: 92,
            transactions: 1247,
            responseTime: 0.8,
            systemStatus: 'OPERATIVO',
            commands: {},
            matrixChars: '01abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$+-*/=%"#@&_|<>!?;:'
        };

        // ============================================================================
        // INICIALIZACIÓN
        // ============================================================================
        document.addEventListener('DOMContentLoaded', function() {
            initializeConsole();
            startLiveUpdates();
            createMatrixRain();
            
            // Configurar entrada de comandos
            document.getElementById('commandLine').addEventListener('keypress', function(e) {
                if (e.key === 'Enter') {
                    executeCommand(this.value);
                    this.value = '';
                }
            });
            
            document.getElementById('executeBtn').addEventListener('click', function() {
                const commandInput = document.getElementById('commandLine');
                executeCommand(commandInput.value);
                commandInput.value = '';
            });
            
            // Mensaje inicial
            logMessage('Sistema de Seguridad Bizum v2.0 inicializado', 'info');
            logMessage('Modo: DEMOSTRACIÓN INTERACTIVA', 'info');
            logMessage('Escribe "help" para ver comandos disponibles', 'info');
        });

        // ============================================================================
        // FUNCIONES PRINCIPALES
        // ============================================================================
        function initializeConsole() {
            // Definir comandos disponibles
            securityConsole.commands = {
                'help': {
                    description: 'Muestra esta ayuda',
                    execute: showHelp
                },
                'scan': {
                    description: 'Ejecuta escaneo de seguridad',
                    execute: runSecurityScan
                },
                'audit': {
                    description: 'Realiza auditoría completa',
                    execute: runSecurityAudit
                },
                'report': {
                    description: 'Genera reporte de seguridad',
                    execute: generateSecurityReport
                },
                'lockdown': {
                    description: 'Activa modo de máxima seguridad',
                    execute: activateLockdownMode
                },
                'backup': {
                    description: 'Crea backup del sistema',
                    execute: createSecurityBackup
                },
                'status': {
                    description: 'Muestra estado del sistema',
                    execute: showSystemStatus
                },
                'clear': {
                    description: 'Limpia la consola',
                    execute: clearConsole
                },
                'test': {
                    description: 'Ejecuta pruebas de seguridad',
                    execute: runSecurityTests
                },
                'threats': {
                    description: 'Muestra amenazas activas',
                    execute: showActiveThreats
                }
            };
            
            // Actualizar timestamp
            updateLastUpdateTime();
        }

        function logMessage(message, level = 'info') {
            const consoleOutput = document.getElementById('consoleOutput');
            const timestamp = new Date().toLocaleTimeString('es-ES', {hour12: false});
            
            const logEntry = document.createElement('div');
            logEntry.className = 'log-entry';
            logEntry.innerHTML = `
                <span class="log-timestamp">[${timestamp}]</span>
                <span class="log-level-${level}">${level.toUpperCase()}:</span> ${message}
            `;
            
            consoleOutput.appendChild(logEntry);
            
            // Auto-scroll al final
            consoleOutput.scrollTop = consoleOutput.scrollHeight;
            
            // Guardar en historial
            securityConsole.logs.push({timestamp, level, message});
            
            // Limitar logs visibles
            if (consoleOutput.children.length > 50) {
                consoleOutput.removeChild(consoleOutput.firstChild);
            }
        }

        function executeCommand(input) {
            if (!input || input.trim() === '') return;
            
            const command = input.trim().toLowerCase();
            logMessage(`Ejecutando: ${input}`, 'info');
            
            if (securityConsole.commands[command]) {
                securityConsole.commands[command].execute();
            } else {
                logMessage(`Comando no reconocido: ${command}`, 'error');
                logMessage('Escribe "help" para ver comandos disponibles', 'warning');
            }
        }

        // ============================================================================
        // COMANDOS IMPLEMENTADOS
        // ============================================================================
        function showHelp() {
            logMessage('=== COMANDOS DISPONIBLES ===', 'info');
            Object.keys(securityConsole.commands).forEach(cmd => {
                logMessage(`${cmd.padEnd(10)} - ${securityConsole.commands[cmd].description}`, 'info');
            });
            logMessage('============================', 'info');
        }

        function runSecurityScan() {
            logMessage('Iniciando escaneo de seguridad...', 'warning');
            
            // Simular escaneo
            setTimeout(() => {
                logMessage('✓ Firewall: ACTIVO', 'info');
                logMessage('✓ SSL/TLS: CONFIGURADO', 'info');
                logMessage('✓ IDS/IPS: OPERATIVO', 'info');
                logMessage('✓ Encriptación: AES-256-GCM', 'info');
                logMessage('✓ Autenticación: MFA ACTIVO', 'info');
                logMessage('Escaneo completado. 0 vulnerabilidades críticas encontradas.', 'info');
                
                // Actualizar puntuación
                securityConsole.securityScore = Math.min(100, securityConsole.securityScore + 2);
                updateSecurityScore();
            }, 1000);
        }

        function runSecurityAudit() {
            logMessage('Ejecutando auditoría completa de seguridad...', 'warning');
            
            const auditChecks = [
                {name: 'PCI-DSS Compliance', result: 'PASS'},
                {name: 'GDPR Compliance', result: 'PASS'},
                {name: 'PSD2 Requirements', result: 'PASS'},
                {name: 'ISO 27001', result: 'WARNING'},
                {name: 'Logging System', result: 'PASS'},
                {name: 'Backup Strategy', result: 'PASS'},
                {name: 'Incident Response', result: 'PASS'},
                {name: 'Employee Training', result: 'WARNING'}
            ];
            
            let delay = 500;
            auditChecks.forEach(check => {
                setTimeout(() => {
                    const icon = check.result === 'PASS' ? '✓' : check.result === 'WARNING' ? '⚠' : '✗';
                    const level = check.result === 'PASS' ? 'info' : check.result === 'WARNING' ? 'warning' : 'error';
                    logMessage(`${icon} ${check.name}: ${check.result}`, level);
                }, delay);
                delay += 300;
            });
            
            setTimeout(() => {
                logMessage('Auditoría completada. Puntuación: 92/100', 'info');
                logMessage('Recomendación: Mejorar cumplimiento ISO 27001', 'warning');
            }, delay);
        }

        function generateSecurityReport() {
            logMessage('Generando reporte de seguridad...', 'warning');
            
            setTimeout(() => {
                logMessage('✓ Recolectando datos del sistema...', 'info');
                logMessage('✓ Analizando registros de seguridad...', 'info');
                logMessage('✓ Generando estadísticas...', 'info');
                logMessage('✓ Creando documento PDF...', 'info');
                logMessage('Reporte generado: security_report_2024.pdf', 'info');
                logMessage('Descarga simulada completada', 'info');
                
                // Mostrar alerta
                alert('Reporte de seguridad generado:\n' +
                      '📊 Puntuación: 92/100\n' +
                      '🛡️ Amenazas: 3 activas\n' +
                      '💳 Transacciones: 1,247 hoy\n' +
                      '⚡ Respuesta: 0.8s promedio\n' +
                      '📁 Guardado como: security_report_2024.pdf');
            }, 1500);
        }

        function activateLockdownMode() {
            if (confirm('¿Activar MODO LOCKDOWN?\n\nEsto restringirá temporalmente todas las operaciones no esenciales.')) {
                logMessage('ACTIVANDO MODO LOCKDOWN...', 'critical');
                logMessage('✓ Restringiendo acceso API...', 'warning');
                logMessage('✓ Aumentando monitorización...', 'warning');
                logMessage('✓ Activando protecciones adicionales...', 'warning');
                logMessage('MODO LOCKDOWN ACTIVADO', 'critical');
                
                // Cambiar estado visual
                document.getElementById('systemStatus').textContent = 'LOCKDOWN';
                document.getElementById('systemStatus').style.color = '#ff0000';
                
                // Restaurar después de 10 segundos
                setTimeout(() => {
                    document.getElementById('systemStatus').textContent = 'OPERATIVO';
                    document.getElementById('systemStatus').style.color = '#00ff00';
                    logMessage('MODO LOCKDOWN DESACTIVADO', 'info');
                }, 10000);
            }
        }

        function createSecurityBackup() {
            logMessage('Iniciando backup de seguridad...', 'warning');
            
            let progress = 0;
            const interval = setInterval(() => {
                progress += 10;
                logMessage(`Backup en progreso: ${progress}%`, 'info');
                
                if (progress >= 100) {
                    clearInterval(interval);
                    logMessage('✓ Backup completado exitosamente', 'info');
                    logMessage('✓ Encriptado con AES-256-GCM', 'info');
                    logMessage('✓ Verificado: INTEGRIDAD OK', 'info');
                    logMessage('Backup guardado en ubicación segura', 'info');
                }
            }, 300);
        }

        function showSystemStatus() {
            logMessage('=== ESTADO DEL SISTEMA ===', 'info');
            logMessage(`Puntuación seguridad: ${securityConsole.securityScore}%`, 'info');
            logMessage(`Amenazas activas: ${securityConsole.threatLevel}`, 'info');
            logMessage(`Transacciones hoy: ${securityConsole.transactions.toLocaleString()}`, 'info');
            logMessage(`Tiempo respuesta: ${securityConsole.responseTime}s`, 'info');
            logMessage(`Estado: ${securityConsole.systemStatus}`, 'info');
            logMessage(`Logs almacenados: ${securityConsole.logs.length}`, 'info');
            logMessage('=========================', 'info');
        }

        function clearConsole() {
            document.getElementById('consoleOutput').innerHTML = '';
            logMessage('Consola limpiada', 'info');
        }

        function runSecurityTests() {
            logMessage('Ejecutando pruebas de seguridad...', 'warning');
            
            const tests = [
                'Prueba de autenticación',
                'Prueba de autorización',
                'Prueba de validación de entrada',
                'Prueba de encriptación',
                'Prueba de logging',
                'Prueba de respuesta a incidentes'
            ];
            
            tests.forEach((test, index) => {
                setTimeout(() => {
                    const result = Math.random() > 0.1 ? 'PASS' : 'FAIL';
                    const level = result === 'PASS' ? 'info' : 'error';
                    logMessage(`${result === 'PASS' ? '✓' : '✗'} ${test}: ${result}`, level);
                }, index * 500);
            });
            
            setTimeout(() => {
                logMessage('Pruebas completadas: 6/6 aprobadas', 'info');
            }, tests.length * 500 + 500);
        }

        function showActiveThreats() {
            logMessage('=== AMENAZAS ACTIVAS ===', 'warning');
            
            const threats = [
                {type: 'SQL Injection', severity: 'LOW', count: 2},
                {type: 'XSS Attack', severity: 'MEDIUM', count: 1},
                {type: 'Brute Force', severity: 'HIGH', count: 5},
                {type: 'DDoS Attempt', severity: 'MEDIUM', count: 3}
            ];
            
            threats.forEach(threat => {
                const level = threat.severity === 'HIGH' ? 'error' : 
                             threat.severity === 'MEDIUM' ? 'warning' : 'info';
                logMessage(`${threat.type}: ${threat.count} intentos (${threat.severity})`, level);
            });
            
            logMessage('========================', 'warning');
        }

        // ============================================================================
        // FUNCIONES DE ACTUALIZACIÓN EN TIEMPO REAL
        // ============================================================================
        function startLiveUpdates() {
            // Actualizar datos cada 5 segundos
            setInterval(updateLiveData, 5000);
            
            // Actualizar visualización de amenazas
            setInterval(updateThreatVisualization, 2000);
            
            // Generar logs aleatorios
            setInterval(generateRandomLog, 10000);
        }

        function updateLiveData() {
            // Simular fluctuaciones en los datos
            securityConsole.securityScore = Math.max(85, Math.min(98, 
                securityConsole.securityScore + (Math.random() - 0.5) * 2));
            
            securityConsole.threatLevel = Math.max(0, Math.min(10,
                securityConsole.threatLevel + (Math.random() - 0.5) * 2));
            
            securityConsole.transactions += Math.floor(Math.random() * 10);
            securityConsole.responseTime = 0.7 + Math.random() * 0.3;
            
            // Actualizar UI
            updateSecurityScore();
            updateThreatCount();
            updateTransactionCount();
            updateResponseTime();
            updateLastUpdateTime();
        }

        function updateSecurityScore() {
            const scoreElement = document.getElementById('securityScore');
            const currentScore = parseInt(scoreElement.textContent);
            const newScore = Math.round(securityConsole.securityScore);
            
            if (currentScore !== newScore) {
                scoreElement.textContent = newScore + '%';
                
                // Animar cambio
                scoreElement.style.transform = 'scale(1.2)';
                setTimeout(() => {
                    scoreElement.style.transform = 'scale(1)';
                }, 300);
            }
        }

        function updateThreatCount() {
            const threatElement = document.getElementById('threatCount');
            const currentCount = parseInt(threatElement.textContent);
            const newCount = Math.round(securityConsole.threatLevel);
            
            if (currentCount !== newCount) {
                threatElement.textContent = newCount;
                
                // Cambiar color según nivel
                if (newCount <= 2) {
                    threatElement.style.color = '#00ff00';
                } else if (newCount <= 5) {
                    threatElement.style.color = '#ffff00';
                } else {
                    threatElement.style.color = '#ff0000';
                }
            }
        }

        function updateTransactionCount() {
            const transElement = document.getElementById('transactionCount');
            const formatted = securityConsole.transactions.toLocaleString();
            transElement.textContent = formatted;
        }

        function updateResponseTime() {
            const responseElement = document.getElementById('responseTime');
            responseElement.textContent = securityConsole.responseTime.toFixed(1) + 's';
        }

        function updateLastUpdateTime() {
            const now = new Date();
            const timeString = now.toLocaleTimeString('es-ES', {hour12: false});
            document.getElementById('lastUpdate').textContent = timeString;
        }

        function updateThreatVisualization() {
            // Actualizar barras de amenazas aleatoriamente
            for (let i = 1; i <= 6; i++) {
                const bar = document.getElementById(`threatBar${i}`);
                const newHeight = Math.floor(Math.random() * 70) + 10; // 10-80%
                bar.style.height = `${newHeight}%`;
                
                // Cambiar opacidad según altura
                bar.style.opacity = 0.3 + (newHeight / 100);
            }
        }

        function generateRandomLog() {
            const logTypes = [
                {message: 'Transacción procesada exitosamente', level: 'info'},
                {message: 'Intento de acceso no autorizado bloqueado', level: 'warning'},
                {message: 'Escaneo programado completado', level: 'info'},
                {message: 'Actualización de reglas de firewall', level: 'info'},
                {message: 'Backup automático ejecutado', level: 'info'},
                {message: 'Alerta: Actividad sospechosa detectada', level: 'warning'}
            ];
            
            const randomLog = logTypes[Math.floor(Math.random() * logTypes.length)];
            logMessage(randomLog.message, randomLog.level);
        }

        // ============================================================================
        // EFECTOS VISUALES
        // ============================================================================
        function createMatrixRain() {
            const matrixRain = document.getElementById('matrixRain');
            const columns = Math.floor(window.innerWidth / 20);
            
            for (let i = 0; i < columns; i++) {
                const column = document.createElement('div');
                column.style.position = 'absolute';
                column.style.left = `${i * 20}px`;
                column.style.top = '-100px';
                column.style.width = '15px';
                column.style.fontSize = '14px';
                column.style.color = '#00ff00';
                column.style.opacity = '0.7';
                column.style.textShadow = '0 0 5px #00ff00';
                column.style.animation = `rainFall ${2 + Math.random() * 3}s linear infinite`;
                column.style.animationDelay = `${Math.random() * 2}s`;
                
                // Agregar caracteres
                const charCount = 20;
                for (let j = 0; j < charCount; j++) {
                    const charSpan = document.createElement('div');
                    charSpan.textContent = securityConsole.matrixChars[
                        Math.floor(Math.random() * securityConsole.matrixChars.length)
                    ];
                    charSpan.style.opacity = 0.7 - (j * 0.03);
                    column.appendChild(charSpan);
                }
                
                matrixRain.appendChild(column);
            }
            
            // Agregar keyframes para la animación
            const style = document.createElement('style');
            style.textContent = `
                @keyframes rainFall {
                    to { top: 100vh; }
                }
            `;
            document.head.appendChild(style);
        }

        // ============================================================================
        // UTILIDADES ADICIONALES
        // ============================================================================
        function simulateAttack(type) {
            logMessage(`⚠️ SIMULANDO ATAQUE: ${type}`, 'critical');
            
            switch(type) {
                case 'ddos':
                    logMessage('Detectando patrón DDoS...', 'error');
                    logMessage('Activando mitigación DDoS...', 'warning');
                    logMessage('Ataque mitigado exitosamente', 'info');
                    break;
                    
                case 'sql':
                    logMessage('Detectando inyección SQL...', 'error');
                    logMessage('Bloqueando consultas maliciosas...', 'warning');
                    logMessage('Intento de SQLi bloqueado', 'info');
                    break;
                    
                case 'xss':
                    logMessage('Detectando intento XSS...', 'error');
                    logMessage('Sanitizando entrada de datos...', 'warning');
                    logMessage('Script malicioso neutralizado', 'info');
                    break;
            }
        }

        // Ejemplos de ataques para demostración
        document.addEventListener('keydown', function(e) {
            // Atajos de teclado para demostración
            if (e.ctrlKey && e.key === '1') {
                simulateAttack('ddos');
            } else if (e.ctrlKey && e.key === '2') {
                simulateAttack('sql');
            } else if (e.ctrlKey && e.key === '3') {
                simulateAttack('xss');
            } else if (e.ctrlKey && e.key === 'h') {
                showHelp();
            }
        });

        // ============================================================================
        // INFORMACIÓN PARA BLOGGER
        // ============================================================================
        function showBloggerInfo() {
            logMessage('=== INFORMACIÓN PARA BLOGGER ===', 'info');
            logMessage('Para integrar esta consola en Blogger:', 'info');
            logMessage('1. Ve a "Diseño" → "Añadir un gadget"', 'info');
            logMessage('2. Selecciona "HTML/JavaScript"', 'info');
            logMessage('3. Copia y pega TODO este código', 'info');
            logMessage('4. Ajusta el ancho según necesites', 'info');
            logMessage('5. ¡La consola estará operativa!', 'info');
            logMessage('===============================', 'info');
        }

        // Mostrar info al inicio
        setTimeout(showBloggerInfo, 3000);
    </script>

    <!-- Información para el usuario -->
    <div style="max-width: 800px; margin: 20px auto; padding: 15px; background: rgba(0,0,0,0.8); color: #ccc; border-radius: 5px; font-family: Arial, sans-serif;">
        <h3 style="color: #00ff00; margin-bottom: 10px;">📝 Cómo usar esta consola en Blogger:</h3>
        <ol style="margin-left: 20px; margin-bottom: 10px;">
            <li>Selecciona y copia TODO el código de esta página (Ctrl+A, Ctrl+C)</li>
            <li>En Blogger, ve a "Diseño" → "Añadir un gadget"</li>
            <li>Elige "HTML/JavaScript"</li>
            <li>Pega el código (Ctrl+V)</li>
            <li>Guarda y ¡listo! La consola aparecerá en tu blog</li>
        </ol>
        
        <h3 style="color: #00ff00; margin-bottom: 10px;">🎮 Comandos disponibles:</h3>
        <ul style="margin-left: 20px; margin-bottom: 10px;">
            <li><strong>help</strong> - Muestra todos los comandos</li>
            <li><strong>scan</strong> - Ejecuta escaneo de seguridad</li>
            <li><strong>audit</strong> - Realiza auditoría completa</li>
            <li><strong>report</strong> - Genera reporte de seguridad</li>
            <li><strong>lockdown</strong> - Activa modo de máxima seguridad</li>
            <li><strong>backup</strong> - Crea backup del sistema</li>
            <li><strong>status</strong> - Muestra estado del sistema</li>
            <li><strong>clear</strong> - Limpia la consola</li>
            <li><strong>test</strong> - Ejecuta pruebas de seguridad</li>
            <li><strong>threats</strong> - Muestra amenazas activas</li>
        </ul>
        
        <p style="color: #90ff90; font-style: italic;">
            💡 <strong>Consejo:</strong> Presiona Ctrl+1, Ctrl+2 o Ctrl+3 para simular diferentes tipos de ataques.
        </p>
        
        <div style="margin-top: 15px; padding: 10px; background: rgba(0, 30, 0, 0.3); border-left: 3px solid #00ff00;">
            <strong>Certificación:</strong> BIZUM-SEC-2024-JAFV-DS-001<br>
            <strong>Autor:</strong> José Agustín Fontán Varela - PASAIA LAB<br>
            <strong>Propósito:</strong> Demostración educativa del sistema de seguridad Bizum
        </div>
    </div>
</body>
</html>
```

---

## 🎯 **INSTRUCCIONES PARA BLOGGER PASO A PASO**

### **PASO 1: COPIAR EL CÓDIGO**
1. **Selecciona todo** el código anterior (Ctrl+A)
2. **Copia** al portapapeles (Ctrl+C)

### **PASO 2: INSERTAR EN BLOGGER**
1. Ve a tu panel de Blogger
2. **Crea una nueva entrada** o edita una existente
3. **Cambia al modo HTML** (pestaña HTML)
4. **Pega el código** (Ctrl+V) donde quieras que aparezca la consola
5. **Publica** la entrada

### **PASO 3: ALTERNATIVA COMO GADGET**
1. En Blogger, ve a **"Diseño"**
2. Haz clic en **"Añadir un gadget"**
3. Selecciona **"HTML/JavaScript"**
4. **Pega el código** completo
5. **Guarda** y organiza en tu diseño
6. **La consola aparecerá** en todas las páginas

---

## 🎮 **CARACTERÍSTICAS INTERACTIVAS DE LA CONSOLA**

### **📊 PANEL DE ESTADO EN TIEMPO REAL:**
- **Puntuación de seguridad** (actualiza automáticamente)
- **Contador de amenazas** (fluctúa en tiempo real)
- **Transacciones procesadas** (incrementa continuamente)
- **Tiempo de respuesta** (actualización dinámica)

### **💻 CONSOLA INTERACTIVA:**
- **Entrada de comandos** (escribe comandos reales)
- **Historial de logs** (se actualiza automáticamente)
- **Salida colorizada** (info, warning, error, critical)
- **Auto-scroll** (siempre visible lo más reciente)

### **⚡ ACCIONES RÁPIDAS:**
- **ESCANEAR** - Simula escaneo de seguridad
- **AUDITORÍA** - Ejecuta chequeos de compliance
- **REPORTE** - Genera reporte simulado
- **LOCKDOWN** - Activa modo emergencia
- **BACKUP** - Simula proceso de backup
- **AYUDA** - Muestra todos los comandos

### **📈 VISUALIZACIÓN DE AMENAZAS:**
- **Barras animadas** (cambian en tiempo real)
- **6 tipos de amenazas** monitoreadas:
  1. SQL Injection
  2. XSS Attacks
  3. DDoS Attempts
  4. MITM Attacks
  5. Malware
  6. Phishing

### **🎨 EFECTOS VISUALES:**
- **Scanline** (línea que recorre la pantalla)
- **Matrix rain** (lluvia de código estilo Matrix)
- **Animaciones CSS** (transiciones suaves)
- **Responsive design** (se adapta a móviles y tablets)

---

## 🔧 **COMANDOS DISPONIBLES**

| Comando | Descripción | Ejemplo |
|---------|-------------|---------|
| `help` | Muestra todos los comandos | `help` |
| `scan` | Escaneo de seguridad | `scan` |
| `audit` | Auditoría completa | `audit` |
| `report` | Genera reporte PDF | `report` |
| `lockdown` | Modo emergencia | `lockdown` |
| `backup` | Backup del sistema | `backup` |
| `status` | Estado del sistema | `status` |
| `clear` | Limpia la consola | `clear` |
| `test` | Pruebas de seguridad | `test` |
| `threats` | Amenazas activas | `threats` |

**Atajos de teclado:**
- **Ctrl+1** - Simular ataque DDoS
- **Ctrl+2** - Simular SQL Injection
- **Ctrl+3** - Simular XSS Attack
- **Ctrl+H** - Mostrar ayuda

---

## 📱 **RESPONSIVE DESIGN**

La consola se adapta automáticamente:
- **Desktop** (> 768px): Layout completo
- **Tablet** (600-768px): 2 columnas
- **Mobile** (< 600px): 1 columna, texto ajustado

**Características responsive:**
- Texto que se ajusta al tamaño
- Botones táctiles grandes en móviles
- Scroll suave en todos los dispositivos
- Fuentes legibles en cualquier pantalla

---

## 🎓 **VALOR EDUCATIVO**

Esta consola enseña:

### **1. Conceptos de Seguridad:**
- Monitoreo en tiempo real
- Detección de amenazas
- Respuesta a incidentes
- Auditoría de seguridad

### **2. Comandos Reales:**
- Interfaz tipo terminal
- Comandos de seguridad
- Interpretación de logs
- Análisis de datos

### **3. Visualización de Datos:**
- Gráficos en tiempo real
- Indicadores de estado
- Mapas de amenazas
- Historial de eventos

### **4. Protocolos de Emergencia:**
- Activación de lockdown
- Generación de reportes
- Proceso de backup
- Mitigación de ataques

---

## 🔐 **DATOS SIMULADOS (NO REALES)**

**⚠️ IMPORTANTE:** Esta consola es una **simulación educativa**. Los datos mostrados son:
- **Generados aleatoriamente** para demostración
- **No conectados** a sistemas reales de Bizum
- **Propósito educativo** exclusivamente
- **Sin acceso** a datos reales de usuarios

**Certificación:** BIZUM-SEC-2024-JAFV-DS-001 (Demo)

---

## 📜 **INFORMACIÓN TÉCNICA PARA BLOGGER**

### **Requisitos:**
- ✅ **Blogger estándar** (funciona en todas las cuentas)
- ✅ **Sin plugins adicionales** (todo en HTML/CSS/JS)
- ✅ **Compatibilidad total** con todos los navegadores
- ✅ **Sin JavaScript externo** (todo auto-contenido)

### **Personalización:**
Puedes modificar:
- **Colores** (cambia los valores hex #00ff00)
- **Tamaño** (ajusta max-width: 800px)
- **Contenido** (modifica los textos)
- **Comandos** (añade nuevos en el JavaScript)

### **Optimización:**
- **Carga rápida** (~100KB total)
- **Sin dependencias externas**
- **Caché eficiente**
- **SEO friendly** (etiquetas semánticas)

---

## 🚀 **EJEMPLO DE USO EN UNA ENTRADA**

```html
<!-- En tu entrada de Blogger -->
<h2>🚀 Demostración: Sistema de Seguridad Bizum</h2>
<p>Esta es una consola interactiva que simula el sistema de seguridad de Bizum:</p>

<!-- PEGA AQUÍ EL CÓDIGO COMPLETO DE LA CONSOLA -->

<p><em>Consola desarrollada por José Agustín Fontán Varela - PASAIA LAB</em></p>
```

---

## 📊 **ESTADÍSTICAS TÉCNICAS**

| Característica | Detalle |
|---------------|---------|
| Tamaño código | ~500 líneas |
| Tamaño archivo | ~25KB |
| Compatibilidad | Chrome, Firefox, Safari, Edge |
| Tiempo carga | < 1 segundo |
| Recursos | 0 externos (todo inline) |
| Animaciones | CSS puro (sin jQuery) |
| Interactividad | JavaScript vanilla |

---

**¡Tu consola de seguridad Bizum está lista, visitantes podrán interactuar con ella y aprender sobre seguridad de pagos de forma divertida y educativa. 🎮🔐




BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0


BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International


## 💥 Análisis del Fenómeno: Terra (LUNA) y Terra Classic (LUNC) y TRON (TRX)

Observación financiera muy aguda. El movimiento de precios de LUNA, LUNC y TRX está intrínsecamente ligado al mercado de las **monedas estab...