|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Zoom Meeting Simulation</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> |
|
|
@keyframes pulse { |
|
|
0%, 100% { transform: scale(1); } |
|
|
50% { transform: scale(1.05); } |
|
|
} |
|
|
.ringing-animation { |
|
|
animation: pulse 1.5s infinite; |
|
|
} |
|
|
.video-container { |
|
|
position: relative; |
|
|
padding-bottom: 56.25%; |
|
|
height: 0; |
|
|
overflow: hidden; |
|
|
} |
|
|
.video-feed { |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: 0; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
object-fit: cover; |
|
|
} |
|
|
.blur-effect { |
|
|
backdrop-filter: blur(10px); |
|
|
-webkit-backdrop-filter: blur(10px); |
|
|
} |
|
|
.zoom-modal { |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
.zoom-modal.show { |
|
|
opacity: 1; |
|
|
transform: translateY(0); |
|
|
} |
|
|
.zoom-modal.hide { |
|
|
opacity: 0; |
|
|
transform: translateY(20px); |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="bg-gray-100 font-sans"> |
|
|
<div id="app" class="min-h-screen flex flex-col"> |
|
|
|
|
|
<div id="incomingCall" class="fixed inset-0 bg-gray-900 flex items-center justify-center z-50 transition-opacity duration-500"> |
|
|
<div class="bg-white rounded-xl overflow-hidden shadow-2xl w-full max-w-md mx-4"> |
|
|
<div class="bg-blue-600 p-6 text-center"> |
|
|
<div class="ringing-animation inline-block mb-4"> |
|
|
<i class="fas fa-phone-alt text-white text-4xl"></i> |
|
|
</div> |
|
|
<h2 class="text-2xl font-bold text-white">Incoming Zoom Meeting</h2> |
|
|
</div> |
|
|
<div class="p-6 text-center"> |
|
|
<div class="flex justify-center mb-6"> |
|
|
<div class="w-20 h-20 rounded-full bg-blue-100 flex items-center justify-center"> |
|
|
<i class="fas fa-user text-blue-600 text-3xl"></i> |
|
|
</div> |
|
|
</div> |
|
|
<h3 class="text-xl font-semibold text-gray-800">Meeting Host</h3> |
|
|
<p class="text-gray-600 mt-1">Daily Standup Meeting</p> |
|
|
<p class="text-gray-500 text-sm mt-2">Meeting ID: 123 456 7890</p> |
|
|
|
|
|
<div class="mt-8 flex justify-center space-x-4"> |
|
|
<button id="declineBtn" class="px-6 py-3 bg-red-500 text-white rounded-full hover:bg-red-600 transition flex items-center"> |
|
|
<i class="fas fa-times mr-2"></i> Decline |
|
|
</button> |
|
|
<button id="acceptBtn" class="px-6 py-3 bg-green-500 text-white rounded-full hover:bg-green-600 transition flex items-center"> |
|
|
<i class="fas fa-phone-alt mr-2"></i> Accept |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
<audio id="ringtone" loop> |
|
|
<source src="https://assets.mixkit.co/sfx/preview/mixkit-classic-phone-ring-1129.mp3" type="audio/mpeg"> |
|
|
</audio> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="meetingScreen" class="hidden fixed inset-0 bg-gray-900 flex flex-col z-40"> |
|
|
|
|
|
<div class="bg-gray-800 text-white p-3 flex justify-between items-center"> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-shield-alt text-green-400 mr-2"></i> |
|
|
<span class="text-sm">Zoom Meeting</span> |
|
|
</div> |
|
|
<div class="flex items-center space-x-4"> |
|
|
<button class="text-white hover:text-gray-300"> |
|
|
<i class="fas fa-microphone"></i> |
|
|
</button> |
|
|
<button class="text-white hover:text-gray-300"> |
|
|
<i class="fas fa-video"></i> |
|
|
</button> |
|
|
<button class="text-white hover:text-gray-300"> |
|
|
<i class="fas fa-cog"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex-1 relative"> |
|
|
<div class="video-container"> |
|
|
<video id="userVideo" class="video-feed bg-gray-800" autoplay playsinline></video> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="authModal" class="zoom-modal hide absolute inset-0 flex items-center justify-center p-4"> |
|
|
<div class="bg-white rounded-xl shadow-xl w-full max-w-md overflow-hidden"> |
|
|
<div class="bg-blue-600 p-4 text-white"> |
|
|
<h3 class="text-lg font-semibold">Sign in to Zoom</h3> |
|
|
<p class="text-sm opacity-90">To join this meeting</p> |
|
|
</div> |
|
|
<div class="p-6"> |
|
|
<div class="mb-4"> |
|
|
<label class="block text-gray-700 text-sm font-medium mb-2" for="email"> |
|
|
Email |
|
|
</label> |
|
|
<input id="email" type="email" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="[email protected]"> |
|
|
</div> |
|
|
<div class="mb-6"> |
|
|
<label class="block text-gray-700 text-sm font-medium mb-2" for="password"> |
|
|
Password |
|
|
</label> |
|
|
<input id="password" type="password" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="••••••••"> |
|
|
</div> |
|
|
<button id="signInBtn" class="w-full bg-blue-600 text-white py-2 px-4 rounded-md hover:bg-blue-700 transition flex items-center justify-center"> |
|
|
<i class="fas fa-sign-in-alt mr-2"></i> Sign In |
|
|
</button> |
|
|
<p class="text-xs text-gray-500 mt-4 text-center"> |
|
|
This is a simulation. No data will be collected. |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="errorModal" class="zoom-modal hide absolute inset-0 flex items-center justify-center p-4"> |
|
|
<div class="bg-white rounded-xl shadow-xl w-full max-w-md overflow-hidden"> |
|
|
<div class="bg-red-500 p-4 text-white"> |
|
|
<h3 class="text-lg font-semibold">Sign In Failed</h3> |
|
|
</div> |
|
|
<div class="p-6 text-center"> |
|
|
<div class="mb-4 text-red-500"> |
|
|
<i class="fas fa-exclamation-circle text-4xl"></i> |
|
|
</div> |
|
|
<p class="text-gray-700 mb-6"> |
|
|
Invalid email or password. Please try again. |
|
|
</p> |
|
|
<button id="tryAgainBtn" class="w-full bg-blue-600 text-white py-2 px-4 rounded-md hover:bg-blue-700 transition"> |
|
|
Try Again |
|
|
</button> |
|
|
<p class="text-xs text-gray-500 mt-4 text-center"> |
|
|
This is a simulation. No data will be collected. |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="bg-gray-800 text-white p-3 flex justify-center space-x-6"> |
|
|
<button class="p-2 rounded-full hover:bg-gray-700"> |
|
|
<i class="fas fa-microphone text-xl"></i> |
|
|
</button> |
|
|
<button class="p-2 rounded-full hover:bg-gray-700"> |
|
|
<i class="fas fa-video text-xl"></i> |
|
|
</button> |
|
|
<button class="p-2 rounded-full hover:bg-gray-700"> |
|
|
<i class="fas fa-desktop text-xl"></i> |
|
|
</button> |
|
|
<button class="p-2 rounded-full bg-red-500 hover:bg-red-600"> |
|
|
<i class="fas fa-phone-slash text-xl"></i> |
|
|
</button> |
|
|
<button class="p-2 rounded-full hover:bg-gray-700"> |
|
|
<i class="fas fa-ellipsis-h text-xl"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="completeScreen" class="hidden fixed inset-0 bg-gray-900 flex items-center justify-center z-50"> |
|
|
<div class="bg-white rounded-xl p-8 max-w-md mx-4 text-center"> |
|
|
<div class="text-green-500 mb-4"> |
|
|
<i class="fas fa-check-circle text-5xl"></i> |
|
|
</div> |
|
|
<h2 class="text-2xl font-bold text-gray-800 mb-2">Simulation Complete</h2> |
|
|
<p class="text-gray-600 mb-6"> |
|
|
This was a demonstration of how phishing attempts might appear in video conferencing apps. |
|
|
</p> |
|
|
<div class="bg-blue-50 p-4 rounded-lg mb-6"> |
|
|
<h4 class="font-semibold text-blue-800 mb-2">Security Tips:</h4> |
|
|
<ul class="text-sm text-blue-700 text-left space-y-1"> |
|
|
<li><i class="fas fa-check-circle text-blue-500 mr-2"></i> Always verify meeting links</li> |
|
|
<li><i class="fas fa-check-circle text-blue-500 mr-2"></i> Never enter credentials on unexpected prompts</li> |
|
|
<li><i class="fas fa-check-circle text-blue-500 mr-2"></i> Use multi-factor authentication</li> |
|
|
</ul> |
|
|
</div> |
|
|
<button id="restartBtn" class="bg-blue-600 text-white px-6 py-2 rounded-md hover:bg-blue-700 transition"> |
|
|
<i class="fas fa-redo mr-2"></i> Run Again |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="fixed bottom-4 right-4 z-50"> |
|
|
<button id="infoBtn" class="bg-blue-600 text-white w-10 h-10 rounded-full flex items-center justify-center shadow-lg hover:bg-blue-700 transition"> |
|
|
<i class="fas fa-info"></i> |
|
|
</button> |
|
|
<div id="infoPanel" class="hidden absolute bottom-full right-0 mb-2 w-64 bg-white rounded-lg shadow-xl p-4"> |
|
|
<h3 class="font-bold text-gray-800 mb-2">Zoom Simulation</h3> |
|
|
<p class="text-sm text-gray-600"> |
|
|
This is an educational simulation demonstrating how phishing attempts might appear in video conferencing apps. |
|
|
</p> |
|
|
<p class="text-xs text-gray-500 mt-2"> |
|
|
No data is collected. This is for awareness purposes only. |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
|
|
|
const incomingCall = document.getElementById('incomingCall'); |
|
|
const meetingScreen = document.getElementById('meetingScreen'); |
|
|
const completeScreen = document.getElementById('completeScreen'); |
|
|
const acceptBtn = document.getElementById('acceptBtn'); |
|
|
const declineBtn = document.getElementById('declineBtn'); |
|
|
const authModal = document.getElementById('authModal'); |
|
|
const errorModal = document.getElementById('errorModal'); |
|
|
const signInBtn = document.getElementById('signInBtn'); |
|
|
const tryAgainBtn = document.getElementById('tryAgainBtn'); |
|
|
const restartBtn = document.getElementById('restartBtn'); |
|
|
const userVideo = document.getElementById('userVideo'); |
|
|
const ringtone = document.getElementById('ringtone'); |
|
|
const infoBtn = document.getElementById('infoBtn'); |
|
|
const infoPanel = document.getElementById('infoPanel'); |
|
|
|
|
|
|
|
|
ringtone.play().catch(e => console.log("Auto-play prevented:", e)); |
|
|
|
|
|
|
|
|
acceptBtn.addEventListener('click', function() { |
|
|
incomingCall.classList.add('hidden'); |
|
|
ringtone.pause(); |
|
|
|
|
|
|
|
|
if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { |
|
|
navigator.mediaDevices.getUserMedia({ video: true }) |
|
|
.then(function(stream) { |
|
|
userVideo.srcObject = stream; |
|
|
meetingScreen.classList.remove('hidden'); |
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
authModal.classList.remove('hide'); |
|
|
authModal.classList.add('show'); |
|
|
}, 1500); |
|
|
}) |
|
|
.catch(function(error) { |
|
|
console.error("Camera error:", error); |
|
|
|
|
|
meetingScreen.classList.remove('hidden'); |
|
|
setTimeout(() => { |
|
|
authModal.classList.remove('hide'); |
|
|
authModal.classList.add('show'); |
|
|
}, 1500); |
|
|
}); |
|
|
} else { |
|
|
|
|
|
meetingScreen.classList.remove('hidden'); |
|
|
setTimeout(() => { |
|
|
authModal.classList.remove('hide'); |
|
|
authModal.classList.add('show'); |
|
|
}, 1500); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
declineBtn.addEventListener('click', function() { |
|
|
incomingCall.classList.add('opacity-0'); |
|
|
ringtone.pause(); |
|
|
setTimeout(() => { |
|
|
incomingCall.classList.add('hidden'); |
|
|
completeScreen.classList.remove('hidden'); |
|
|
}, 500); |
|
|
}); |
|
|
|
|
|
|
|
|
signInBtn.addEventListener('click', function() { |
|
|
|
|
|
signInBtn.innerHTML = '<i class="fas fa-spinner fa-spin mr-2"></i> Signing In...'; |
|
|
signInBtn.disabled = true; |
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
authModal.classList.remove('show'); |
|
|
authModal.classList.add('hide'); |
|
|
|
|
|
setTimeout(() => { |
|
|
errorModal.classList.remove('hide'); |
|
|
errorModal.classList.add('show'); |
|
|
}, 300); |
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
signInBtn.innerHTML = '<i class="fas fa-sign-in-alt mr-2"></i> Sign In'; |
|
|
signInBtn.disabled = false; |
|
|
}, 1000); |
|
|
}, 2000); |
|
|
}); |
|
|
|
|
|
|
|
|
tryAgainBtn.addEventListener('click', function() { |
|
|
errorModal.classList.remove('show'); |
|
|
errorModal.classList.add('hide'); |
|
|
|
|
|
setTimeout(() => { |
|
|
authModal.classList.remove('hide'); |
|
|
authModal.classList.add('show'); |
|
|
}, 300); |
|
|
}); |
|
|
|
|
|
|
|
|
restartBtn.addEventListener('click', function() { |
|
|
completeScreen.classList.add('hidden'); |
|
|
incomingCall.classList.remove('hidden', 'opacity-0'); |
|
|
meetingScreen.classList.add('hidden'); |
|
|
|
|
|
|
|
|
authModal.classList.remove('show'); |
|
|
authModal.classList.add('hide'); |
|
|
errorModal.classList.remove('show'); |
|
|
errorModal.classList.add('hide'); |
|
|
|
|
|
|
|
|
if(userVideo.srcObject) { |
|
|
userVideo.srcObject.getTracks().forEach(track => track.stop()); |
|
|
} |
|
|
|
|
|
|
|
|
ringtone.currentTime = 0; |
|
|
ringtone.play().catch(e => console.log("Auto-play prevented:", e)); |
|
|
}); |
|
|
|
|
|
|
|
|
infoBtn.addEventListener('click', function() { |
|
|
infoPanel.classList.toggle('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
document.addEventListener('click', function(e) { |
|
|
if(!infoBtn.contains(e.target) && !infoPanel.contains(e.target)) { |
|
|
infoPanel.classList.add('hidden'); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
</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=Zapresh/zooonmlnk" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |