🔧 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 '
';
echo '- ¿Estás usando el usuario correcto? (' . ADMIN_USERNAME . ')
';
echo '- ¿Tu IP está bloqueada por intentos fallidos?
';
echo '- ¿Hay espacios extra en la contraseña?
';
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.
';
}
}
}
}
}
?>
📋 Pasos Recomendados:
- Prueba la contraseña que crees que debería funcionar
- Si no funciona, usa Reset de Emergencia (admin123)
- Limpia los bloqueos si tu IP está bloqueada
- Prueba el login en login.php
- Cambia la contraseña por una segura una vez dentro
🔒 Recordatorios de Seguridad:
- Elimina este archivo después de usarlo
- Usa siempre contraseñas seguras en producción
- No dejes archivos de diagnóstico en servidores públicos