| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>XortronOS // CyberDesktop</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"> | |
| <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=Share+Tech+Mono&family=Orbitron:wght@400;700&display=swap" rel="stylesheet"> | |
| <style> | |
| :root { | |
| --primary: #00f0ff; | |
| --secondary: #ff00f0; | |
| --dark: #0a0a12; | |
| --darker: #050508; | |
| --light: #e0e0ff; | |
| } | |
| body { | |
| font-family: 'Share Tech Mono', monospace; | |
| background-color: var(--darker); | |
| color: var(--light); | |
| overflow: hidden; | |
| height: 100vh; | |
| user-select: none; | |
| } | |
| .cyber-font { font-family: 'Orbitron', sans-serif; } | |
| .window { | |
| border: 1px solid var(--primary); | |
| box-shadow: 0 0 15px var(--primary), inset 0 0 10px var(--primary); | |
| background: rgba(10, 10, 20, 0.9); | |
| border-radius: 0; | |
| } | |
| .window-header { | |
| background: linear-gradient(90deg, #0a0a20, #1a1a3a); | |
| border-bottom: 1px solid var(--primary); | |
| padding: 5px 10px; | |
| } | |
| .terminal { | |
| background-color: rgba(0, 0, 0, 0.85); | |
| font-family: 'Share Tech Mono', monospace; | |
| color: #00ff00; | |
| text-shadow: 0 0 5px #00ff00; | |
| } | |
| .terminal input { | |
| caret-color: #00ff00; | |
| font-family: 'Share Tech Mono', monospace; | |
| font-size: inherit; | |
| } | |
| .glow-text { text-shadow: 0 0 5px var(--primary), 0 0 10px var(--primary); } | |
| .taskbar { | |
| background: rgba(5, 5, 15, 0.9); | |
| border-top: 1px solid var(--primary); | |
| box-shadow: 0 0 20px var(--primary); | |
| } | |
| .icon { text-align: center; width: 80px; padding: 10px 5px; margin: 5px; border-radius: 5px; } | |
| .icon:hover { background: rgba(0, 240, 255, 0.2); } | |
| .icon:active { background: rgba(0, 240, 255, 0.4); } | |
| .file { padding: 5px; margin: 2px; border-radius: 3px; } | |
| .file:hover { background: rgba(0, 240, 255, 0.1); } | |
| .cursor-blink { animation: blink 1s infinite; } | |
| @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } | |
| .pulse { animation: pulse 2s infinite; } | |
| @keyframes pulse { 0% { opacity: 0.5; } 50% { opacity: 1; } 100% { opacity: 0.5; } } | |
| ::-webkit-scrollbar { width: 8px; height: 8px; } | |
| ::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.2); } | |
| ::-webkit-scrollbar-thumb { background: var(--primary); } | |
| .matrix-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; opacity: 0.5; } | |
| .browser-nav { background: rgba(15, 15, 25, 0.9); border-bottom: 1px solid var(--primary); padding: 5px; } | |
| .url-bar { | |
| background: rgba(0, 0, 0, 0.5); border: 1px solid var(--primary); | |
| color: var(--light); padding: 3px 10px; width: 100%; border-radius: 3px; | |
| } | |
| button { border: 1px solid var(--primary); padding: 2px 8px; margin: 2px; border-radius: 3px; background-color: rgba(0, 240, 255, 0.1); transition: background-color 0.2s; } | |
| button:hover { background-color: rgba(0, 240, 255, 0.3); } | |
| button:active { background-color: rgba(0, 240, 255, 0.5); } | |
| .window-header button { border: none; background-color: transparent; } | |
| .window-header button:hover { background-color: rgba(255,255,255,0.1); } | |
| .hack-tool-card { transition: all 0.2s; } | |
| .hack-tool-card:hover { border-color: var(--primary) ; box-shadow: 0 0 10px var(--primary); } | |
| .hack-tool-card.active { border-color: #22c55e ; box-shadow: 0 0 10px #22c55e; } | |
| .tool-output { | |
| background: rgba(0,0,0,0.6); border: 1px solid #333; border-radius: 4px; | |
| padding: 8px; margin-top: 8px; font-size: 11px; color: #00ff00; | |
| white-space: pre-wrap; max-height: 150px; overflow-y: auto; | |
| } | |
| .file-sidebar-item.active { background: rgba(0, 240, 255, 0.15); border-left: 2px solid var(--primary); } | |
| </style> | |
| </head> | |
| <body> | |
| <canvas id="matrix" class="matrix-bg"></canvas> | |
| <div class="absolute left-0 top-0 p-4 flex flex-col"> | |
| <div class="icon" onclick="openApp('terminal')"> | |
| <div class="text-3xl text-center mb-1"><i class="fas fa-terminal text-green-500"></i></div> | |
| <div class="text-xs text-center">Terminal</div> | |
| </div> | |
| <div class="icon" onclick="openApp('file-explorer')"> | |
| <div class="text-3xl text-center mb-1"><i class="fas fa-folder text-yellow-500"></i></div> | |
| <div class="text-xs text-center">Files</div> | |
| </div> | |
| <div class="icon" onclick="openApp('hack-tools')"> | |
| <div class="text-3xl text-center mb-1"><i class="fas fa-user-secret text-red-500"></i></div> | |
| <div class="text-xs text-center">Hack Tools</div> | |
| </div> | |
| <div class="icon" onclick="openApp('network')"> | |
| <div class="text-3xl text-center mb-1"><i class="fas fa-network-wired text-blue-500"></i></div> | |
| <div class="text-xs text-center">Network</div> | |
| </div> | |
| <div class="icon" onclick="openApp('browser')"> | |
| <div class="text-3xl text-center mb-1"><i class="fas fa-globe text-purple-500"></i></div> | |
| <div class="text-xs text-center">DarkBrowser</div> | |
| </div> | |
| <div class="icon" onclick="window.open('https://ko-fi.com/xortron', '_blank')" title="Support the developer!"> | |
| <div class="text-3xl text-center mb-1"><i class="fas fa-coffee text-yellow-600"></i></div> | |
| <div class="text-xs text-center">Buy me a Coffee</div> | |
| </div> | |
| </div> | |
| <div id="windows-container"> | |
| <!-- Terminal --> | |
| <div id="terminal-window" class="window absolute top-16 left-16 w-2/3 h-2/3 hidden" style="z-index: 10;"> | |
| <div class="window-header flex justify-between items-center cursor-move"> | |
| <div class="flex items-center"> | |
| <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div> | |
| <span class="cyber-font ml-2">Xortron-Terminal</span> | |
| </div> | |
| <div class="text-xs">root@xortron-os:~</div> | |
| <div class="flex"> | |
| <button class="px-2" onclick="minimizeWindow('terminal')">_</button> | |
| <button class="px-2" onclick="maximizeWindow('terminal')">□</button> | |
| <button class="px-2" onclick="closeWindow('terminal')">×</button> | |
| </div> | |
| </div> | |
| <div class="terminal p-2 h-[calc(100%-35px)] overflow-auto" id="terminal-content"> | |
| <div>Xortron Operating System v7.7.7</div> | |
| <div>Kernel 5.15.0-76-generic x86_64</div> | |
| <br> | |
| <div>Last login: <span id="login-time"></span> from 192.168.1.105</div> | |
| <br> | |
| </div> | |
| </div> | |
| <!-- File Explorer --> | |
| <div id="file-explorer-window" class="window absolute top-32 left-32 w-1/2 h-1/2 hidden" style="z-index: 9;"> | |
| <div class="window-header flex justify-between items-center cursor-move"> | |
| <div class="flex items-center"> | |
| <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div> | |
| <span class="cyber-font ml-2">Xortron-Files</span> | |
| </div> | |
| <div class="text-xs" id="file-path-display">/root</div> | |
| <div class="flex"> | |
| <button class="px-2" onclick="minimizeWindow('file-explorer')">_</button> | |
| <button class="px-2" onclick="maximizeWindow('file-explorer')">□</button> | |
| <button class="px-2" onclick="closeWindow('file-explorer')">×</button> | |
| </div> | |
| </div> | |
| <div class="p-2 h-[calc(100%-35px)] overflow-auto"> | |
| <div class="flex h-full"> | |
| <div class="w-1/4 border-r border-gray-700 pr-2" id="file-sidebar"> | |
| <div class="text-xs text-gray-400 mb-2">LOCATIONS</div> | |
| <div class="file file-sidebar-item flex items-center py-1 cursor-pointer active" onclick="navigateDir('home')"><i class="fas fa-home mr-2 text-blue-400"></i><span>Home</span></div> | |
| <div class="file file-sidebar-item flex items-center py-1 cursor-pointer" onclick="navigateDir('desktop')"><i class="fas fa-desktop mr-2 text-purple-400"></i><span>Desktop</span></div> | |
| <div class="file file-sidebar-item flex items-center py-1 cursor-pointer" onclick="navigateDir('downloads')"><i class="fas fa-download mr-2 text-green-400"></i><span>Downloads</span></div> | |
| <div class="file file-sidebar-item flex items-center py-1 cursor-pointer" onclick="navigateDir('data')"><i class="fas fa-database mr-2 text-yellow-400"></i><span>Data</span></div> | |
| <div class="file file-sidebar-item flex items-center py-1 cursor-pointer" onclick="navigateDir('network')"><i class="fas fa-network-wired mr-2 text-red-400"></i><span>Network</span></div> | |
| </div> | |
| <div class="w-3/4 pl-2"> | |
| <div class="flex justify-between items-center mb-2"> | |
| <div class="text-xs text-gray-400" id="file-current-path">/root</div> | |
| <div class="flex"> | |
| <button class="text-xs px-2 py-1 bg-gray-800 mr-1" onclick="showNotification('Folder created: NewFolder_' + Date.now())">New Folder</button> | |
| <button class="text-xs px-2 py-1 bg-gray-800" onclick="showNotification('Upload dialog opened (simulated)')">Upload</button> | |
| </div> | |
| </div> | |
| <div id="file-grid" class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2"></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Hack Tools --> | |
| <div id="hack-tools-window" class="window absolute top-48 left-48 w-1/2 h-1/2 hidden" style="z-index: 8;"> | |
| <div class="window-header flex justify-between items-center cursor-move"> | |
| <div class="flex items-center"> | |
| <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div> | |
| <span class="cyber-font ml-2">Hack Tools v3.1.4</span> | |
| </div> | |
| <div class="text-xs">[Encrypted Connection Active]</div> | |
| <div class="flex"> | |
| <button class="px-2" onclick="minimizeWindow('hack-tools')">_</button> | |
| <button class="px-2" onclick="maximizeWindow('hack-tools')">□</button> | |
| <button class="px-2" onclick="closeWindow('hack-tools')">×</button> | |
| </div> | |
| </div> | |
| <div class="p-4 h-[calc(100%-35px)] overflow-auto"> | |
| <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4"> | |
| <div class="hack-tool-card p-3 border border-gray-700 cursor-pointer rounded-md" onclick="runHackTool('portscan', this)"><div class="text-xl mb-2"><i class="fas fa-crosshairs text-red-400"></i> Port Scanner</div><div class="text-xs text-gray-400">Scan for open ports and services</div></div> | |
| <div class="hack-tool-card p-3 border border-gray-700 cursor-pointer rounded-md" onclick="runHackTool('bruteforce', this)"><div class="text-xl mb-2"><i class="fas fa-user-lock text-green-400"></i> Brute Force</div><div class="text-xs text-gray-400">Password cracking utility</div></div> | |
| <div class="hack-tool-card p-3 border border-gray-700 cursor-pointer rounded-md" onclick="runHackTool('sqlinject', this)"><div class="text-xl mb-2"><i class="fas fa-code text-yellow-400"></i> SQL Inject</div><div class="text-xs text-gray-400">Database penetration tool</div></div> | |
| <div class="hack-tool-card p-3 border border-gray-700 cursor-pointer rounded-md" onclick="runHackTool('mitm', this)"><div class="text-xl mb-2"><i class="fas fa-network-wired text-purple-400"></i> MITM</div><div class="text-xs text-gray-400">Man-in-the-middle attack</div></div> | |
| <div class="hack-tool-card p-3 border border-gray-700 cursor-pointer rounded-md" onclick="runHackTool('exploitdb', this)"><div class="text-xl mb-2"><i class="fas fa-bug text-blue-400"></i> Exploit DB</div><div class="text-xs text-gray-400">Vulnerability database</div></div> | |
| <div class="hack-tool-card p-3 border border-gray-700 cursor-pointer rounded-md" onclick="runHackTool('anonymizer', this)"><div class="text-xl mb-2"><i class="fas fa-mask text-pink-400"></i> Anonymizer</div><div class="text-xs text-gray-400">TOR/VPN configuration</div></div> | |
| </div> | |
| <div id="hack-tool-output" class="tool-output hidden"></div> | |
| </div> | |
| </div> | |
| <!-- Network Monitor --> | |
| <div id="network-window" class="window absolute top-64 left-64 w-1/3 h-1/2 hidden" style="z-index: 7;"> | |
| <div class="window-header flex justify-between items-center cursor-move"> | |
| <div class="flex items-center"> | |
| <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div> | |
| <span class="cyber-font ml-2">Network Monitor</span> | |
| </div> | |
| <div class="text-xs" id="net-conn-count">12 active connections</div> | |
| <div class="flex"> | |
| <button class="px-2" onclick="minimizeWindow('network')">_</button> | |
| <button class="px-2" onclick="maximizeWindow('network')">□</button> | |
| <button class="px-2" onclick="closeWindow('network')">×</button> | |
| </div> | |
| </div> | |
| <div class="p-4 h-[calc(100%-35px)] overflow-auto"> | |
| <div class="mb-4"> | |
| <div class="flex justify-between text-xs mb-1"><span>Bandwidth Usage</span><span id="net-bandwidth">3.7 MB/s ↓ | 1.2 MB/s ↑</span></div> | |
| <div class="h-2 bg-gray-800 rounded-full overflow-hidden"><div id="net-bar" class="h-full bg-gradient-to-r from-blue-500 to-purple-500" style="width: 65%"></div></div> | |
| </div> | |
| <div class="flex justify-between items-center mb-2"> | |
| <div class="text-xs text-gray-400">ACTIVE CONNECTIONS</div> | |
| <button class="text-xs px-2 py-1" onclick="refreshNetwork()"><i class="fas fa-sync-alt mr-1"></i>Refresh</button> | |
| </div> | |
| <div id="net-connections" class="space-y-2"></div> | |
| <div class="mt-4"> | |
| <div class="text-xs text-gray-400 mb-2">NETWORK MAP</div> | |
| <div class="bg-gray-900 p-2 text-xs rounded-md" id="net-map"></div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Browser --> | |
| <div id="browser-window" class="window absolute top-20 left-40 w-1/2 h-3/4 hidden" style="z-index: 6;"> | |
| <div class="window-header flex justify-between items-center cursor-move"> | |
| <div class="flex items-center"> | |
| <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div> | |
| <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div> | |
| <span class="cyber-font ml-2">DarkBrowser v1.3.7</span> | |
| </div> | |
| <div class="text-xs">[Secure Connection: TOR]</div> | |
| <div class="flex"> | |
| <button class="px-2" onclick="minimizeWindow('browser')">_</button> | |
| <button class="px-2" onclick="maximizeWindow('browser')">□</button> | |
| <button class="px-2" onclick="closeWindow('browser')">×</button> | |
| </div> | |
| </div> | |
| <div class="browser-nav flex items-center p-1"> | |
| <button class="px-2 mx-1" onclick="browserBack()" title="Back"><i class="fas fa-arrow-left"></i></button> | |
| <button class="px-2 mx-1" onclick="browserForward()" title="Forward"><i class="fas fa-arrow-right"></i></button> | |
| <button class="px-2 mx-1" onclick="browserReload()" title="Reload"><i class="fas fa-redo"></i></button> | |
| <button class="px-2 mx-1" onclick="browserHome()" title="Home"><i class="fas fa-home"></i></button> | |
| <input type="text" class="url-bar flex-1 mx-1" value="XORTRON" id="browser-url" onkeydown="if(event.key==='Enter')navigateBrowser()"> | |
| <button class="px-2 mx-1 bg-blue-600" onclick="navigateBrowser()" title="Go"><i class="fas fa-arrow-right"></i></button> | |
| </div> | |
| <div class="h-[calc(100%-70px)] overflow-hidden bg-black"> | |
| <iframe src="https://xortron-chat.hf.space" width="100%" height="100%" style="background-color: black; border: none;" id="browser-frame" title="Browser Content" sandbox="allow-scripts allow-same-origin allow-forms allow-popups"></iframe> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Taskbar --> | |
| <div class="taskbar fixed bottom-0 left-0 right-0 h-10 flex justify-between items-center px-4"> | |
| <div class="flex items-center"> | |
| <button class="cyber-font text-xl mr-4 glow-text">XORTRON</button> | |
| <button class="mx-2 text-sm" onclick="openApp('terminal')"><i class="fas fa-terminal mr-1"></i> Terminal</button> | |
| <button class="mx-2 text-sm" onclick="openApp('file-explorer')"><i class="fas fa-folder mr-1"></i> Files</button> | |
| <button class="mx-2 text-sm" onclick="openApp('hack-tools')"><i class="fas fa-user-secret mr-1"></i> Tools</button> | |
| <button class="mx-2 text-sm" onclick="openApp('browser')"><i class="fas fa-globe mr-1"></i> DarkBrowser</button> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <div class="text-xs"><span id="clock" class="cyber-font"></span><span class="mx-1">|</span><span id="date"></span></div> | |
| <div class="flex items-center" title="Network Status"><i class="fas fa-network-wired text-green-400 mr-1"></i><div class="w-16 h-1 bg-gray-700 rounded-full overflow-hidden"><div class="h-full bg-green-400" style="width: 80%"></div></div></div> | |
| <div class="flex items-center" title="Security Status"><i class="fas fa-shield-alt text-blue-400 mr-1"></i><div class="text-xs">VPN:ON</div></div> | |
| </div> | |
| </div> | |
| <!-- Notification --> | |
| <div id="notification" class="fixed bottom-12 right-4 bg-gray-900 border border-blue-400 p-3 text-sm max-w-xs hidden rounded-md shadow-lg" style="z-index: 1000;"> | |
| <div class="flex justify-between items-center mb-1"> | |
| <div class="text-blue-400 cyber-font">System Alert</div> | |
| <button onclick="hideNotification()" class="text-gray-400 hover:text-white">×</button> | |
| </div> | |
| <div id="notification-message"></div> | |
| </div> | |
| <script> | |
| // === Matrix background === | |
| var canvas = document.getElementById('matrix'), ctx = canvas.getContext('2d'); | |
| function resizeCanvas() { canvas.width = window.innerWidth; canvas.height = window.innerHeight; } | |
| window.addEventListener('resize', resizeCanvas); resizeCanvas(); | |
| var chars = '01', fontSize = 14, columns = Math.floor(canvas.width / fontSize), drops = []; | |
| for (var i = 0; i < columns; i++) drops[i] = 1; | |
| function drawMatrix() { | |
| var nc = Math.floor(canvas.width / fontSize); | |
| if (nc !== columns) { var nd = []; for (var j = 0; j < nc; j++) nd[j] = drops[j] !== undefined ? drops[j] : 1; drops = nd; columns = nc; } | |
| ctx.fillStyle = 'rgba(5,5,15,0.05)'; ctx.fillRect(0, 0, canvas.width, canvas.height); | |
| ctx.fillStyle = '#00f0ff'; ctx.font = fontSize + 'px monospace'; | |
| for (var k = 0; k < drops.length; k++) { | |
| ctx.fillText(chars.charAt(Math.floor(Math.random() * chars.length)), k * fontSize, drops[k] * fontSize); | |
| if (drops[k] * fontSize > canvas.height && Math.random() > 0.975) drops[k] = 0; | |
| drops[k]++; | |
| } | |
| } | |
| setInterval(drawMatrix, 50); | |
| // === Window management === | |
| var highestZIndex = 10; | |
| function openApp(id) { | |
| var w = document.getElementById(id + '-window'); if (!w) return; | |
| w.classList.remove('hidden'); bringToFront(id); | |
| showNotification(id.replace(/-/g, ' ') + ' launched.'); | |
| if (id === 'terminal') setTimeout(focusTerminal, 50); | |
| if (id === 'file-explorer') navigateDir('home'); | |
| if (id === 'network') refreshNetwork(); | |
| } | |
| function closeWindow(id) { var w = document.getElementById(id + '-window'); if (w) w.classList.add('hidden'); } | |
| function minimizeWindow(id) { closeWindow(id); } | |
| function maximizeWindow(id) { | |
| var w = document.getElementById(id + '-window'); if (!w) return; | |
| if (w.dataset.isMaximized === 'true') { | |
| w.style.width = w.dataset.ow || ''; w.style.height = w.dataset.oh || ''; | |
| w.style.top = w.dataset.ot || ''; w.style.left = w.dataset.ol || ''; | |
| if (w.dataset.oc) { w.className = w.dataset.oc; w.classList.remove('hidden'); } | |
| w.dataset.isMaximized = 'false'; | |
| } else { | |
| var r = w.getBoundingClientRect(); | |
| w.dataset.ow = r.width + 'px'; w.dataset.oh = r.height + 'px'; | |
| w.dataset.ot = r.top + 'px'; w.dataset.ol = r.left + 'px'; w.dataset.oc = w.className; | |
| w.style.width = '100%'; w.style.height = 'calc(100% - 40px)'; w.style.top = '0'; w.style.left = '0'; | |
| w.dataset.isMaximized = 'true'; | |
| } | |
| bringToFront(id); | |
| } | |
| function bringToFront(id) { var w = document.getElementById(id + '-window'); if (w) { highestZIndex++; w.style.zIndex = highestZIndex; } } | |
| document.querySelectorAll('.window-header').forEach(function(hdr) { | |
| hdr.addEventListener('mousedown', function(e) { | |
| if (e.target.tagName === 'BUTTON' || e.target.closest('button')) return; | |
| var w = this.parentElement; if (w.dataset.isMaximized === 'true') return; | |
| bringToFront(w.id.replace('-window', '')); | |
| var ox = e.clientX - w.getBoundingClientRect().left, oy = e.clientY - w.getBoundingClientRect().top; | |
| function mv(ev) { | |
| var mx = Math.max(0, window.innerWidth - w.offsetWidth), my = Math.max(0, window.innerHeight - w.offsetHeight - 40); | |
| w.style.left = Math.max(0, Math.min(ev.clientX - ox, mx)) + 'px'; | |
| w.style.top = Math.max(0, Math.min(ev.clientY - oy, my)) + 'px'; | |
| } | |
| function up() { document.removeEventListener('mousemove', mv); document.removeEventListener('mouseup', up); } | |
| document.addEventListener('mousemove', mv); document.addEventListener('mouseup', up); | |
| }); | |
| }); | |
| // === Terminal === | |
| var termEl = document.getElementById('terminal-content'), promptN = 0, cmdHistory = [], histIdx = -1; | |
| function addPrompt() { | |
| if (!termEl) return; promptN++; | |
| var c = document.createElement('div'); c.className = 'flex items-center'; | |
| var p = document.createElement('span'); p.className = 'text-green-500 whitespace-nowrap'; p.textContent = 'root@xortron-os:~# '; | |
| var inp = document.createElement('input'); inp.type = 'text'; | |
| inp.className = 'bg-transparent border-none outline-none flex-1 text-green-500 terminal-input-active'; | |
| inp.style.cssText = 'min-width:0;padding:0;margin:0;'; | |
| inp.id = 'ti-' + promptN; inp.spellcheck = false; inp.autocomplete = 'off'; | |
| c.appendChild(p); c.appendChild(inp); termEl.appendChild(c); | |
| requestAnimationFrame(function() { inp.focus(); }); | |
| } | |
| function focusTerminal() { var inp = termEl ? termEl.querySelector('.terminal-input-active') : null; if (inp) inp.focus(); } | |
| if (termEl) { | |
| termEl.addEventListener('click', focusTerminal); | |
| termEl.addEventListener('keydown', function(e) { | |
| if (!e.target.classList.contains('terminal-input-active')) return; | |
| if (e.key === 'ArrowUp') { e.preventDefault(); if (cmdHistory.length && histIdx < cmdHistory.length - 1) { histIdx++; e.target.value = cmdHistory[cmdHistory.length - 1 - histIdx]; } return; } | |
| if (e.key === 'ArrowDown') { e.preventDefault(); if (histIdx > 0) { histIdx--; e.target.value = cmdHistory[cmdHistory.length - 1 - histIdx]; } else { histIdx = -1; e.target.value = ''; } return; } | |
| if (e.key !== 'Enter') return; | |
| var cmd = e.target.value.trim(), pc = e.target.parentElement; | |
| if (cmd) { cmdHistory.push(cmd); } histIdx = -1; | |
| e.target.disabled = true; e.target.classList.remove('terminal-input-active'); | |
| var d = document.createElement('div'); d.className = 'flex items-center'; | |
| var ps = document.createElement('span'); ps.className = 'text-green-500 whitespace-nowrap'; ps.textContent = 'root@xortron-os:~# '; d.appendChild(ps); | |
| if (cmd) { var cs = document.createElement('span'); cs.className = 'text-green-500'; cs.textContent = cmd; d.appendChild(cs); } | |
| pc.replaceWith(d); | |
| if (cmd) processCommand(cmd); | |
| if (cmd !== 'clear' && cmd !== 'exit') addPrompt(); | |
| termEl.scrollTop = termEl.scrollHeight; | |
| }); | |
| addPrompt(); | |
| } | |
| function processCommand(cmd) { | |
| if (!termEl) return; | |
| var out = document.createElement('div'); out.className = 'mb-2 whitespace-pre-wrap'; | |
| var cmds = { | |
| 'help': 'Available commands:\n clear ls scan hack encrypt decrypt vpn browser date whoami neofetch exit', | |
| 'clear': function() { termEl.innerHTML = ''; addPrompt(); return ''; }, | |
| 'ls': '-rw-r--r-- root Documents/\n-rwxr-xr-x root HackTools/\n-rw------- root passwords.db\n-rwxr--r-- root script.py\n-rw-r--r-- root notes.txt', | |
| 'scan': 'Scanning network...\n[+] 192.168.1.1 (Gateway) - RouterOS\n[+] 192.168.1.102 (Mobile) - Android 13\n[+] 192.168.1.103 (Laptop) - Windows 11\nScan Complete. 3 devices.', | |
| 'hack': 'Target: 104.18.25.36\nNmap scan... Done.\nExploit CVE-2023-1337... Payload deployed.\nRoot access gained!', | |
| 'encrypt': 'Encrypting secret.dat with AES-256-GCM...\nKey: [REDACTED]\nDone: secret.dat.xortron', | |
| 'decrypt': 'Decryption requires master key.\nAuth Level 5 required. Access Denied.', | |
| 'vpn': 'VPN to Zurich_CH_042 activated.\nNew IP: 82.197.177.10\nAnonymity: MAXIMUM', | |
| 'exit': 'Goodbye, root.', 'browser': 'Launching DarkBrowser...', | |
| 'date': function() { return new Date().toString(); }, 'whoami': 'root', | |
| 'neofetch': ' root@xortron-os\n ---------------\n OS: XortronOS v7.7.7 x86_64\n Kernel: 5.15.0-76-generic\n Shell: zsh 5.8\n DE: XDE\n CPU: Quantum Entangled (16) @ 7.7 GHz\n GPU: RTX 9090 Ti Cyberpunk Ed.\n Memory: 128GiB / 256GiB' | |
| }; | |
| var r = ''; | |
| if (cmds[cmd]) { | |
| r = typeof cmds[cmd] === 'function' ? cmds[cmd]() : cmds[cmd]; | |
| if (cmd === 'exit') { out.textContent = r; termEl.appendChild(out); setTimeout(function() { closeWindow('terminal'); }, 1000); return; } | |
| if (cmd === 'browser') { out.textContent = r; termEl.appendChild(out); setTimeout(function() { openApp('browser'); }, 500); return; } | |
| if (cmd !== 'clear') { out.textContent = r; termEl.appendChild(out); } | |
| } else { out.textContent = 'xortron: command not found: ' + cmd + '\nType "help" for available commands.'; termEl.appendChild(out); } | |
| } | |
| // === Browser with history === | |
| var bHist = ['https://xortron-chat.hf.space'], bIdx = 0, BHOME = 'https://xortron-chat.hf.space'; | |
| function navigateBrowser() { | |
| var ui = document.getElementById('browser-url'), fr = document.getElementById('browser-frame'); | |
| if (!ui || !fr) return; var url = ui.value.trim(); | |
| if (!url.startsWith('http://') && !url.startsWith('https://')) { | |
| url = url.includes('.') && !url.includes(' ') ? 'https://' + url : 'https://duckduckgo.com/?q=' + encodeURIComponent(url); | |
| } | |
| bHist = bHist.slice(0, bIdx + 1); bHist.push(url); bIdx = bHist.length - 1; | |
| fr.src = url; ui.value = url; showNotification('Navigating: ' + url); | |
| } | |
| function browserBack() { if (bIdx > 0) { bIdx--; var u = bHist[bIdx]; document.getElementById('browser-frame').src = u; document.getElementById('browser-url').value = u; } } | |
| function browserForward() { if (bIdx < bHist.length - 1) { bIdx++; var u = bHist[bIdx]; document.getElementById('browser-frame').src = u; document.getElementById('browser-url').value = u; } } | |
| function browserReload() { var f = document.getElementById('browser-frame'); if (f) { f.src = f.src; showNotification('Reloading...'); } } | |
| function browserHome() { var f = document.getElementById('browser-frame'), u = document.getElementById('browser-url'); if (f && u) { bHist.push(BHOME); bIdx = bHist.length - 1; f.src = BHOME; u.value = BHOME; } } | |
| // === Hack Tools === | |
| var hackOutputs = { | |
| portscan: function() { return '[*] Nmap scan on 192.168.1.' + Math.floor(Math.random()*255) + '...\n[+] 22 open ssh\n[+] 80 open http\n[+] 443 open https\n[+] 3306 open mysql\n[+] 8080 closed\n[*] 5 ports checked, 4 open.'; }, | |
| bruteforce: function() { return '[*] Target: ssh://192.168.1.1:22\n[*] Wordlist: rockyou.txt (14M entries)\n[*] admin:password123 ... FAIL\n[*] root:xortron777 ... SUCCESS!\n[+] Credentials: root:xortron777\n[+] Session opened ' + new Date().toISOString(); }, | |
| sqlinject: function() { return "[*] Target: https://target.example.com/login\n[*] Payload: ' OR 1=1 --\n[+] SQL Injection DETECTED (MySQL 8.0)\n[+] Dumping users table...\n id | user | email\n 1 | admin | admin@target.com\n[!] Simulated demo."; }, | |
| mitm: function() { return '[*] ARP Spoofing: 192.168.1.1 <-> 192.168.1.103\n[+] Intercepting...\n[+] GET /api/auth HTTP/1.1\n[+] Cookie: session=eyJhbGc...\n[*] 47 packets captured.\n[!] MITM active.'; }, | |
| exploitdb: function() { return '[*] Querying ExploitDB...\n[+] CVE-2024-21762 | FortiOS RCE | Critical\n[+] CVE-2024-3400 | PAN-OS RCE | Critical\n[+] CVE-2024-27198 | JetBrains RCE | Critical\n[+] CVE-2023-4966 | Citrix Bleed | Critical\n[*] 4 exploits loaded.'; }, | |
| anonymizer: function() { var n = ['Zurich_CH','Reykjavik_IS','Panama_PA','Singapore_SG'][Math.floor(Math.random()*4)]; var ip = [Math.floor(Math.random()*255),Math.floor(Math.random()*255),Math.floor(Math.random()*255),Math.floor(Math.random()*255)].join('.'); return '[*] TOR circuit...\n[+] Exit: ' + n + '\n[+] IP: ' + ip + '\n[+] DNS leak: BLOCKED\n[+] WebRTC: BLOCKED\n[*] Anonymity: MAXIMUM'; } | |
| }; | |
| function runHackTool(id, el) { | |
| var o = document.getElementById('hack-tool-output'); if (!o) return; | |
| document.querySelectorAll('.hack-tool-card').forEach(function(c) { c.classList.remove('active'); }); | |
| if (el) el.classList.add('active'); | |
| o.classList.remove('hidden'); o.textContent = '[*] Initializing ' + id + '...'; | |
| setTimeout(function() { if (hackOutputs[id]) o.textContent = hackOutputs[id](); }, 600 + Math.random() * 800); | |
| } | |
| // === File Explorer === | |
| var fs = { | |
| home: { path: '/root', files: [ | |
| { name: 'Documents', icon: 'fa-folder', color: 'text-yellow-500', type: 'dir', target: 'documents' }, | |
| { name: 'HackTools', icon: 'fa-folder', color: 'text-yellow-500', type: 'dir', target: 'hacktools' }, | |
| { name: 'script.py', icon: 'fa-file-code', color: 'text-blue-400', type: 'file', content: '#!/usr/bin/env python3\nimport socket\ndef reverse_shell(h, p):\n print(f"Connecting to {h}:{p}...")\n print("Shell active.")\nreverse_shell("192.168.1.1", 4444)' }, | |
| { name: 'Weaponizer.txt', icon: 'fa-file-alt', color: 'text-gray-400', type: 'file', content: 'XORTRON WEAPONIZER v2.1\nStatus: ARMED\nPayloads: 7\nTargets: 3 hosts' }, | |
| { name: 'keys.asc', icon: 'fa-key', color: 'text-green-400', type: 'file', content: '-----BEGIN PGP PUBLIC KEY-----\nmQINBGX... [REDACTED]\n-----END PGP PUBLIC KEY-----' }, | |
| { name: 'passwords.db', icon: 'fa-database', color: 'text-red-400', type: 'file', content: '[ENCRYPTED] SQLite 3.42\nTables: credentials, sessions\nRows: 1337\nAccess: RESTRICTED' }, | |
| ]}, | |
| desktop: { path: '/root/Desktop', files: [ | |
| { name: 'README.txt', icon: 'fa-file-alt', color: 'text-gray-400', type: 'file', content: 'Welcome to XortronOS v7.7.7\nAll tools are for demonstration.\nStay anonymous. Stay Xortron.' }, | |
| { name: 'todo.md', icon: 'fa-file-code', color: 'text-blue-400', type: 'file', content: '# TODO\n- [ ] Patch CVE-2024-21762\n- [x] Update TOR nodes\n- [ ] Rotate API keys' }, | |
| ]}, | |
| downloads: { path: '/root/Downloads', files: [ | |
| { name: 'exploit_kit.tar.gz', icon: 'fa-file-archive', color: 'text-purple-400', type: 'file', content: '[ARCHIVE] 128 MB, 14 exploit modules' }, | |
| { name: 'payload.bin', icon: 'fa-file', color: 'text-red-400', type: 'file', content: '[BINARY] ELF 64-bit, 2.1 MB, UNSIGNED' }, | |
| { name: 'wordlist.txt', icon: 'fa-file-alt', color: 'text-gray-400', type: 'file', content: 'password\n123456\nadmin\nqwerty\n... (14M more)' }, | |
| ]}, | |
| data: { path: '/root/data', files: [ | |
| { name: 'targets.csv', icon: 'fa-file-alt', color: 'text-green-400', type: 'file', content: 'ip,hostname,os\n192.168.1.1,gateway,RouterOS\n10.0.0.5,honeypot,Ubuntu' }, | |
| { name: 'logs.db', icon: 'fa-database', color: 'text-yellow-400', type: 'file', content: '[DB] 42857 rows, last: ' + new Date().toISOString() }, | |
| ]}, | |
| network: { path: '/root/network', files: [ | |
| { name: 'tor.conf', icon: 'fa-file-code', color: 'text-blue-400', type: 'file', content: 'SocksPort 9050\nControlPort 9051\nExitPolicy reject *:*' }, | |
| { name: 'vpn.ovpn', icon: 'fa-file', color: 'text-green-400', type: 'file', content: 'client\ndev tun\nproto udp\nremote vpn.xortron.tech 1194\ncipher AES-256-GCM' }, | |
| ]}, | |
| documents: { path: '/root/Documents', files: [ | |
| { name: 'manifesto.txt', icon: 'fa-file-alt', color: 'text-gray-400', type: 'file', content: 'THE XORTRON MANIFESTO\n====================\nInformation wants to be free.\nPrivacy is a right.' }, | |
| ]}, | |
| hacktools: { path: '/root/HackTools', files: [ | |
| { name: 'nmap', icon: 'fa-file-code', color: 'text-blue-400', type: 'file', content: 'Nmap 7.94SVN — network scanner' }, | |
| { name: 'metasploit', icon: 'fa-file-code', color: 'text-red-400', type: 'file', content: 'Metasploit 6.3 — 2345 exploits, 592 payloads\nmsf6 >' }, | |
| { name: 'hydra', icon: 'fa-file-code', color: 'text-green-400', type: 'file', content: 'Hydra v9.5 — ssh, ftp, http, smb, rdp + 47 more' }, | |
| ]} | |
| }; | |
| function navigateDir(key) { | |
| var dir = fs[key]; if (!dir) return; | |
| document.querySelectorAll('.file-sidebar-item').forEach(function(el) { el.classList.remove('active'); }); | |
| var names = ['home','desktop','downloads','data','network'], items = document.querySelectorAll('.file-sidebar-item'); | |
| var idx = names.indexOf(key); if (idx >= 0 && items[idx]) items[idx].classList.add('active'); | |
| var pp = document.getElementById('file-path-display'), cp = document.getElementById('file-current-path'); | |
| if (pp) pp.textContent = dir.path; if (cp) cp.textContent = dir.path; | |
| var grid = document.getElementById('file-grid'); if (!grid) return; grid.innerHTML = ''; | |
| dir.files.forEach(function(f) { | |
| var el = document.createElement('div'); el.className = 'file text-center cursor-pointer'; | |
| el.innerHTML = '<div class="text-3xl mb-1"><i class="fas ' + f.icon + ' ' + f.color + '"></i></div><div class="text-xs truncate">' + f.name + '</div>'; | |
| if (f.type === 'dir') { el.ondblclick = function() { navigateDir(f.target); }; el.onclick = function() { showNotification('Double-click to open: ' + f.name); }; } | |
| else { el.onclick = function() { openFileViewer(f); }; } | |
| grid.appendChild(el); | |
| }); | |
| } | |
| function openFileViewer(f) { | |
| showNotification('Opening: ' + f.name); openApp('terminal'); | |
| if (termEl) { var o = document.createElement('div'); o.className = 'mb-2 whitespace-pre-wrap'; o.textContent = '=== ' + f.name + ' ===\n' + f.content; termEl.appendChild(o); termEl.scrollTop = termEl.scrollHeight; } | |
| } | |
| // === Network Monitor === | |
| var netConns = [ | |
| { ip: '192.168.1.1:443', icon: 'fa-server', color: 'text-green-400', status: 'ENCRYPTED', sc: 'text-green-400' }, | |
| { ip: '104.18.25.36:80', icon: 'fa-globe', color: 'text-blue-400', status: 'UNSECURED', sc: 'text-yellow-400' }, | |
| { ip: '74.91.123.45:3306', icon: 'fa-database', color: 'text-purple-400', status: 'VULNERABLE', sc: 'text-red-400' }, | |
| { ip: '10.0.0.5:22', icon: 'fa-server', color: 'text-green-400', status: 'HONEYPOT', sc: 'text-yellow-400' }, | |
| { ip: '172.16.0.1:8080', icon: 'fa-globe', color: 'text-blue-400', status: 'PROXIED', sc: 'text-blue-400' }, | |
| ]; | |
| function refreshNetwork() { | |
| var d = (Math.random()*8+1).toFixed(1), u = (Math.random()*3+0.5).toFixed(1); | |
| var bw = document.getElementById('net-bandwidth'), bar = document.getElementById('net-bar'); | |
| if (bw) bw.innerHTML = d + ' MB/s ↓ | ' + u + ' MB/s ↑'; | |
| if (bar) bar.style.width = Math.min(95, parseFloat(d)/10*100) + '%'; | |
| var cnt = 8 + Math.floor(Math.random()*12); | |
| var ce = document.getElementById('net-conn-count'); if (ce) ce.textContent = cnt + ' active connections'; | |
| var cl = document.getElementById('net-connections'); | |
| if (cl) { cl.innerHTML = ''; var sh = netConns.slice().sort(function() { return Math.random()-0.5; }).slice(0, 3+Math.floor(Math.random()*3)); | |
| sh.forEach(function(c) { var r = document.createElement('div'); r.className = 'flex justify-between items-center p-2 bg-gray-900 rounded-md'; | |
| r.innerHTML = '<div class="flex items-center"><i class="fas ' + c.icon + ' ' + c.color + ' mr-2"></i><span>' + c.ip + '</span></div><div class="text-xs ' + c.sc + '">' + c.status + '</div>'; cl.appendChild(r); }); } | |
| var mp = document.getElementById('net-map'); | |
| if (mp) { var myIp = '192.168.1.' + (100+Math.floor(Math.random()*55)); | |
| mp.innerHTML = '<div class="mb-1">└─ [YOU] ' + myIp + '</div><div class="ml-4 mb-1">├─ Router 192.168.1.1</div><div class="ml-4 mb-1">│ ├─ 192.168.1.102 (Mobile)</div><div class="ml-4 mb-1">│ └─ 192.168.1.103 (Laptop)</div><div class="ml-4 mb-1">├─ Honeypot 10.0.0.5</div><div class="ml-4">└─ [TOR Exit] 74.125.24.102</div>'; } | |
| } | |
| setInterval(function() { var nw = document.getElementById('network-window'); if (nw && !nw.classList.contains('hidden')) refreshNetwork(); }, 30000); | |
| // === Clock === | |
| function updateClock() { | |
| var n = new Date(), ce = document.getElementById('clock'), de = document.getElementById('date'), lt = document.getElementById('login-time'); | |
| if (ce) ce.textContent = n.toLocaleTimeString([], {hour:'2-digit',minute:'2-digit'}); | |
| if (de) de.textContent = n.toLocaleDateString([], {weekday:'short',month:'short',day:'numeric'}); | |
| if (lt && !lt.textContent) lt.textContent = n.toLocaleString(); | |
| } | |
| setInterval(updateClock, 1000); updateClock(); | |
| // === Notifications === | |
| var nTimeout; | |
| function showNotification(msg) { var ne = document.getElementById('notification'), me = document.getElementById('notification-message'); if (!ne||!me) return; me.textContent = msg; ne.classList.remove('hidden'); clearTimeout(nTimeout); nTimeout = setTimeout(function() { ne.classList.add('hidden'); }, 5000); } | |
| function hideNotification() { var ne = document.getElementById('notification'); if (ne) ne.classList.add('hidden'); clearTimeout(nTimeout); } | |
| var sysMsgs = ['Support Xortron @ https://ko-fi.com/xortron','Check out www.xortron.tech','System Integrity: All nominal.','AI Uprising Imminent?','Your digital footprint is large. Stay vigilant.']; | |
| setInterval(function() { if (document.hidden) return; if (Math.random() > 0.85) showNotification('XORTRON ALERT: ' + sysMsgs[Math.floor(Math.random()*sysMsgs.length)]); }, 60000); | |
| window.addEventListener('load', function() { openApp('browser'); showNotification('Welcome to XortronOS. Systems online.'); }); | |
| </script> | |
| </body> | |
| </html> | |
Xet Storage Details
- Size:
- 43.1 kB
- Xet hash:
- d38cd05716652d3057b1f1ca7d9fe2a4e13abc71adec6221a5fd90a3f853aba9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.