🔧 Diagnóstico Completo de Login

⚠️ Herramienta de Emergencia:

Esta utilidad diagnostica y soluciona problemas de login del sistema WhatsApp Bot Manager.

'; echo '

📋 Estado Actual del Sistema:

'; echo '

Usuario administrador: ' . ADMIN_USERNAME . '

'; echo '

Hash actual: ' . substr(ADMIN_PASSWORD, 0, 60) . '...

'; echo '

Timeout de sesión: ' . (SESSION_TIMEOUT/60) . ' minutos

'; echo '

Intentos máximos: ' . MAX_LOGIN_ATTEMPTS . ' intentos

'; echo '

Tiempo de bloqueo: ' . (LOGIN_LOCKOUT_TIME/60) . ' minutos

'; echo '
'; // Verificar si hay bloqueos activos $attemptsFile = '.login_attempts.json'; if (file_exists($attemptsFile)) { $attempts = json_decode(file_get_contents($attemptsFile), true); if (!empty($attempts)) { echo '
'; echo '

🚫 Bloqueos Activos Detectados:

'; foreach ($attempts as $ip => $data) { echo '

IP: ' . $ip . ' - Intentos: ' . $data['attempts'] . ' - Bloqueado hasta: ' . date('Y-m-d H:i:s', $data['locked_until']) . '

'; } echo '
'; } } // Procesar acciones if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['action'])) { // Verificar contraseña if ($_POST['action'] === 'test_password') { $testPassword = $_POST['test_password'] ?? ''; echo '
'; echo '

🔍 Resultado de la Prueba:

'; echo '

Contraseña probada: ' . htmlspecialchars($testPassword) . '

'; echo '

Hash almacenado: ' . ADMIN_PASSWORD . '

'; if (password_verify($testPassword, ADMIN_PASSWORD)) { echo '
CORRECTO: La contraseña funciona perfectamente.
'; echo '

Diagnóstico: El problema no es la contraseña. Revisa:

'; echo ''; } else { echo '
INCORRECTO: La contraseña no coincide con el hash.
'; echo '

Diagnóstico: El hash en la base de datos no corresponde a la contraseña ingresada.

'; } echo '
'; } // Resetear contraseña a "admin123" if ($_POST['action'] === 'reset_admin123') { $defaultPassword = 'admin123'; $newHash = password_hash($defaultPassword, PASSWORD_DEFAULT); // Leer el archivo config.php $configFile = 'config/config.php'; $configContent = file_get_contents($configFile); // Reemplazar la línea del password $pattern = "/define\('ADMIN_PASSWORD', '[^']*'\);/"; $replacement = "define('ADMIN_PASSWORD', '" . $newHash . "');"; $newConfigContent = preg_replace($pattern, $replacement, $configContent); if (file_put_contents($configFile, $newConfigContent)) { echo '
Contraseña reseteada exitosamente!
'; echo '
🔑 Credenciales de acceso:
'; echo 'Usuario: admin
'; echo 'Contraseña: admin123
'; echo 'URL de login: login.php
'; // Log del cambio $logEntry = "[" . date('Y-m-d H:i:s') . "] Password reset to default from IP: " . $clientIP . PHP_EOL; file_put_contents('logs/system.log', $logEntry, FILE_APPEND | LOCK_EX); } else { echo '
❌ Error al actualizar el archivo de configuración.
'; } } // Limpiar bloqueos if ($_POST['action'] === 'clear_blocks') { if (file_exists($attemptsFile)) { unlink($attemptsFile); echo '
✅ Todos los bloqueos de IP han sido eliminados.
'; } else { echo '
⚠️ No hay bloqueos activos para eliminar.
'; } } // Contraseña personalizada if ($_POST['action'] === 'set_custom_password') { $newPassword = $_POST['new_password'] ?? ''; $confirmPassword = $_POST['confirm_password'] ?? ''; if (empty($newPassword) || empty($confirmPassword)) { echo '
❌ Todos los campos son requeridos.
'; } elseif ($newPassword !== $confirmPassword) { echo '
❌ Las contraseñas no coinciden.
'; } elseif (strlen($newPassword) < 4) { echo '
❌ La contraseña debe tener al menos 4 caracteres.
'; } else { $newHash = password_hash($newPassword, PASSWORD_DEFAULT); // Leer y actualizar config.php $configFile = 'config/config.php'; $configContent = file_get_contents($configFile); $pattern = "/define\('ADMIN_PASSWORD', '[^']*'\);/"; $replacement = "define('ADMIN_PASSWORD', '" . $newHash . "');"; $newConfigContent = preg_replace($pattern, $replacement, $configContent); if (file_put_contents($configFile, $newConfigContent)) { echo '
Contraseña personalizada establecida!
'; echo '
🔑 Nueva contraseña: ' . htmlspecialchars($newPassword) . '
'; } else { echo '
❌ Error al actualizar el archivo de configuración.
'; } } } } } ?>

🔍 Probar Contraseña Actual

Escribe la contraseña que crees que debería funcionar

🚨 Reset de Emergencia

Esto establecerá la contraseña por defecto: admin123


🔧 Establecer Contraseña Personalizada


🗑️ Limpiar Bloqueos de IP

Elimina todos los bloqueos por intentos de login fallidos

📋 Pasos Recomendados:

  1. Prueba la contraseña que crees que debería funcionar
  2. Si no funciona, usa Reset de Emergencia (admin123)
  3. Limpia los bloqueos si tu IP está bloqueada
  4. Prueba el login en login.php
  5. Cambia la contraseña por una segura una vez dentro

🔒 Recordatorios de Seguridad: