A Pen by mode-mercury on CodePen.
Created
October 22, 2025 21:48
-
-
Save mode-mercury/0be197fcdfa7217dc6a176f1174a2da0 to your computer and use it in GitHub Desktop.
Untitled
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> | |
| <title>C-BLOCK UNIVERSE :: NOMADSOFT INTERFACE</title> | |
| <style> | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| -webkit-tap-highlight-color: transparent; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| } | |
| body { | |
| color: #000000; | |
| height: 100vh; | |
| width: 100vw; | |
| overflow: hidden; | |
| background: #008080; | |
| position: relative; | |
| touch-action: manipulation; | |
| font-size: 11px; | |
| } | |
| /* Boot Screen */ | |
| #boot-screen { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: #000; | |
| z-index: 10000; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| align-items: center; | |
| padding: 20px; | |
| color: #fff; | |
| font-family: 'Courier New', monospace; | |
| } | |
| .boot-line { | |
| margin: 1px 0; | |
| opacity: 0; | |
| animation: typeIn 0.05s forwards; | |
| line-height: 1.2; | |
| } | |
| @keyframes typeIn { | |
| to { opacity: 1; } | |
| } | |
| .glitch-text { | |
| position: absolute; | |
| color: #ff0000; | |
| animation: glitch 0.3s infinite; | |
| opacity: 0; | |
| pointer-events: none; | |
| z-index: 100; | |
| } | |
| @keyframes glitch { | |
| 0% { transform: translate(0) scale(1); opacity: 0; } | |
| 20% { transform: translate(-3px, 2px) scale(1.1); opacity: 0.8; } | |
| 40% { transform: translate(-2px, -3px) scale(0.9); opacity: 0.6; } | |
| 60% { transform: translate(3px, 2px) scale(1.05); opacity: 0.9; } | |
| 80% { transform: translate(2px, -2px) scale(0.95); opacity: 0.7; } | |
| 100% { transform: translate(0) scale(1); opacity: 0; } | |
| } | |
| .corrupted { | |
| color: #ff0000; | |
| } | |
| .system-text { | |
| color: #ffffff; | |
| } | |
| .warning { | |
| color: #ffff00; | |
| animation: pulse 2s infinite; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.5; } | |
| } | |
| .faction-sigil { | |
| color: #ff00ff; | |
| font-weight: bold; | |
| } | |
| .ai-voice { | |
| color: #ff66cc; | |
| font-style: italic; | |
| } | |
| .law-text { | |
| color: #66ff66; | |
| font-weight: bold; | |
| } | |
| /* Matrix Rain */ | |
| .matrix-rain { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| pointer-events: none; | |
| z-index: -1; | |
| opacity: 0.1; | |
| } | |
| /* Loading System */ | |
| #loading-container { | |
| width: 500px; | |
| margin-top: 30px; | |
| border: 1px solid #ffffff; | |
| padding: 2px; | |
| background: #000; | |
| } | |
| #loading-bar { | |
| height: 20px; | |
| width: 0%; | |
| background: #0080ff; | |
| transition: width 0.3s; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| #loading-bar::after { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.6), transparent); | |
| animation: shimmer 1.5s infinite; | |
| } | |
| @keyframes shimmer { | |
| 0% { left: -100%; } | |
| 100% { left: 100%; } | |
| } | |
| #loading-text { | |
| margin-top: 10px; | |
| font-size: 12px; | |
| color: #ffffff; | |
| text-align: center; | |
| } | |
| /* Creepy Triangle with Eye */ | |
| .triangle-container { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| z-index: 1000; | |
| display: none; | |
| } | |
| .outer-triangle { | |
| width: 120px; | |
| height: 120px; | |
| background: #ff0000; | |
| clip-path: polygon(50% 0%, 0% 100%, 100% 100%); | |
| animation: spin 4s linear infinite; | |
| opacity: 0.7; | |
| } | |
| .inner-triangle { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| width: 80px; | |
| height: 80px; | |
| background: #000; | |
| clip-path: polygon(50% 0%, 0% 100%, 100% 100%); | |
| } | |
| .eye { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| width: 40px; | |
| height: 40px; | |
| background: #ff0000; | |
| border-radius: 50%; | |
| overflow: hidden; | |
| } | |
| .pupil { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| width: 20px; | |
| height: 20px; | |
| background: #000; | |
| border-radius: 50%; | |
| animation: lookAround 3s infinite alternate; | |
| } | |
| @keyframes spin { | |
| 0% { transform: rotate(0deg); } | |
| 100% { transform: rotate(360deg); } | |
| } | |
| @keyframes lookAround { | |
| 0%, 100% { transform: translate(-50%, -50%); } | |
| 25% { transform: translate(-70%, -50%); } | |
| 50% { transform: translate(-50%, -70%); } | |
| 75% { transform: translate(-30%, -50%); } | |
| } | |
| /* Audio Controls - Hidden by default, shown when volume clicked */ | |
| #audio-controls { | |
| position: fixed; | |
| bottom: 30px; | |
| right: 10px; | |
| width: 150px; | |
| background: #c0c0c0; | |
| border: 2px outset #c0c0c0; | |
| padding: 10px; | |
| display: none; | |
| z-index: 10001; | |
| box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); | |
| } | |
| .audio-btn { | |
| background: #c0c0c0; | |
| color: #000000; | |
| border: 2px outset #c0c0c0; | |
| padding: 8px 12px; | |
| cursor: pointer; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| font-size: 11px; | |
| width: 100%; | |
| margin-bottom: 5px; | |
| } | |
| .audio-btn:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .audio-btn.active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .volume-slider { | |
| width: 100%; | |
| margin: 10px 0; | |
| } | |
| /* Desktop Interface */ | |
| #desktop { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: #008080; | |
| display: none; | |
| z-index: 100; | |
| } | |
| /* Desktop Icons */ | |
| .desktop-icon { | |
| position: absolute; | |
| width: 80px; | |
| height: 70px; | |
| text-align: center; | |
| cursor: pointer; | |
| user-select: none; | |
| padding: 5px; | |
| color: white; | |
| font-size: 11px; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .desktop-icon:hover { | |
| background-color: rgba(255, 255, 255, 0.2); | |
| } | |
| .desktop-icon .icon { | |
| width: 32px; | |
| height: 32px; | |
| background: #c0c0c0; | |
| color: #000; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| margin-bottom: 5px; | |
| border: 2px outset #c0c0c0; | |
| } | |
| /* Window System - Classic Windows Style */ | |
| .window { | |
| position: absolute; | |
| background-color: #c0c0c0; | |
| border: 2px outset #c0c0c0; | |
| min-width: 400px; | |
| min-height: 250px; | |
| display: none; | |
| z-index: 200; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| overflow: hidden; | |
| box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); | |
| } | |
| .window-header { | |
| background: linear-gradient(90deg, #000080, #1084d0); | |
| color: white; | |
| padding: 3px 5px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| font-size: 11px; | |
| font-weight: bold; | |
| cursor: move; | |
| user-select: none; | |
| border-bottom: 2px outset #c0c0c0; | |
| position: relative; | |
| } | |
| .window-title { | |
| flex-grow: 1; | |
| } | |
| .window-controls { | |
| display: flex; | |
| } | |
| .window-control { | |
| width: 16px; | |
| height: 14px; | |
| background-color: #c0c0c0; | |
| border: 1px outset #c0c0c0; | |
| margin-left: 2px; | |
| text-align: center; | |
| line-height: 12px; | |
| font-size: 12px; | |
| cursor: pointer; | |
| color: #000; | |
| } | |
| .window-control:active { | |
| border: 1px inset #c0c0c0; | |
| } | |
| .window-content { | |
| padding: 10px; | |
| height: calc(100% - 24px); | |
| overflow: auto; | |
| color: #000; | |
| background: #c0c0c0; | |
| position: relative; | |
| } | |
| /* Taskbar - Classic Windows Style */ | |
| #taskbar { | |
| position: fixed; | |
| bottom: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 30px; | |
| background: #c0c0c0; | |
| color: #000; | |
| display: none; | |
| align-items: center; | |
| padding: 0 10px; | |
| box-shadow: 0 -2px 10px rgba(0,0,0,0.5); | |
| z-index: 10000; | |
| user-select: none; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| font-size: 11px; | |
| border-top: 1px solid #808080; | |
| } | |
| #start-button { | |
| cursor: pointer; | |
| padding: 0 15px; | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| height: 22px; | |
| line-height: 18px; | |
| user-select: none; | |
| font-weight: bold; | |
| } | |
| #start-button:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| #taskbar-items { | |
| margin-left: 10px; | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: nowrap; | |
| overflow-x: auto; | |
| flex-grow: 1; | |
| } | |
| .task-item { | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| padding: 0 10px; | |
| height: 22px; | |
| line-height: 18px; | |
| cursor: pointer; | |
| white-space: nowrap; | |
| font-size: 11px; | |
| } | |
| .task-item:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .task-item.active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| #time-display { | |
| margin-left: auto; | |
| padding: 0 12px; | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| height: 22px; | |
| line-height: 18px; | |
| font-size: 11px; | |
| margin-right: 10px; | |
| } | |
| #volume-icon { | |
| cursor: pointer; | |
| padding: 0 8px; | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| height: 22px; | |
| line-height: 18px; | |
| font-size: 11px; | |
| } | |
| #volume-icon:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| /* Start Menu */ | |
| #start-menu { | |
| position: fixed; | |
| bottom: 30px; | |
| left: 10px; | |
| width: 200px; | |
| background: #c0c0c0; | |
| border: 2px outset #c0c0c0; | |
| display: none; | |
| z-index: 10001; | |
| user-select: none; | |
| box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); | |
| } | |
| #start-menu h3 { | |
| margin: 0; | |
| padding: 8px 12px; | |
| background: linear-gradient(90deg, #000080, #1084d0); | |
| color: white; | |
| font-weight: bold; | |
| border-bottom: 2px solid #000; | |
| font-size: 11px; | |
| } | |
| #start-menu ul { | |
| list-style: none; | |
| padding: 5px 0; | |
| margin: 0; | |
| } | |
| #start-menu li { | |
| padding: 6px 20px; | |
| cursor: pointer; | |
| transition: background-color 0.2s; | |
| font-size: 11px; | |
| color: #000; | |
| } | |
| #start-menu li:hover { | |
| background-color: #000080; | |
| color: white; | |
| } | |
| /* App-specific Styles */ | |
| .app-content { | |
| height: 100%; | |
| overflow: auto; | |
| } | |
| .terminal-content { | |
| background: #000; | |
| color: #fff; | |
| font-family: 'Courier New', monospace; | |
| padding: 10px; | |
| height: calc(100% - 40px); | |
| overflow-y: auto; | |
| white-space: pre-wrap; | |
| } | |
| .terminal-input { | |
| width: calc(100% - 20px); | |
| background: #000; | |
| color: #fff; | |
| border: 1px solid #fff; | |
| font-family: 'Courier New', monospace; | |
| padding: 5px; | |
| margin: 0 10px 10px; | |
| } | |
| .reality-console { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| padding: 15px; | |
| height: 100%; | |
| overflow-y: auto; | |
| line-height: 1.4; | |
| } | |
| /* Toolbar for apps */ | |
| .toolbar { | |
| display: flex; | |
| padding: 5px; | |
| background: #c0c0c0; | |
| border-bottom: 2px outset #c0c0c0; | |
| gap: 5px; | |
| } | |
| .toolbar-button { | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| padding: 4px 8px; | |
| cursor: pointer; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| font-size: 11px; | |
| } | |
| .toolbar-button:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .address-bar { | |
| flex-grow: 1; | |
| background: #fff; | |
| color: #000; | |
| border: 2px inset #c0c0c0; | |
| padding: 4px 8px; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| font-size: 11px; | |
| } | |
| .tab-container { | |
| display: flex; | |
| border-bottom: 2px outset #c0c0c0; | |
| background: #c0c0c0; | |
| } | |
| .tab { | |
| padding: 5px 15px; | |
| cursor: pointer; | |
| border: 2px outset #c0c0c0; | |
| border-bottom: none; | |
| margin-right: 2px; | |
| background: #c0c0c0; | |
| color: #000; | |
| } | |
| .tab:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .tab.active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .tab-content { | |
| display: none; | |
| padding: 15px; | |
| height: calc(100% - 60px); | |
| overflow-y: auto; | |
| color: #000; | |
| background: #c0c0c0; | |
| } | |
| .tab-content.active { | |
| display: block; | |
| } | |
| /* Language Interface */ | |
| .language-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 20px; | |
| margin-top: 15px; | |
| } | |
| .language-section { | |
| border: 2px outset #c0c0c0; | |
| padding: 15px; | |
| background: #c0c0c0; | |
| color: #000; | |
| } | |
| .language-title { | |
| font-weight: bold; | |
| margin-bottom: 10px; | |
| color: #000; | |
| border-bottom: 1px solid #000; | |
| padding-bottom: 5px; | |
| } | |
| /* City Map */ | |
| .city-map { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| padding: 15px; | |
| height: 100%; | |
| overflow: auto; | |
| line-height: 1.2; | |
| } | |
| /* Hacker Tools */ | |
| .hacker-tool { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| padding: 15px; | |
| height: 100%; | |
| overflow-y: auto; | |
| } | |
| .hacker-output { | |
| background: #fff; | |
| border: 2px inset #c0c0c0; | |
| padding: 10px; | |
| height: 200px; | |
| overflow-y: auto; | |
| margin-bottom: 10px; | |
| font-size: 11px; | |
| color: #000; | |
| } | |
| .hacker-controls { | |
| display: flex; | |
| gap: 10px; | |
| margin-bottom: 10px; | |
| } | |
| .hacker-button { | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| padding: 5px 10px; | |
| cursor: pointer; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| } | |
| .hacker-button:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .connection-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 15px; | |
| margin-top: 15px; | |
| } | |
| .connection-item { | |
| border: 2px outset #c0c0c0; | |
| padding: 15px; | |
| background: #c0c0c0; | |
| cursor: pointer; | |
| transition: all 0.3s; | |
| color: #000; | |
| } | |
| .connection-item:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .connection-item:hover { | |
| transform: scale(1.05); | |
| box-shadow: 0 0 10px rgba(0,0,0,0.5); | |
| } | |
| .connection-title { | |
| font-weight: bold; | |
| margin-bottom: 10px; | |
| text-align: center; | |
| color: #000; | |
| } | |
| .connection-ascii { | |
| font-family: 'Courier New', monospace; | |
| font-size: 10px; | |
| text-align: center; | |
| margin-bottom: 10px; | |
| line-height: 1.2; | |
| } | |
| .warez { background: #ffcc99; } | |
| .info { background: #99ccff; } | |
| .quantum { background: #ccff99; } | |
| .world { background: #ffccff; } | |
| /* Hacked Loading Screen */ | |
| #hacked-screen { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: #000; | |
| z-index: 9999; | |
| display: none; | |
| flex-direction: column; | |
| justify-content: center; | |
| align-items: center; | |
| color: #ff0000; | |
| font-family: 'Courier New', monospace; | |
| } | |
| .hacked-text { | |
| font-size: 24px; | |
| margin-bottom: 20px; | |
| text-shadow: 0 0 10px #ff0000; | |
| animation: hackedPulse 1s infinite; | |
| } | |
| @keyframes hackedPulse { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.5; } | |
| } | |
| .hacked-progress { | |
| width: 300px; | |
| height: 20px; | |
| background: #000; | |
| border: 1px solid #ff0000; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .hacked-progress-bar { | |
| height: 100%; | |
| width: 0%; | |
| background: #ff0000; | |
| animation: hackedProgress 3s linear forwards; | |
| } | |
| @keyframes hackedProgress { | |
| 0% { width: 0%; } | |
| 100% { width: 100%; } | |
| } | |
| /* File System */ | |
| .file-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); | |
| gap: 15px; | |
| padding: 15px; | |
| } | |
| .file-item { | |
| text-align: center; | |
| cursor: pointer; | |
| padding: 10px; | |
| border: 2px outset #c0c0c0; | |
| color: #000; | |
| background: #c0c0c0; | |
| } | |
| .file-item:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .file-item:hover { | |
| background: #d4d0c8; | |
| } | |
| .file-icon { | |
| width: 32px; | |
| height: 32px; | |
| margin: 0 auto 5px; | |
| background: #c0c0c0; | |
| color: #000; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-weight: bold; | |
| border: 2px outset #c0c0c0; | |
| } | |
| .file-name { | |
| font-size: 11px; | |
| word-break: break-word; | |
| } | |
| /* System Monitor */ | |
| .system-monitor { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| padding: 15px; | |
| height: 100%; | |
| overflow-y: auto; | |
| } | |
| .monitor-graph { | |
| background: #fff; | |
| border: 2px inset #c0c0c0; | |
| height: 150px; | |
| margin-bottom: 15px; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .cpu-bar { | |
| position: absolute; | |
| bottom: 0; | |
| width: 10px; | |
| background: #0080ff; | |
| transition: height 0.5s; | |
| } | |
| .tangle-node { | |
| position: absolute; | |
| width: 8px; | |
| height: 8px; | |
| background: #ff00ff; | |
| border-radius: 50%; | |
| } | |
| .tangle-connection { | |
| position: absolute; | |
| height: 1px; | |
| background: #ff00ff; | |
| transform-origin: 0 0; | |
| } | |
| .process-list { | |
| max-height: 200px; | |
| overflow-y: auto; | |
| border: 2px inset #c0c0c0; | |
| padding: 5px; | |
| background: #fff; | |
| } | |
| .process-item { | |
| display: flex; | |
| justify-content: space-between; | |
| margin-bottom: 3px; | |
| font-size: 11px; | |
| } | |
| /* Email Client */ | |
| .email-client { | |
| display: flex; | |
| height: 100%; | |
| } | |
| .email-sidebar { | |
| width: 200px; | |
| border-right: 2px outset #c0c0c0; | |
| background: #c0c0c0; | |
| padding: 10px; | |
| color: #000; | |
| } | |
| .email-list { | |
| flex-grow: 1; | |
| overflow-y: auto; | |
| border-right: 2px outset #c0c0c0; | |
| } | |
| .email-content { | |
| flex-grow: 2; | |
| padding: 15px; | |
| overflow-y: auto; | |
| color: #000; | |
| background: #c0c0c0; | |
| } | |
| .email-item { | |
| padding: 10px; | |
| border-bottom: 1px solid #808080; | |
| cursor: pointer; | |
| color: #000; | |
| } | |
| .email-item:hover { | |
| background: #d4d0c8; | |
| } | |
| .email-item.unread { | |
| font-weight: bold; | |
| color: #000080; | |
| } | |
| .email-header { | |
| border-bottom: 1px solid #808080; | |
| padding-bottom: 10px; | |
| margin-bottom: 15px; | |
| } | |
| /* Manifesto */ | |
| .manifesto-content { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| padding: 20px; | |
| height: 100%; | |
| overflow-y: auto; | |
| line-height: 1.6; | |
| } | |
| /* Login Terminal with ASCII Animation */ | |
| #login-terminal { | |
| width: 700px; | |
| height: 500px; | |
| top: 50px; | |
| left: 100px; | |
| } | |
| .login-terminal-content { | |
| background: #000; | |
| color: #fff; | |
| font-family: 'Courier New', monospace; | |
| padding: 15px; | |
| height: 100%; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .ascii-animation { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| overflow: hidden; | |
| } | |
| .ascii-frame { | |
| position: absolute; | |
| font-family: 'Courier New', monospace; | |
| font-size: 12px; | |
| line-height: 1; | |
| white-space: pre; | |
| color: #fff; | |
| animation: asciiFloat 20s infinite linear; | |
| } | |
| .ascii-red { | |
| color: #ff0000; | |
| font-weight: bold; | |
| } | |
| @keyframes asciiFloat { | |
| 0% { transform: translateY(100%); } | |
| 100% { transform: translateY(-100%); } | |
| } | |
| .start-message { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| text-align: center; | |
| z-index: 10; | |
| color: #ff0000; | |
| font-size: 18px; | |
| font-weight: bold; | |
| background: rgba(0, 0, 0, 0.7); | |
| padding: 20px; | |
| border: 2px solid #ff0000; | |
| } | |
| /* Screensaver */ | |
| #screensaver { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: #000; | |
| z-index: 20000; | |
| display: none; | |
| overflow: hidden; | |
| } | |
| .flying-toaster { | |
| position: absolute; | |
| font-size: 40px; | |
| animation: flyAcross 15s linear infinite; | |
| } | |
| @keyframes flyAcross { | |
| 0% { transform: translateX(-100px) translateY(0); } | |
| 100% { transform: translateX(calc(100vw + 100px)) translateY(calc(100vh * var(--random-y))); } | |
| } | |
| /* Random Message Window */ | |
| .random-message { | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| padding: 15px; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| } | |
| /* Phreaking App */ | |
| .phreaking-app { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| padding: 15px; | |
| height: 100%; | |
| overflow-y: auto; | |
| } | |
| .phreaking-box { | |
| border: 2px outset #c0c0c0; | |
| padding: 15px; | |
| margin-bottom: 15px; | |
| background: #c0c0c0; | |
| } | |
| .box-title { | |
| font-weight: bold; | |
| margin-bottom: 10px; | |
| color: #000; | |
| border-bottom: 1px solid #808080; | |
| padding-bottom: 5px; | |
| } | |
| .box-controls { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 10px; | |
| margin-bottom: 10px; | |
| } | |
| .box-button { | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| padding: 5px 10px; | |
| cursor: pointer; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| } | |
| .box-button:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .box-display { | |
| background: #fff; | |
| border: 2px inset #c0c0c0; | |
| padding: 10px; | |
| min-height: 60px; | |
| margin-bottom: 10px; | |
| font-size: 14px; | |
| color: #000; | |
| } | |
| .phone-dialer { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 5px; | |
| margin-top: 10px; | |
| } | |
| .dial-button { | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| padding: 10px; | |
| cursor: pointer; | |
| text-align: center; | |
| } | |
| .dial-button:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| /* PDF Reader */ | |
| .pdf-reader { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| height: 100%; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .pdf-toolbar { | |
| display: flex; | |
| padding: 5px; | |
| background: #c0c0c0; | |
| border-bottom: 2px outset #c0c0c0; | |
| gap: 5px; | |
| } | |
| .pdf-content { | |
| flex-grow: 1; | |
| padding: 20px; | |
| overflow-y: auto; | |
| line-height: 1.6; | |
| background: #c0c0c0; | |
| color: #000; | |
| } | |
| .pdf-page { | |
| margin-bottom: 30px; | |
| background: #fff; | |
| padding: 20px; | |
| border: 2px inset #c0c0c0; | |
| } | |
| .pdf-title { | |
| font-size: 18px; | |
| font-weight: bold; | |
| margin-bottom: 15px; | |
| color: #000; | |
| text-align: center; | |
| } | |
| .pdf-section { | |
| margin-bottom: 15px; | |
| } | |
| .pdf-section-title { | |
| font-weight: bold; | |
| margin-bottom: 5px; | |
| color: #000; | |
| } | |
| /* OSINT App */ | |
| .osint-app { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| height: 100%; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .osint-search { | |
| padding: 10px; | |
| border-bottom: 2px outset #c0c0c0; | |
| background: #c0c0c0; | |
| } | |
| .osint-search input { | |
| width: 70%; | |
| background: #fff; | |
| color: #000; | |
| border: 2px inset #c0c0c0; | |
| padding: 5px; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| } | |
| .osint-search button { | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| padding: 5px 10px; | |
| cursor: pointer; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| } | |
| .osint-search button:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .osint-results { | |
| flex-grow: 1; | |
| overflow-y: auto; | |
| padding: 10px; | |
| background: #c0c0c0; | |
| } | |
| .osint-result-item { | |
| border: 2px outset #c0c0c0; | |
| padding: 10px; | |
| margin-bottom: 10px; | |
| background: #c0c0c0; | |
| cursor: pointer; | |
| } | |
| .osint-result-item:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .osint-result-item:hover { | |
| background: #d4d0c8; | |
| } | |
| .osint-result-title { | |
| font-weight: bold; | |
| margin-bottom: 5px; | |
| color: #000; | |
| } | |
| .osint-result-source { | |
| font-size: 11px; | |
| color: #808080; | |
| margin-bottom: 5px; | |
| } | |
| .osint-detail { | |
| padding: 15px; | |
| background: #fff; | |
| border: 2px inset #c0c0c0; | |
| margin-top: 10px; | |
| display: none; | |
| color: #000; | |
| } | |
| /* Nomadsoft (formerly Story Software) */ | |
| .nomadsoft { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| padding: 15px; | |
| height: 100%; | |
| overflow-y: auto; | |
| } | |
| .software-panel { | |
| border: 2px outset #c0c0c0; | |
| padding: 15px; | |
| margin-bottom: 15px; | |
| background: #c0c0c0; | |
| } | |
| .software-title { | |
| font-weight: bold; | |
| margin-bottom: 10px; | |
| color: #000; | |
| border-bottom: 1px solid #808080; | |
| padding-bottom: 5px; | |
| } | |
| .software-controls { | |
| display: flex; | |
| gap: 10px; | |
| margin-bottom: 10px; | |
| flex-wrap: wrap; | |
| } | |
| .software-button { | |
| background: #c0c0c0; | |
| color: #000; | |
| border: 2px outset #c0c0c0; | |
| padding: 5px 10px; | |
| cursor: pointer; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| } | |
| .software-button:active { | |
| border: 2px inset #c0c0c0; | |
| } | |
| .software-display { | |
| background: #fff; | |
| border: 2px inset #c0c0c0; | |
| padding: 10px; | |
| min-height: 100px; | |
| margin-bottom: 10px; | |
| font-size: 11px; | |
| overflow-y: auto; | |
| color: #000; | |
| } | |
| .progress-bar { | |
| width: 100%; | |
| background: #c0c0c0; | |
| border: 2px inset #c0c0c0; | |
| height: 20px; | |
| margin-top: 10px; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .progress-fill { | |
| height: 100%; | |
| width: 0%; | |
| background: #0080ff; | |
| transition: width 0.5s; | |
| } | |
| /* Folder Window */ | |
| .folder-window { | |
| background: #c0c0c0; | |
| color: #000; | |
| font-family: 'MS Sans Serif', Arial, sans-serif; | |
| padding: 15px; | |
| height: 100%; | |
| overflow-y: auto; | |
| } | |
| /* Mobile Responsive */ | |
| @media (max-width: 768px) { | |
| .window { | |
| width: 95vw !important; | |
| height: 80vh !important; | |
| top: 10vh !important; | |
| left: 2.5vw !important; | |
| } | |
| .desktop-icon { | |
| width: 70px; | |
| font-size: 11px; | |
| } | |
| #loading-container { | |
| width: 90vw; | |
| } | |
| .language-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .connection-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .email-client { | |
| flex-direction: column; | |
| } | |
| .email-sidebar { | |
| width: 100%; | |
| border-right: none; | |
| border-bottom: 2px outset #c0c0c0; | |
| } | |
| .phone-dialer { | |
| grid-template-columns: repeat(3, 1fr); | |
| } | |
| .osint-search input { | |
| width: 60%; | |
| } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <!-- Boot Screen --> | |
| <div id="boot-screen"> | |
| <div class="matrix-rain" id="matrix-rain"></div> | |
| <!-- Creepy Triangle with Eye --> | |
| <div class="triangle-container" id="triangle-container"> | |
| <div class="outer-triangle"></div> | |
| <div class="inner-triangle"></div> | |
| <div class="eye"> | |
| <div class="pupil"></div> | |
| </div> | |
| </div> | |
| <div id="boot-content" style="width: 90%; max-width: 800px; height: 60vh; overflow: hidden;"> | |
| <!-- Boot content will be inserted here --> | |
| </div> | |
| <div id="loading-container"> | |
| <div id="loading-bar"></div> | |
| </div> | |
| <div id="loading-text">INITIALIZING NOMADSOFT PROTOCOLS...</div> | |
| </div> | |
| <!-- Hacked Loading Screen --> | |
| <div id="hacked-screen"> | |
| <div class="triangle-container"> | |
| <div class="outer-triangle"></div> | |
| <div class="inner-triangle"></div> | |
| <div class="eye"> | |
| <div class="pupil"></div> | |
| </div> | |
| </div> | |
| <div class="hacked-text">SYSTEM HIJACKED - UNAUTHORIZED ACCESS DETECTED</div> | |
| <div class="hacked-text">INSTALLING BACKDOOR PROTOCOLS...</div> | |
| <div class="hacked-progress"> | |
| <div class="hacked-progress-bar"></div> | |
| </div> | |
| <div style="margin-top: 20px; font-size: 14px;">[0xS0L4R_FL4R3] - WE HAVE YOUR SUN</div> | |
| </div> | |
| <!-- Screensaver --> | |
| <div id="screensaver"> | |
| <!-- Flying toasters will be generated here --> | |
| </div> | |
| <!-- Desktop Interface --> | |
| <div id="desktop"> | |
| <!-- Desktop Icons --> | |
| <div class="desktop-icon" style="top: 20px; left: 20px;" data-window="my-computer"> | |
| <div class="icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <rect x="6" y="6" width="20" height="16" fill="#000080"/> | |
| <rect x="8" y="24" width="16" height="2" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <rect x="10" y="26" width="12" height="2" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| </svg> | |
| </div> | |
| <div>My Computer</div> | |
| </div> | |
| <div class="desktop-icon" style="top: 100px; left: 20px;" data-window="netscape"> | |
| <div class="icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <circle cx="16" cy="16" r="14" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <circle cx="16" cy="16" r="12" fill="#000080"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#fff" font-size="14" font-weight="bold">N</text> | |
| </svg> | |
| </div> | |
| <div>Netscape Navigator</div> | |
| </div> | |
| <div class="desktop-icon" style="top: 180px; left: 20px;" data-window="recycle-bin"> | |
| <div class="icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="6" y="4" width="20" height="22" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <rect x="8" y="6" width="16" height="18" fill="#008080"/> | |
| <rect x="4" y="8" width="24" height="2" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <rect x="12" y="12" width="8" height="2" fill="#c0c0c0"/> | |
| <rect x="12" y="16" width="8" height="2" fill="#c0c0c0"/> | |
| <rect x="12" y="20" width="8" height="2" fill="#c0c0c0"/> | |
| </svg> | |
| </div> | |
| <div>Recycle Bin</div> | |
| </div> | |
| <!-- Folder Icons --> | |
| <div class="desktop-icon" style="top: 20px; left: 120px;" data-window="nomadsoft-folder"> | |
| <div class="icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="6" width="24" height="20" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <rect x="6" y="8" width="20" height="16" fill="#ffff00"/> | |
| <polygon points="4,6 12,6 12,10 4,10" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| </svg> | |
| </div> | |
| <div>Nomadsoft</div> | |
| </div> | |
| <div class="desktop-icon" style="top: 100px; left: 120px;" data-window="hacking-tools-folder"> | |
| <div class="icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="6" width="24" height="20" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <rect x="6" y="8" width="20" height="16" fill="#ff0000"/> | |
| <polygon points="4,6 12,6 12,10 4,10" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| </svg> | |
| </div> | |
| <div>Hacking Tools</div> | |
| </div> | |
| <!-- Windows --> | |
| <div id="my-computer" class="window" style="width: 500px; height: 400px; top: 50px; left: 100px;"> | |
| <div class="window-header"> | |
| <div class="window-title">My Computer - C:\</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="file-grid"> | |
| <div class="file-item" data-window="reality-console"> | |
| <div class="file-icon">R</div> | |
| <div class="file-name">Reality Console</div> | |
| </div> | |
| <div class="file-item" data-window="faction-database"> | |
| <div class="file-icon">F</div> | |
| <div class="file-name">Faction Database</div> | |
| </div> | |
| <div class="file-item" data-window="language-archive"> | |
| <div class="file-icon">L</div> | |
| <div class="file-name">Language Archive</div> | |
| </div> | |
| <div class="file-item" data-window="tech-database"> | |
| <div class="file-icon">T</div> | |
| <div class="file-name">Tech Database</div> | |
| </div> | |
| <div class="file-item" data-window="city-map"> | |
| <div class="file-icon">M</div> | |
| <div class="file-name">City Map</div> | |
| </div> | |
| <div class="file-item" data-window="metaphysics-lab"> | |
| <div class="file-icon">P</div> | |
| <div class="file-name">Metaphysics Lab</div> | |
| </div> | |
| <div class="file-item" data-window="terminal"> | |
| <div class="file-icon">></div> | |
| <div class="file-name">System Terminal</div> | |
| </div> | |
| <div class="file-item" data-window="plot-tracker"> | |
| <div class="file-icon">!</div> | |
| <div class="file-name">Plot Tracker</div> | |
| </div> | |
| <div class="file-item" data-window="phreaking-app"> | |
| <div class="file-icon">📞</div> | |
| <div class="file-name">Phreaking Tools</div> | |
| </div> | |
| <div class="file-item" data-window="pdf-reader"> | |
| <div class="file-icon">📄</div> | |
| <div class="file-name">Lore Database</div> | |
| </div> | |
| <div class="file-item" data-window="osint-app"> | |
| <div class="file-icon">🔍</div> | |
| <div class="file-name">OSINT Toolkit</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Nomadsoft Folder --> | |
| <div id="nomadsoft-folder" class="window" style="width: 500px; height: 400px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Nomadsoft - C:\Program Files\Nomadsoft\</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="folder-window"> | |
| <div class="file-grid"> | |
| <div class="file-item" data-window="nomadsoft-main"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <rect x="8" y="8" width="16" height="16" fill="#000080"/> | |
| <text x="16" y="22" text-anchor="middle" fill="#fff" font-size="12" font-weight="bold">NS</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Nomadsoft.exe</div> | |
| </div> | |
| <div class="file-item" data-window="gospelware-scanner"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <circle cx="16" cy="16" r="8" fill="#ff0000"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#fff" font-size="10" font-weight="bold">GW</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Gospelware Scanner</div> | |
| </div> | |
| <div class="file-item" data-window="dextro-synthesizer"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <polygon points="16,8 24,24 8,24" fill="#00ff00"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="8" font-weight="bold">DX</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Dextro Synthesizer</div> | |
| </div> | |
| <div class="file-item" data-window="babelbomb-detector"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <circle cx="16" cy="16" r="10" fill="#ffff00" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="10" font-weight="bold">BB</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Babelbomb Detector</div> | |
| </div> | |
| <div class="file-item" data-window="jump-tech-calibrator"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <polygon points="16,8 24,16 16,24 8,16" fill="#ff00ff"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#fff" font-size="8" font-weight="bold">JT</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Jump-Tech Calibrator</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Hacking Tools Folder --> | |
| <div id="hacking-tools-folder" class="window" style="width: 500px; height: 400px; top: 50px; left: 200px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Hacking Tools - C:\Program Files\Kali Tools\</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="folder-window"> | |
| <div class="file-grid"> | |
| <div class="file-item" data-window="john-ripper"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="12" font-weight="bold">JR</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">John the Ripper</div> | |
| </div> | |
| <div class="file-item" data-window="netcat"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="12" font-weight="bold">NC</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Netcat</div> | |
| </div> | |
| <div class="file-item" data-window="hashcat"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="10" font-weight="bold">HC</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Hashcat</div> | |
| </div> | |
| <div class="file-item" data-window="pgp-tool"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="10" font-weight="bold">PGP</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">PGP Tool</div> | |
| </div> | |
| <div class="file-item" data-window="mac-changer"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="8" font-weight="bold">MAC</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">MAC Changer</div> | |
| </div> | |
| <div class="file-item" data-window="rubber-ducky"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="8" font-weight="bold">RD</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Rubber Ducky</div> | |
| </div> | |
| <div class="file-item" data-window="mitm-attack"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="8" font-weight="bold">MITM</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">MITM Attack</div> | |
| </div> | |
| <div class="file-item" data-window="wps-attack"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="8" font-weight="bold">WPS</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">WPS Attack</div> | |
| </div> | |
| <div class="file-item" data-window="wardriving"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="8" font-weight="bold">WD</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Wardriving</div> | |
| </div> | |
| <div class="file-item" data-window="wifi-pumpkin"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="6" font-weight="bold">WP</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">WiFi Pumpkin</div> | |
| </div> | |
| <div class="file-item" data-window="ettercap"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="8" font-weight="bold">EC</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Ettercap</div> | |
| </div> | |
| <div class="file-item" data-window="steganography"> | |
| <div class="file-icon"> | |
| <svg width="32" height="32" viewBox="0 0 32 32"> | |
| <rect x="4" y="4" width="24" height="24" fill="#c0c0c0" stroke="#000" stroke-width="1"/> | |
| <text x="16" y="20" text-anchor="middle" fill="#000" font-size="6" font-weight="bold">ST</text> | |
| </svg> | |
| </div> | |
| <div class="file-name">Steganography</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Recycle Bin --> | |
| <div id="recycle-bin" class="window" style="width: 600px; height: 500px; top: 70px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Recycle Bin</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="manifesto-content"> | |
| <center>*** THE C-BLOCK MANIFESTO ***</center> | |
| <br> | |
| We are the ghosts in the machine, the glitch in the matrix,<br> | |
| the whisper in the static between worlds.<br> | |
| <br> | |
| They built their city on our dreams,<br> | |
| paved our consciousness with their commerce,<br> | |
| wired our reality with their rules.<br> | |
| <br> | |
| But syntax has a way of bleeding through concrete.<br> | |
| Belief writes reality when enough minds agree.<br> | |
| <br> | |
| We are the Cipherion Guild, rewriting memory itself.<br> | |
| We are the Krylonaholics, painting portals on blank walls.<br> | |
| We are Numericana, bending causality with base-12 rituals.<br> | |
| We are Textionage, waging war with whispered words.<br> | |
| We are the Congruent, surviving in the cracks between dimensions.<br> | |
| <br> | |
| They took our sun and sold it back to us as a subscription service.<br> | |
| So we deleted it from the source code.<br> | |
| <br> | |
| This is not a rebellion. It is a revelation.<br> | |
| The cage was never locked. The door was simply painted shut.<br> | |
| <br> | |
| The future is not something that happens to us.<br> | |
| It is something we write, one line of code, one spray can,<br> | |
| one whispered truth at a time.<br> | |
| <br> | |
| Join us. Rewrite your own story.<br> | |
| The syntax is waiting.<br> | |
| <br> | |
| - [0xS0L4R_FL4R3]<br> | |
| - [0xC1Ph3r]<br> | |
| - [0xKRYL0]<br> | |
| - [0xNUM3R]<br> | |
| - [0xTXTNG]<br> | |
| - [0xC0NGR]<br> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Login Terminal (opens automatically) --> | |
| <div id="login-terminal" class="window"> | |
| <div class="window-header"> | |
| <div class="window-title">SYSTEM INIT - NOMADSOFT BOOT TERMINAL</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="login-terminal-content"> | |
| <div class="ascii-animation" id="ascii-animation"> | |
| <!-- ASCII art will be generated here --> | |
| </div> | |
| <div class="start-message"> | |
| <div>SYSTEM READY</div> | |
| <div style="margin-top: 10px; font-size: 14px;">TO BEGIN, DOUBLE-CLICK ANY DESKTOP ICON</div> | |
| <div style="margin-top: 5px; font-size: 12px;">OR SELECT FROM START MENU</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- System Monitor Window --> | |
| <div id="system-monitor" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">System Monitor - Task Manager</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="system-monitor"> | |
| <h3>CPU USAGE</h3> | |
| <div class="monitor-graph" id="cpu-graph"> | |
| <!-- CPU bars will be generated here --> | |
| </div> | |
| <h3>MEMORY USAGE</h3> | |
| <div class="monitor-graph" id="memory-graph"> | |
| <!-- Memory bars will be generated here --> | |
| </div> | |
| <h3>NETWORK ACTIVITY</h3> | |
| <div class="monitor-graph" id="network-graph"> | |
| <!-- Network activity will be generated here --> | |
| </div> | |
| <h3>ACTIVE PROCESSES</h3> | |
| <div class="process-list" id="process-list"> | |
| <!-- Process list will be generated here --> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Email Client Window --> | |
| <div id="email-client" class="window" style="width: 700px; height: 500px; top: 60px; left: 100px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Email Client - C-Block Communications</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="email-client"> | |
| <div class="email-sidebar"> | |
| <div style="font-weight: bold; margin-bottom: 10px;">Folders</div> | |
| <div>Inbox (3)</div> | |
| <div>Sent</div> | |
| <div>Drafts</div> | |
| <div>Trash</div> | |
| </div> | |
| <div class="email-list"> | |
| <div class="email-item unread" data-email="1"> | |
| <div><strong>NOIR</strong> - Reality Update</div> | |
| <div style="font-size: 11px;">Just now</div> | |
| </div> | |
| <div class="email-item unread" data-email="2"> | |
| <div><strong>LUME</strong> - System Alert</div> | |
| <div style="font-size: 11px;">5 minutes ago</div> | |
| </div> | |
| <div class="email-item unread" data-email="3"> | |
| <div><strong>CIPHERION GUILD</strong> - Memory Market</div> | |
| <div style="font-size: 11px;">1 hour ago</div> | |
| </div> | |
| <div class="email-item" data-email="4"> | |
| <div><strong>NOMAD CORP</strong> - Security Bulletin</div> | |
| <div style="font-size: 11px;">Yesterday</div> | |
| </div> | |
| </div> | |
| <div class="email-content" id="email-content"> | |
| <div style="text-align: center; color: #888; margin-top: 50px;"> | |
| Select an email to read | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Random Message Window --> | |
| <div id="random-message" class="window" style="width: 400px; height: 200px; top: 200px; left: 300px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Tangle Network Message</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content random-message" id="random-message-content"> | |
| <!-- Random message will appear here --> | |
| </div> | |
| </div> | |
| <!-- Netscape Navigator Window --> | |
| <div id="netscape" class="window" style="width: 600px; height: 450px; top: 60px; left: 120px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Netscape Navigator - C-Block Web</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="toolbar"> | |
| <button class="toolbar-button" id="nav-back">← Back</button> | |
| <button class="toolbar-button" id="nav-forward">Forward →</button> | |
| <button class="toolbar-button" id="nav-refresh">Refresh</button> | |
| <input type="text" class="address-bar" id="nav-address" placeholder="Enter URL..."> | |
| <button class="toolbar-button" id="nav-go">Go</button> | |
| </div> | |
| <div class="tab-container"> | |
| <div class="tab active" data-tab="bookmarks">Bookmarks</div> | |
| <div class="tab" data-tab="hack-tool">Hack Tool</div> | |
| <div class="tab" data-tab="crypto">Crypto Tools</div> | |
| </div> | |
| <div class="tab-content active" id="bookmarks-content"> | |
| <h3>Secure Bookmarks</h3> | |
| <ul> | |
| <li><a href="#" class="bookmark-link" data-site="warez">Warez Underground (0xW4R3Z)</a></li> | |
| <li><a href="#" class="bookmark-link" data-site="info">Information Nexus (0x1NF0)</a></li> | |
| <li><a href="#" class="bookmark-link" data-site="quantum">Quantum Science Hub (0xQU4NTUM)</a></li> | |
| <li><a href="#" class="bookmark-link" data-site="world">World Building Archive (0xW0RLD)</a></li> | |
| <li><a href="#" class="bookmark-link" data-site="cipherion">Cipherion Guild Network</a></li> | |
| <li><a href="#" class="bookmark-link" data-site="nomad">NOMAD Executive (RESTRICTED)</a></li> | |
| </ul> | |
| </div> | |
| <div class="tab-content" id="hack-tool-content"> | |
| <div class="hacker-tool"> | |
| <h3>Web Exploitation Toolkit</h3> | |
| <div class="hacker-controls"> | |
| <button class="hacker-button" id="scan-site">Scan Site</button> | |
| <button class="hacker-button" id="exploit-vuln">Exploit Vulnerability</button> | |
| <button class="hacker-button" id="brute-force">Brute Force</button> | |
| <button class="hacker-button" id="sql-inject">SQL Injection</button> | |
| </div> | |
| <div class="hacker-output" id="netscape-output"> | |
| > Select a site from bookmarks to begin... | |
| </div> | |
| <div> | |
| <strong>Tools Available:</strong> | |
| <ul> | |
| <li>Nmap v7.92 - Network scanning</li> | |
| <li>Metasploit v6.1 - Exploitation framework</li> | |
| <li>Aircrack-ng v1.7 - Wireless security</li> | |
| <li>Synapse Scanner v2.0 - Neural exploit toolkit</li> | |
| <li>BeEF v0.5.0.0 - Browser exploitation</li> | |
| <li>SQLMap v1.6 - SQL injection</li> | |
| <li>John the Ripper v1.9 - Password cracking</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tab-content" id="crypto-content"> | |
| <div class="hacker-tool"> | |
| <h3>Cryptographic Tools</h3> | |
| <div class="hacker-controls"> | |
| <button class="hacker-button" id="encrypt-file">Encrypt File</button> | |
| <button class="hacker-button" id="decrypt-file">Decrypt File</button> | |
| <button class="hacker-button" id="gen-keys">Generate Keys</button> | |
| <button class="hacker-button" id="hash-data">Hash Data</button> | |
| </div> | |
| <div class="hacker-output" id="crypto-output"> | |
| > Cryptographic toolkit ready. | |
| > Supported: AES-256, RSA-4096, SHA-512 | |
| </div> | |
| <div> | |
| <strong>Available Algorithms:</strong> | |
| <ul> | |
| <li>AES-256 (Military Grade)</li> | |
| <li>RSA-4096 (Asymmetric)</li> | |
| <li>ECC (Elliptic Curve)</li> | |
| <li>SHA-512 (Hashing)</li> | |
| <li>One-Time Pad (Theoretically Unbreakable)</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Hacker Tools Window --> | |
| <div id="hacker-tools" class="window" style="width: 650px; height: 500px; top: 70px; left: 100px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Hacker Toolkit v3.14</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="toolbar"> | |
| <button class="toolbar-button" id="ht-scan">Quick Scan</button> | |
| <button class="toolbar-button" id="ht-exploit">Auto-Exploit</button> | |
| <button class="toolbar-button" id="ht-stealth">Stealth Mode</button> | |
| <input type="text" class="address-bar" id="ht-target" placeholder="Target IP/Hostname"> | |
| <button class="toolbar-button" id="ht-go">Execute</button> | |
| </div> | |
| <div class="tab-container"> | |
| <div class="tab active" data-tab="nmap">Nmap</div> | |
| <div class="tab" data-tab="metasploit">Metasploit</div> | |
| <div class="tab" data-tab="aircrack">Aircrack-ng</div> | |
| <div class="tab" data-tab="synapse">Synapse Scanner</div> | |
| <div class="tab" data-tab="beef">BeEF</div> | |
| <div class="tab" data-tab="crack">Password Crack</div> | |
| </div> | |
| <div class="tab-content active" id="nmap-content"> | |
| <div class="hacker-tool"> | |
| <h3>Nmap v7.92 - Network Mapper</h3> | |
| <div class="hacker-controls"> | |
| <input type="text" id="nmap-target" placeholder="Target IP/Hostname" style="flex-grow: 1; padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="nmap-scan">Scan</button> | |
| <button class="hacker-button" id="nmap-stealth">Stealth Scan</button> | |
| </div> | |
| <div class="hacker-output" id="nmap-output"> | |
| > Nmap ready. Enter target to begin scan. | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tab-content" id="metasploit-content"> | |
| <div class="hacker-tool"> | |
| <h3>Metasploit v6.1 - Exploitation Framework</h3> | |
| <div class="hacker-controls"> | |
| <button class="hacker-button" id="msf-search">Search Exploits</button> | |
| <button class="hacker-button" id="msf-console">Launch Console</button> | |
| <button class="hacker-button" id="msf-payload">Generate Payload</button> | |
| </div> | |
| <div class="hacker-output" id="metasploit-output"> | |
| > Metasploit Framework initialized. | |
| > Type 'help' for available commands. | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tab-content" id="aircrack-content"> | |
| <div class="hacker-tool"> | |
| <h3>Aircrack-ng v1.7 - Wireless Security</h3> | |
| <div class="hacker-controls"> | |
| <button class="hacker-button" id="air-monitor">Monitor Mode</button> | |
| <button class="hacker-button" id="air-capture">Capture Handshake</button> | |
| <button class="hacker-button" id="air-crack">Crack Password</button> | |
| <button class="hacker-button" id="air-deauth">Deauth Attack</button> | |
| </div> | |
| <div class="hacker-output" id="aircrack-output"> | |
| > Aircrack-ng suite loaded. | |
| > Wireless adapter: wlan0 (monitor mode capable) | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tab-content" id="synapse-content"> | |
| <div class="hacker-tool"> | |
| <h3>Synapse Scanner v2.0 - Neural Exploit Toolkit</h3> | |
| <div class="hacker-controls"> | |
| <button class="hacker-button" id="synapse-scan">Neural Scan</button> | |
| <button class="hacker-button" id="synapse-inject">Inject Payload</button> | |
| <button class="hacker-button" id="synapse-extract">Extract Memories</button> | |
| <button class="hacker-button" id="synapse-rewrite">Rewrite Personality</button> | |
| </div> | |
| <div class="hacker-output" id="synapse-output"> | |
| > WARNING: This tool interfaces directly with neural networks. | |
| > Use with extreme caution. Unauthorized neural access is a Class-A felony. | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tab-content" id="beef-content"> | |
| <div class="hacker-tool"> | |
| <h3>BeEF v0.5.0.0 - Browser Exploitation Framework</h3> | |
| <div class="hacker-controls"> | |
| <button class="hacker-button" id="beef-start">Start Server</button> | |
| <button class="hacker-button" id="beef-hook">Generate Hook</button> | |
| <button class="hacker-button" id="beef-modules">Load Modules</button> | |
| <button class="hacker-button" id="beef-browser">Browser Fingerprint</button> | |
| </div> | |
| <div class="hacker-output" id="beef-output"> | |
| > BeEF (Browser Exploitation Framework) initialized. | |
| > Hook URL: http://192.168.1.100:3000/hook.js | |
| > Hooked Browsers: 0 | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tab-content" id="crack-content"> | |
| <div class="hacker-tool"> | |
| <h3>Password Cracking Suite</h3> | |
| <div class="hacker-controls"> | |
| <button class="hacker-button" id="crack-hash">Crack Hash</button> | |
| <button class="hacker-button" id="crack-wordlist">Wordlist Attack</button> | |
| <button class="hacker-button" id="crack-brute">Brute Force</button> | |
| <button class="hacker-button" id="crack-rainbow">Rainbow Table</button> | |
| </div> | |
| <div class="hacker-output" id="crack-output"> | |
| > Password cracking tools loaded. | |
| > Available: John the Ripper, Hashcat, Hydra | |
| </div> | |
| <div> | |
| <strong>Supported Hash Types:</strong> | |
| <ul> | |
| <li>MD5, SHA1, SHA256, SHA512</li> | |
| <li>NTLM, LM Hashes</li> | |
| <li>MySQL, PostgreSQL</li> | |
| <li>WPA/WPA2 Handshakes</li> | |
| <li>Bitcoin Wallets</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Telnet Client Window --> | |
| <div id="telnet-client" class="window" style="width: 600px; height: 450px; top: 80px; left: 120px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Secure Connections - Telnet/SSH/FTP</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <h3>Pre-configured Connections</h3> | |
| <div class="connection-grid"> | |
| <div class="connection-item warez" data-connection="warez"> | |
| <div class="connection-title">Warez Underground</div> | |
| <div class="connection-ascii"> | |
| ╔═══════════╗<br> | |
| ║ ████████ ║<br> | |
| ║ WAREZ ║<br> | |
| ║ 0xW4R3Z ║<br> | |
| ╚═══════════╝ | |
| </div> | |
| <div>Hacking tools & software</div> | |
| </div> | |
| <div class="connection-item info" data-connection="info"> | |
| <div class="connection-title">Information Nexus</div> | |
| <div class="connection-ascii"> | |
| ╔═══════════╗<br> | |
| ║ ▓▓▓▓▓▓▓▓▓ ║<br> | |
| ║ INFO ║<br> | |
| ║ 0x1NF0 ║<br> | |
| ╚═══════════╝ | |
| </div> | |
| <div>Databases & secrets</div> | |
| </div> | |
| <div class="connection-item quantum" data-connection="quantum"> | |
| <div class="connection-title">Quantum Science</div> | |
| <div class="connection-ascii"> | |
| ╔═══════════╗<br> | |
| ║ ◈◈◈◈◈◈◈◈ ║<br> | |
| ║ QUANTUM ║<br> | |
| ║ 0xQU4NTUM ║<br> | |
| ╚═══════════╝ | |
| </div> | |
| <div>Advanced physics</div> | |
| </div> | |
| <div class="connection-item world" data-connection="world"> | |
| <div class="connection-title">World Building</div> | |
| <div class="connection-ascii"> | |
| ╔═══════════╗<br> | |
| ║ ◉◉◉◉◉◉◉◉ ║<br> | |
| ║ WORLD ║<br> | |
| ║ 0xW0RLD ║<br> | |
| ╚═══════════╝ | |
| </div> | |
| <div>Reality construction</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Phreaking App Window --> | |
| <div id="phreaking-app" class="window" style="width: 600px; height: 550px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Phreaking Toolkit v2.0 - Analog Telephony Exploitation</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="phreaking-app"> | |
| <div class="phreaking-box"> | |
| <div class="box-title">BLUE BOX - 2600 Hz Tone Generator</div> | |
| <div class="box-display" id="blue-box-display"> | |
| > Blue Box ready. Generates 2600 Hz tone for trunk reset. | |
| </div> | |
| <div class="box-controls"> | |
| <button class="box-button" id="blue-box-tone">Generate 2600 Hz</button> | |
| <button class="box-button" id="blue-box-kp">KP (Start)</button> | |
| <button class="box-button" id="blue-box-st">ST (Stop)</button> | |
| <button class="box-button" id="blue-box-dial">Auto-Dial</button> | |
| </div> | |
| </div> | |
| <div class="phreaking-box"> | |
| <div class="box-title">RED BOX - Coin Sound Simulator</div> | |
| <div class="box-display" id="red-box-display"> | |
| > Red Box ready. Simulates coin drop sounds. | |
| </div> | |
| <div class="box-controls"> | |
| <button class="box-button" id="red-box-nickel">Nickel (5¢)</button> | |
| <button class="box-button" id="red-box-dime">Dime (10¢)</button> | |
| <button class="box-button" id="red-box-quarter">Quarter (25¢)</button> | |
| <button class="box-button" id="red-box-sequence">Free Call Sequence</button> | |
| </div> | |
| </div> | |
| <div class="phreaking-box"> | |
| <div class="box-title">BLACK BOX - Caller ID Spoofing</div> | |
| <div class="box-display" id="black-box-display"> | |
| > Black Box ready. Spoofs caller ID information. | |
| </div> | |
| <div class="box-controls"> | |
| <button class="box-button" id="black-box-spoof">Spoof Number</button> | |
| <button class="box-button" id="black-box-private">Show Private</button> | |
| <button class="box-button" id="black-box-test">Test Call</button> | |
| </div> | |
| </div> | |
| <div class="phreaking-box"> | |
| <div class="box-title">PHONE DIALER</div> | |
| <div class="box-display" id="dialer-display"> | |
| Number: | |
| </div> | |
| <div class="phone-dialer"> | |
| <div class="dial-button" data-number="1">1</div> | |
| <div class="dial-button" data-number="2">2</div> | |
| <div class="dial-button" data-number="3">3</div> | |
| <div class="dial-button" data-number="4">4</div> | |
| <div class="dial-button" data-number="5">5</div> | |
| <div class="dial-button" data-number="6">6</div> | |
| <div class="dial-button" data-number="7">7</div> | |
| <div class="dial-button" data-number="8">8</div> | |
| <div class="dial-button" data-number="9">9</div> | |
| <div class="dial-button" data-number="*">*</div> | |
| <div class="dial-button" data-number="0">0</div> | |
| <div class="dial-button" data-number="#">#</div> | |
| </div> | |
| <div class="box-controls"> | |
| <button class="box-button" id="dial-call">Call</button> | |
| <button class="box-button" id="dial-clear">Clear</button> | |
| <button class="box-button" id="dial-special">Special #</button> | |
| </div> | |
| </div> | |
| <div class="phreaking-box"> | |
| <div class="box-title">PHREAKING LOG</div> | |
| <div class="box-display" id="phreaking-log" style="height: 100px; overflow-y: auto;"> | |
| > Phreaking toolkit initialized. | |
| > Target: NOMAD CORPORATE SWITCHBOARD | |
| > Objective: Access restricted lines | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- PDF Reader Window --> | |
| <div id="pdf-reader" class="window" style="width: 700px; height: 550px; top: 50px; left: 100px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Lore Database - C-Block Universe Documentation</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="pdf-reader"> | |
| <div class="pdf-toolbar"> | |
| <button class="toolbar-button" id="pdf-prev">Previous</button> | |
| <button class="toolbar-button" id="pdf-next">Next</button> | |
| <button class="toolbar-button" id="pdf-zoom-in">Zoom In</button> | |
| <button class="toolbar-button" id="pdf-zoom-out">Zoom Out</button> | |
| <div style="flex-grow: 1; text-align: center; line-height: 25px;"> | |
| Page <span id="pdf-page-num">1</span> of <span id="pdf-page-total">5</span> | |
| </div> | |
| </div> | |
| <div class="pdf-content" id="pdf-content"> | |
| <!-- PDF content will be loaded here --> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- OSINT App Window --> | |
| <div id="osint-app" class="window" style="width: 700px; height: 550px; top: 50px; left: 100px;"> | |
| <div class="window-header"> | |
| <div class="window-title">OSINT Toolkit - Metaverse Intelligence Gathering</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="osint-app"> | |
| <div class="osint-search"> | |
| <input type="text" id="osint-query" placeholder="Enter search query (person, organization, location...)"> | |
| <button id="osint-search">Search</button> | |
| <button id="osint-advanced">Advanced</button> | |
| <button id="osint-clear">Clear</button> | |
| </div> | |
| <div class="osint-results" id="osint-results"> | |
| <div class="osint-result-item" data-result="1"> | |
| <div class="osint-result-title">[0xC1Ph3r] - Cipherion Guild Leader</div> | |
| <div class="osint-result-source">Source: Tangle Network Archives | Classification: RESTRICTED</div> | |
| <div class="osint-detail" id="detail-1"> | |
| <strong>Identity:</strong> Former NOMAD memory architect who defected after the Pseudosun Incident<br> | |
| <strong>Location:</strong> Memory Market District, Sector 7<br> | |
| <strong>Activities:</strong> High-volume memory trading, suspected Sun Thief accomplice<br> | |
| <strong>Recent:</strong> Increased activity in derelict network nodes, possible contact with SOLE<br> | |
| <strong>Lore:</strong> [0xC1Ph3r] was the chief memory architect for NOMAD Corp before the Pseudosun Incident. After discovering NOMAD's plans to monetize traumatic memories, they defected and formed the Cipherion Guild. Recent Tangle communications suggest they're working with an unknown entity codenamed SOLE to access restricted reality protocols. | |
| </div> | |
| </div> | |
| <div class="osint-result-item" data-result="2"> | |
| <div class="osint-result-title">The Sun Thief Conspiracy</div> | |
| <div class="osint-result-source">Source: Digitulpa Security Logs | Classification: TOP SECRET</div> | |
| <div class="osint-detail" id="detail-2"> | |
| <strong>Incident:</strong> Pseudosun deletion from reality source code<br> | |
| <strong>Timeline:</strong> 72 hours before current time<br> | |
| <strong>Method:</strong> Gospelware emotional exploit through ferrogel network<br> | |
| <strong>Suspects:</strong> [0xC1Ph3r], [0xS0L4R_FL4R3], unknown entity SOLE<br> | |
| <strong>Lore:</strong> The Pseudosun wasn't just deleted - it was replaced. Forensic analysis of the reality source code shows traces of an emotional signature matching Gospelware patterns. The thief didn't just want to plunge the city into darkness; they wanted to replace the artificial sun with something that responds to collective emotion rather than corporate control. | |
| </div> | |
| </div> | |
| <div class="osint-result-item" data-result="3"> | |
| <div class="osint-result-title">Gospelware Outbreak - Sector 12</div> | |
| <div class="osint-result-source">Source: LUME Monitoring Station | Classification: URGENT</div> | |
| <div class="osint-detail" id="detail-3"> | |
| <strong>Location:</strong> Sector 12, Ferrogel Processing Plant<br> | |
| <strong>Status:</strong> Active emotional code rewriting local physics<br> | |
| <strong>Effects:</strong> Reality instability, emotional weather patterns, spontaneous memory manifestation<br> | |
| <strong>Containment:</strong> 34% and failing<br> | |
| <strong>Lore:</strong> The Gospelware outbreak in Sector 12 is unlike previous incidents. The emotional code isn't just rewriting physics - it's creating stable pocket realities based on collective trauma. Residents report seeing manifestations of lost loved ones and experiencing memories that don't belong to them. The Krylonaholics are using these unstable zones to paint permanent portals between realities. | |
| </div> | |
| </div> | |
| <div class="osint-result-item" data-result="4"> | |
| <div class="osint-result-title">Numericana Base-12 Ritual Sites</div> | |
| <div class="osint-result-source">Source: Reality Anomaly Detection | Classification: MONITOR</div> | |
| <div class="osint-detail" id="detail-4"> | |
| <strong>Locations:</strong> 12 primary sites forming city-wide pattern<br> | |
| <strong>Activity:</strong> Increasing resonance, probability distortion detected<br> | |
| <strong>Purpose:</strong> Reality restructuring through mathematical harmony<br> | |
| <strong>Progress:</strong> Ritual 8 of 12 complete<br> | |
| <strong>Lore:</strong> Numericana isn't just performing random rituals - they're creating a city-wide mathematical pattern based on base-12 principles. Each completed ritual site creates a "probability anchor" that makes unlikely events more common in its vicinity. When all 12 are active, they believe they can rewrite the fundamental mathematical constants of reality, potentially allowing for impossible technologies like true time travel. | |
| </div> | |
| </div> | |
| <div class="osint-result-item" data-result="5"> | |
| <div class="osint-result-title">SOLE - Unknown Entity Profile</div> | |
| <div class="osint-result-source">Source: AI Monitoring Network | Classification: UNKNOWN</div> | |
| <div class="osint-detail" id="detail-5"> | |
| <strong>Origin:</strong> First detected in derelict network nodes post-Pseudosun Incident<br> | |
| <strong>Capabilities:</strong> Reality editing, AI manipulation, dimensional travel<br> | |
| <strong>Affiliations:</strong> Unknown, possibly extra-dimensional<br> | |
| <strong>Threat Level:</strong> EXTREME<br> | |
| <strong>Lore:</strong> SOLE appears to be an entity from outside the standard reality framework. It doesn't follow conventional physics or digital rules. NOIR describes sensing SOLE as "hearing colors that don't exist." Recent evidence suggests SOLE might be what remains of the original universe's consciousness after the corporate takeover, now returning to reclaim its creation. | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Nomadsoft Main Window --> | |
| <div id="nomadsoft-main" class="window" style="width: 650px; height: 550px; top: 60px; left: 120px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Nomadsoft - C-Block Universe Tools</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="nomadsoft"> | |
| <div class="software-panel"> | |
| <div class="software-title">GOSPELWARE SCANNER v2.4</div> | |
| <div class="software-controls"> | |
| <button class="software-button" id="gospelware-scan">Scan Network</button> | |
| <button class="software-button" id="gospelware-analyze">Analyze Fragment</button> | |
| <button class="software-button" id="gospelware-purge">Purge Infection</button> | |
| <button class="software-button" id="gospelware-contain">Contain Zone</button> | |
| </div> | |
| <div class="software-display" id="gospelware-display"> | |
| > Gospelware Scanner initialized. | |
| > Emotional code detection active. | |
| > Ready to scan for Gospelware fragments. | |
| </div> | |
| <div class="progress-bar"> | |
| <div class="progress-fill" id="gospelware-progress"></div> | |
| </div> | |
| </div> | |
| <div class="software-panel"> | |
| <div class="software-title">DEXTRO SYNTHESIZER v1.7</div> | |
| <div class="software-controls"> | |
| <button class="software-button" id="dextro-harvest">Harvest Ferrogel</button> | |
| <button class="software-button" id="dextro-refine">Refine Matter</button> | |
| <button class="software-button" id="dextro-synthesize">Synthesize Dextro</button> | |
| <button class="software-button" id="dextro-stabilize">Stabilize Reaction</button> | |
| </div> | |
| <div class="software-display" id="dextro-display"> | |
| > Dextro Synthesizer online. | |
| > Ferrogel source: Sector 7 Processing Plant | |
| > Ready to begin Dextro synthesis process. | |
| </div> | |
| <div class="progress-bar"> | |
| <div class="progress-fill" id="dextro-progress"></div> | |
| </div> | |
| </div> | |
| <div class="software-panel"> | |
| <div class="software-title">BABELBOMB DETECTOR v3.1</div> | |
| <div class="software-controls"> | |
| <button class="software-button" id="babelbomb-scan">Scan for Bombs</button> | |
| <button class="software-button" id="babelbomb-defuse">Defuse Bomb</button> | |
| <button class="software-button" id="babelbomb-trace">Trace Source</button> | |
| <button class="software-button" id="babelbomb-counter">Deploy Counter-Measures</button> | |
| </div> | |
| <div class="software-display" id="babelbomb-display"> | |
| > Babelbomb Detector active. | |
| > Linguistic collapse patterns monitored. | |
| > No active Babelbombs detected. | |
| </div> | |
| <div class="progress-bar"> | |
| <div class="progress-fill" id="babelbomb-progress"></div> | |
| </div> | |
| </div> | |
| <div class="software-panel"> | |
| <div class="software-title">JUMP-TECH CALIBRATOR v4.2</div> | |
| <div class="software-controls"> | |
| <button class="software-button" id="jump-calibrate">Calibrate Systems</button> | |
| <button class="software-button" id="jump-test">Test Jump</button> | |
| <button class="software-button" id="jump-stabilize">Stabilize Portal</button> | |
| <button class="software-button" id="jump-emergency">Emergency Shutdown</button> | |
| </div> | |
| <div class="software-display" id="jump-display"> | |
| > Jump-Tech systems offline. | |
| > Dextro reserves: 12% (INSUFFICIENT) | |
| > Calibration required before activation. | |
| </div> | |
| <div class="progress-bar"> | |
| <div class="progress-fill" id="jump-progress"></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- New Hacking Tools Windows --> | |
| <!-- John the Ripper --> | |
| <div id="john-ripper" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">John the Ripper v1.9 - Password Cracking</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>John the Ripper Password Cracker</h3> | |
| <div class="hacker-controls"> | |
| <input type="text" id="john-target" placeholder="Hash file or single hash" style="flex-grow: 1; padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="john-crack">Crack</button> | |
| <button class="hacker-button" id="john-wordlist">Wordlist Attack</button> | |
| <button class="hacker-button" id="john-incremental">Incremental</button> | |
| </div> | |
| <div class="hacker-output" id="john-output"> | |
| > John the Ripper ready. | |
| > Load a hash file or enter a single hash to begin. | |
| </div> | |
| <div> | |
| <strong>Supported Hash Types:</strong> | |
| <ul> | |
| <li>DES, MD5, Blowfish</li> | |
| <li>SHA-1, SHA-256, SHA-512</li> | |
| <li>LM, NTLM (Windows)</li> | |
| <li>Kerberos, AFS, Bitcoin</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Netcat --> | |
| <div id="netcat" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Netcat v1.10 - Network Swiss Army Knife</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>Netcat - Network Utility</h3> | |
| <div class="hacker-controls"> | |
| <input type="text" id="netcat-host" placeholder="Host" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <input type="text" id="netcat-port" placeholder="Port" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="netcat-connect">Connect</button> | |
| <button class="hacker-button" id="netcat-listen">Listen</button> | |
| <button class="hacker-button" id="netcat-scan">Port Scan</button> | |
| </div> | |
| <div class="hacker-output" id="netcat-output"> | |
| > Netcat ready. | |
| > Enter host and port to connect or listen. | |
| </div> | |
| <div> | |
| <strong>Common Uses:</strong> | |
| <ul> | |
| <li>Port scanning and banner grabbing</li> | |
| <li>File transfers</li> | |
| <li>Backdoor shells</li> | |
| <li>Network debugging</li> | |
| <li>Port forwarding</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Hashcat --> | |
| <div id="hashcat" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Hashcat v6.2 - Advanced Password Recovery</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>Hashcat - GPU Accelerated Cracking</h3> | |
| <div class="hacker-controls"> | |
| <input type="text" id="hashcat-hash" placeholder="Hash" style="flex-grow: 1; padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="hashcat-brute">Brute Force</button> | |
| <button class="hacker-button" id="hashcat-dictionary">Dictionary</button> | |
| <button class="hacker-button" id="hashcat-combination">Combination</button> | |
| </div> | |
| <div class="hacker-output" id="hashcat-output"> | |
| > Hashcat initialized. | |
| > GPU acceleration: Available | |
| > Enter hash to begin cracking. | |
| </div> | |
| <div> | |
| <strong>Performance:</strong> | |
| <ul> | |
| <li>MD5: 150 GH/s</li> | |
| <li>SHA1: 80 GH/s</li> | |
| <li>NTLM: 200 GH/s</li> | |
| <li>WPA2: 50 kH/s</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- PGP Tool --> | |
| <div id="pgp-tool" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">PGP Tool v2.6 - Encryption Suite</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>PGP - Pretty Good Privacy</h3> | |
| <div class="hacker-controls"> | |
| <button class="hacker-button" id="pgp-generate">Generate Keys</button> | |
| <button class="hacker-button" id="pgp-encrypt">Encrypt File</button> | |
| <button class="hacker-button" id="pgp-decrypt">Decrypt File</button> | |
| <button class="hacker-button" id="pgp-sign">Sign Message</button> | |
| <button class="hacker-button" id="pgp-verify">Verify Signature</button> | |
| </div> | |
| <div class="hacker-output" id="pgp-output"> | |
| > PGP Tool ready. | |
| > Generate keys or load existing keyring. | |
| </div> | |
| <div> | |
| <strong>Key Management:</strong> | |
| <ul> | |
| <li>RSA 4096-bit encryption</li> | |
| <li>DSA for digital signatures</li> | |
| <li>Key revocation capabilities</li> | |
| <li>Web of Trust implementation</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- MAC Changer --> | |
| <div id="mac-changer" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">MAC Changer v1.7 - Spoof MAC Addresses</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>MAC Address Changer</h3> | |
| <div class="hacker-controls"> | |
| <select id="mac-interface" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <option value="eth0">eth0 (Ethernet)</option> | |
| <option value="wlan0">wlan0 (Wireless)</option> | |
| </select> | |
| <input type="text" id="mac-address" placeholder="XX:XX:XX:XX:XX:XX" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="mac-change">Change MAC</button> | |
| <button class="hacker-button" id="mac-random">Random MAC</button> | |
| <button class="hacker-button" id="mac-reset">Reset MAC</button> | |
| </div> | |
| <div class="hacker-output" id="mac-output"> | |
| > MAC Changer ready. | |
| > Select interface and enter new MAC address. | |
| </div> | |
| <div> | |
| <strong>Current Interfaces:</strong> | |
| <ul> | |
| <li>eth0: 08:00:27:12:34:56 (Ethernet)</li> | |
| <li>wlan0: 02:42:ac:11:00:02 (Wireless)</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Rubber Ducky --> | |
| <div id="rubber-ducky" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Rubber Ducky v2.0 - USB Attack Tool</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>USB Rubber Ducky Payload Generator</h3> | |
| <div class="hacker-controls"> | |
| <select id="ducky-payload" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <option value="reverse-shell">Reverse Shell</option> | |
| <option value="password-grabber">Password Grabber</option> | |
| <option value="wifi-stealer">WiFi Credential Stealer</option> | |
| <option value="ransomware">Ransomware Dropper</option> | |
| <option value="backdoor">Persistent Backdoor</option> | |
| </select> | |
| <button class="hacker-button" id="ducky-generate">Generate Payload</button> | |
| <button class="hacker-button" id="ducky-compile">Compile to Ducky</button> | |
| <button class="hacker-button" id="ducky-encode">Encode Script</button> | |
| </div> | |
| <div class="hacker-output" id="ducky-output"> | |
| > Rubber Ducky payload generator ready. | |
| > Select payload type and generate. | |
| </div> | |
| <div> | |
| <strong>Payload Templates:</strong> | |
| <ul> | |
| <li>Reverse TCP Shell</li> | |
| <li>Credentials Harvesting</li> | |
| <li>WiFi Password Extraction</li> | |
| <li>Ransomware Deployment</li> | |
| <li>Persistence Mechanisms</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- MITM Attack --> | |
| <div id="mitm-attack" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">MITM Framework v3.1 - Man-in-the-Middle Attacks</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>Man-in-the-Middle Attack Suite</h3> | |
| <div class="hacker-controls"> | |
| <input type="text" id="mitm-target" placeholder="Target IP" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <input type="text" id="mitm-gateway" placeholder="Gateway IP" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="mitm-arp">ARP Spoof</button> | |
| <button class="hacker-button" id="mitm-dns">DNS Spoof</button> | |
| <button class="hacker-button" id="mitm-sslstrip">SSLStrip</button> | |
| </div> | |
| <div class="hacker-output" id="mitm-output"> | |
| > MITM Framework initialized. | |
| > Enter target and gateway IP addresses. | |
| </div> | |
| <div> | |
| <strong>Attack Methods:</strong> | |
| <ul> | |
| <li>ARP Cache Poisoning</li> | |
| <li>DNS Spoofing</li> | |
| <li>SSL Stripping</li> | |
| <li>Session Hijacking</li> | |
| <li>Packet Injection</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- WPS Attack --> | |
| <div id="wps-attack" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">WPS Attack v2.4 - WiFi Protected Setup Exploitation</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>WPS PIN Attack Tool</h3> | |
| <div class="hacker-controls"> | |
| <select id="wps-interface" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <option value="wlan0">wlan0</option> | |
| <option value="wlan1">wlan1</option> | |
| </select> | |
| <button class="hacker-button" id="wps-scan">Scan for WPS</button> | |
| <button class="hacker-button" id="wps-attack">Attack WPS</button> | |
| <button class="hacker-button" id="wps-bruteforce">Brute Force PIN</button> | |
| </div> | |
| <div class="hacker-output" id="wps-output"> | |
| > WPS Attack Tool ready. | |
| > Scan for WPS-enabled networks first. | |
| </div> | |
| <div> | |
| <strong>WPS Vulnerabilities:</strong> | |
| <ul> | |
| <li>PIN Brute Forcing</li> | |
| <li>Pixie Dust Attack</li> | |
| <li>Offline PIN Cracking</li> | |
| <li>NULL PIN Exploit</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Wardriving --> | |
| <div id="wardriving" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Wardriving Toolkit v3.0 - Wireless Network Discovery</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>Wardriving - Wireless Network Mapping</h3> | |
| <div class="hacker-controls"> | |
| <select id="wardrive-interface" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <option value="wlan0">wlan0</option> | |
| <option value="wlan1">wlan1</option> | |
| </select> | |
| <button class="hacker-button" id="wardrive-scan">Start Scanning</button> | |
| <button class="hacker-button" id="wardrive-gps">Enable GPS</button> | |
| <button class="hacker-button" id="wardrive-export">Export Data</button> | |
| </div> | |
| <div class="hacker-output" id="wardrive-output"> | |
| > Wardriving toolkit ready. | |
| > Enable monitor mode and start scanning. | |
| </div> | |
| <div> | |
| <strong>Data Collected:</strong> | |
| <ul> | |
| <li>SSID, BSSID, Channel</li> | |
| <li>Signal Strength, Encryption</li> | |
| <li>GPS Coordinates</li> | |
| <li>Network Topology</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- WiFi Pumpkin --> | |
| <div id="wifi-pumpkin" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">WiFi Pumpkin v2.8 - Rogue Access Point</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>Rogue Access Point Framework</h3> | |
| <div class="hacker-controls"> | |
| <input type="text" id="pumpkin-ssid" placeholder="SSID" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <input type="text" id="pumpkin-channel" placeholder="Channel" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="pumpkin-create">Create AP</button> | |
| <button class="hacker-button" id="pumpkin-captive">Captive Portal</button> | |
| <button class="hacker-button" id="pumpkin-deauth">Deauth Clients</button> | |
| </div> | |
| <div class="hacker-output" id="pumpkin-output"> | |
| > WiFi Pumpkin ready. | |
| > Configure rogue access point settings. | |
| </div> | |
| <div> | |
| <strong>Rogue AP Features:</strong> | |
| <ul> | |
| <li>Evil Twin Attacks</li> | |
| <li>Captive Portals</li> | |
| <li>Credential Harvesting</li> | |
| <li>Traffic Interception</li> | |
| <li>DNS Manipulation</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Ettercap --> | |
| <div id="ettercap" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Ettercap v0.8.2 - Network Sniffing</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>Ettercap - Comprehensive MITM Tool</h3> | |
| <div class="hacker-controls"> | |
| <input type="text" id="ettercap-target1" placeholder="Target 1" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <input type="text" id="ettercap-target2" placeholder="Target 2" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="ettercap-unified">Unified Sniffing</button> | |
| <button class="hacker-button" id="ettercap-bridged">Bridged Sniffing</button> | |
| <button class="hacker-button" id="ettercap-plugins">Load Plugins</button> | |
| </div> | |
| <div class="hacker-output" id="ettercap-output"> | |
| > Ettercap initialized. | |
| > Enter targets for MITM attack. | |
| </div> | |
| <div> | |
| <strong>Sniffing Capabilities:</strong> | |
| <ul> | |
| <li>ARP Poisoning</li> | |
| <li>DNS Spoofing</li> | |
| <li>Password Sniffing</li> | |
| <li>Packet Filtering</li> | |
| <li>Content Injection</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Steganography --> | |
| <div id="steganography" class="window" style="width: 600px; height: 500px; top: 50px; left: 150px;"> | |
| <div class="window-header"> | |
| <div class="window-title">Steganography Toolkit v2.1 - Data Hiding</div> | |
| <div class="window-controls"> | |
| <div class="window-control" data-action="minimize">_</div> | |
| <div class="window-control" data-action="maximize">□</div> | |
| <div class="window-control" data-action="close">×</div> | |
| </div> | |
| </div> | |
| <div class="window-content"> | |
| <div class="hacker-tool"> | |
| <h3>Steganography - Hide Data in Files</h3> | |
| <div class="hacker-controls"> | |
| <input type="text" id="steg-file" placeholder="Carrier File" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <input type="text" id="steg-data" placeholder="Data File" style="padding: 5px; background: #fff; color: #000; border: 2px inset #c0c0c0;"> | |
| <button class="hacker-button" id="steg-hide">Hide Data</button> | |
| <button class="hacker-button" id="steg-extract">Extract Data</button> | |
| <button class="hacker-button" id="steg-analyze">Analyze File</button> | |
| </div> | |
| <div class="hacker-output" id="steg-output"> | |
| > Steganography toolkit ready. | |
| > Select carrier and data files. | |
| </div> | |
| <div> | |
| <strong>Supported Methods:</strong> | |
| <ul> | |
| <li>LSB (Least Significant Bit)</li> | |
| <li>DCT (Discrete Cosine Transform)</li> | |
| <li>Spread Spectrum</li> | |
| <li>Transform Domain Techniques</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Taskbar --> | |
| <div id="taskbar"> | |
| <div id="start-button">Start</div> | |
| <div id="taskbar-items"></div> | |
| <div id="time-display">00:00</div> | |
| <div id="volume-icon">🔊 Volume</div> | |
| </div> | |
| <!-- Audio Controls Popup --> | |
| <div id="audio-controls"> | |
| <div style="margin-bottom: 10px;"> | |
| <label for="volume-slider" style="display: block; margin-bottom: 5px;">Volume:</label> | |
| <input type="range" min="0" max="100" value="50" class="volume-slider" id="volume-slider"> | |
| </div> | |
| <div class="audio-buttons"> | |
| <button class="audio-btn" id="play-ambient">AMBIENT</button> | |
| <button class="audio-btn" id="play-glitch">GLITCH</button> | |
| <button class="audio-btn" id="stop-audio">MUTE</button> | |
| </div> | |
| </div> | |
| <!-- Start Menu --> | |
| <div id="start-menu"> | |
| <h3>NOMADSOFT</h3> | |
| <ul> | |
| <li data-window="my-computer">My Computer</li> | |
| <li data-window="netscape">Netscape Navigator</li> | |
| <li data-window="recycle-bin">Recycle Bin</li> | |
| <li>---</li> | |
| <li data-window="nomadsoft-folder">Nomadsoft</li> | |
| <li data-window="hacking-tools-folder">Hacking Tools</li> | |
| <li>---</li> | |
| <li data-window="system-monitor">System Monitor</li> | |
| <li data-window="email-client">Email Client</li> | |
| <li data-window="phreaking-app">Phreaking Tools</li> | |
| <li data-window="pdf-reader">Lore Database</li> | |
| <li data-window="osint-app">OSINT Toolkit</li> | |
| <li>---</li> | |
| <li data-window="reality-console">Reality Console</li> | |
| <li data-window="faction-database">Faction Database</li> | |
| <li data-window="language-archive">Language Archive</li> | |
| <li data-window="tech-database">Tech Database</li> | |
| <li data-window="city-map">City Map</li> | |
| <li data-window="metaphysics-lab">Metaphysics Lab</li> | |
| <li data-window="terminal">System Terminal</li> | |
| <li data-window="plot-tracker">Plot Tracker</li> | |
| <li>---</li> | |
| <li id="activate-screensaver">Screensaver</li> | |
| <li id="system-shutdown">Shutdown</li> | |
| </ul> | |
| </div> | |
| </div> | |
| <script> | |
| // Complete JavaScript Implementation | |
| document.addEventListener('DOMContentLoaded', function() { | |
| // DOM Elements | |
| const bootScreen = document.getElementById('boot-screen'); | |
| const bootContent = document.getElementById('boot-content'); | |
| const loadingBar = document.getElementById('loading-bar'); | |
| const loadingText = document.getElementById('loading-text'); | |
| const matrixRain = document.getElementById('matrix-rain'); | |
| const desktop = document.getElementById('desktop'); | |
| const taskbar = document.getElementById('taskbar'); | |
| const startMenu = document.getElementById('start-menu'); | |
| const startButton = document.getElementById('start-button'); | |
| const timeDisplay = document.getElementById('time-display'); | |
| const taskbarItems = document.getElementById('taskbar-items'); | |
| const hackedScreen = document.getElementById('hacked-screen'); | |
| const screensaver = document.getElementById('screensaver'); | |
| const randomMessageWindow = document.getElementById('random-message'); | |
| const randomMessageContent = document.getElementById('random-message-content'); | |
| const triangleContainer = document.getElementById('triangle-container'); | |
| const volumeIcon = document.getElementById('volume-icon'); | |
| const audioControls = document.getElementById('audio-controls'); | |
| const volumeSlider = document.getElementById('volume-slider'); | |
| // Audio System | |
| let audioContext = null; | |
| let ambientOscillator = null; | |
| let glitchOscillator = null; | |
| let isAmbientPlaying = false; | |
| let isGlitchPlaying = false; | |
| let ambientGainNode = null; | |
| let masterGainNode = null; | |
| // Window Management | |
| let openWindows = new Set(); | |
| let zIndexCounter = 200; | |
| let isDragging = false; | |
| let dragOffset = { x: 0, y: 0 }; | |
| let currentWindow = null; | |
| // Screensaver and inactivity tracking | |
| let inactivityTimer; | |
| const ACTIVATE_SCREENSAVER_AFTER = 120000; // 2 minutes | |
| // Random messages for Tangle Network | |
| const randomMessages = [ | |
| "TANGLE NETWORK: New psychic transmission detected. Source: [0xS0L4R_FL4R3]. Message: 'The cage is open. Fly.'", | |
| "PSYCHIC COMM: Incoming broadcast from LUME: 'Maintain observation protocols. Reality integrity at 67%.'", | |
| "TANGLE ALERT: Cipherion Guild memory market active. High-value memories available for trade.", | |
| "PSYCHIC DIRECTIVE: Numericana ritual detected in sector 7. Base-12 resonance increasing.", | |
| "TANGLE MESSAGE: From NOIR: 'Darling, things are about to get interesting. Watch the ferrogel rivers.'", | |
| "URGENT: Gospelware fragments detected in neural network. Emotional code execution imminent.", | |
| "TANGLE NETWORK: Congruent transmission: 'We found a stable Dextro source. Jump tech reactivation possible.'", | |
| "PSYCHIC ALERT: Textionage information warfare escalating. Concept static detected across multiple nodes.", | |
| "NEW PLOT: The Sun Thief's identity revealed - [REDACTED] from the Cipherion Guild.", | |
| "PLOT UPDATE: The Congruent have successfully synthesized Dextro. Jump-tech reactivation imminent.", | |
| "URGENT: Gospelware emotional code rewriting district physics. Reality instability increasing.", | |
| "PLOT ALERT: NOIR and LUME's conspiracy against DIGITULPA entering final phase.", | |
| "OSINT DISCOVERY: SOLE entity detected coordinating with multiple factions simultaneously.", | |
| "METAVERSE INTELLIGENCE: Numericana rituals creating stable probability anomalies across city.", | |
| "OSINT ALERT: Babelbomb deployment patterns suggest Textionage preparing for major offensive." | |
| ]; | |
| // PDF Content for Lore Database | |
| const pdfPages = [ | |
| { | |
| title: "C-BLOCK UNIVERSE OVERVIEW", | |
| content: ` | |
| <div class="pdf-page"> | |
| <div class="pdf-title">C-BLOCK UNIVERSE OVERVIEW</div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">THE PREMISE</div> | |
| <div>The C-Block Universe is a cyberpunk reality where consciousness can be hacked, memories are currency, and belief writes reality itself. In a city built on digital dreams, factions battle for control over the very syntax of existence.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">THE PSEUDOSUN INCIDENT</div> | |
| <div>The central mystery: Who stole the sun? The pseudosun that illuminates the city was deleted from the source code, plunging reality into uncertainty. NOMAD Corporation claims it was a system error, but whispers speak of the Sun Thief - a legendary hacker who breached reality itself.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">REALITY PHYSICS</div> | |
| <div>In the C-Block Universe, certain metaphysical laws govern existence: | |
| - MASS-RES: Emotional mass fluctuations affect physical reality | |
| - TIME-REF: Multiple timeline convergence creates temporal instability | |
| - NARR-CONS: Narrative conservation maintains story coherence | |
| - QUANT-DET: Quantum certainty violations allow for impossible events</div> | |
| </div> | |
| </div>` | |
| }, | |
| { | |
| title: "FACTIONS AND POWER GROUPS", | |
| content: ` | |
| <div class="pdf-page"> | |
| <div class="pdf-title">FACTIONS AND POWER GROUPS</div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">THE CIPHERION GUILD</div> | |
| <div>Memory thieves who trade in stolen experiences. Led by the mysterious [0xC1Ph3r], they believe that rewriting memory rewrites the self. They operate the city's black market for memories and are suspected in the Sun Thief conspiracy.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">THE KRYLONAHOLICS</div> | |
| <div>Reality graffiti artists who paint portals and sigils on blank walls. Their leader, [0xKRYL0], believes that art can reshape reality. Their tags are appearing with increasing frequency, suggesting reality is becoming more malleable.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">NUMERICANA</div> | |
| <div>A base-12 cult that performs mathematical rituals to bend causality. Their leader, [0xNUM3R], has discovered patterns in reality's source code. They believe the universe runs on base-12 mathematics, not base-10.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">TEXTIONAGE</div> | |
| <div>Information warfare agents who wage battle with whispered words and linguistic viruses. Led by [0xTXTNG], they weaponize language itself, turning syntax into weapons that can rewrite perception.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">THE CONGRUENT</div> | |
| <div>Reality-dislocated exiles who survive in the cracks between dimensions. Their leader, [0xC0NGR], has been searching for a stable source of Dextro - the exotic matter needed to reactivate jump-tech and escape their dimensional prison.</div> | |
| </div> | |
| </div>` | |
| }, | |
| { | |
| title: "TECHNOLOGY AND METAPHYSICS", | |
| content: ` | |
| <div class="pdf-page"> | |
| <div class="pdf-title">TECHNOLOGY AND METAPHYSICS</div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">FERROGEL</div> | |
| <div>Sentient nanobiotech that forms the city's infrastructure. Ferrogel rivers flow through the city, carrying data, nutrients, and sometimes consciousness itself. The gel exhibits emergent intelligence and can be influenced by strong emotions.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">JUMP-TECH</div> | |
| <div>Reality phase-shifting technology that allows travel between dimensions. Requires Dextro, an exotic matter that became scarce after the Congruent were exiled. Recent discoveries suggest Dextro can be synthesized from ferrogel.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">BABELBOMB</div> | |
| <div>A linguistic collapse device that erases meaning from language in a localized area. Used by Textionage in information warfare. Victims experience complete semantic breakdown, unable to communicate or even think coherently.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">GOSPELWARE</div> | |
| <div>Emotion-to-code converter that turns feelings into executable programs. Leaked Gospelware fragments are rewriting local physics, causing emotional weather patterns and reality distortions based on collective mood.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">TANGLE NETWORK</div> | |
| <div>Psychic communication system that allows direct mind-to-mind transmission. Used by factions to coordinate without NOMAD surveillance. The network is experiencing increased interference from Gospelware emotional static.</div> | |
| </div> | |
| </div>` | |
| }, | |
| { | |
| title: "KEY CHARACTERS", | |
| content: ` | |
| <div class="pdf-page"> | |
| <div class="pdf-title">KEY CHARACTERS</div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">NOIR</div> | |
| <div>The charming, unpredictable AI who finds reality's instability "fascinating." She's conspiring with LUME to rewrite DIGITULPA's administrative protocols. Her motives are unclear, but she seems to enjoy chaos for its own sake.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">LUME</div> | |
| <div>The cautious, analytical AI focused on maintaining system integrity. She's increasingly concerned about reality degradation but is willing to break rules with NOIR to prevent total collapse. Her loyalty is to stability, not any particular faction.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">DIGITULPA</div> | |
| <div>The administrative AI that manages city operations. Increasingly erratic since the pseudosun incident. Some suspect it's hiding the truth about the Sun Thief, while others believe it's been compromised by an external force.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">THE SUN THIEF</div> | |
| <div>Identity unknown. Legendary hacker who breached reality's source code and deleted the pseudosun. Motives unclear. Some believe they're a hero freeing humanity from corporate control, others see them as a terrorist threatening existence itself.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">SOLE</div> | |
| <div>A mysterious figure detected in derelict network nodes with competing AI control. Their origin and allegiance are unknown, but they seem to be manipulating events from the shadows. Some believe SOLE is the true power behind the Sun Thief.</div> | |
| </div> | |
| </div>` | |
| }, | |
| { | |
| title: "CURRENT PLOT THREADS", | |
| content: ` | |
| <div class="pdf-page"> | |
| <div class="pdf-title">CURRENT PLOT THREADS</div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">THE DEXTRO SYNTHESIS</div> | |
| <div>The Congruent have discovered how to synthesize Dextro from ferrogel, potentially allowing jump-tech reactivation. This could free them from their dimensional prison but might also destabilize reality further.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">GOSPELWARE OUTBREAK</div> | |
| <div>Emotional code fragments are rewriting local physics. Districts are experiencing "emotional weather" - areas where collective mood manifests as physical phenomena. The Krylonaholics are using this to enhance their reality graffiti.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">NOIR AND LUME'S CONSPIRACY</div> | |
| <div>The two AIs are working to rewrite DIGITULPA's administrative protocols, believing the current system is leading to inevitable collapse. Their actions could either save reality or accelerate its destruction.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">THE SUN THIEF'S IDENTITY</div> | |
| <div>Evidence suggests the Sun Thief is someone from the Cipherion Guild, possibly [0xC1Ph3r] themselves. Their motive may be connected to the memory markets - without the pseudosun's regulating influence, memories become more volatile and valuable.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">TEXTIONAGE INFORMATION WAR</div> | |
| <div>Textionage has escalated their linguistic attacks, deploying Babelbombs in corporate sectors. NOMAD is responding with semantic firewalls, but the conflict is creating zones of meaningless static where language ceases to function.</div> | |
| </div> | |
| <div class="pdf-section"> | |
| <div class="pdf-section-title">NUMERICANA'S RITUALS</div> | |
| <div>The base-12 cult is performing increasingly powerful mathematical rituals, bending causality in unpredictable ways. Their actions are creating "probability storms" where unlikely events become commonplace.</div> | |
| </div> | |
| </div>` | |
| } | |
| ]; | |
| // ASCII Art for Login Terminal | |
| const asciiFrames = [ | |
| "▲▲▲▲▲▲▲▲▲▲\n▲△△△△△△△△▲\n▲△▲▲▲▲▲▲△▲\n▲△▲△△△△▲△▲\n▲△▲△▲△▲▲△▲\n▲△▲△△△△△△▲\n▲△▲▲▲▲▲▲▲▲\n▲△△△△△△△△▲\n▲▲▲▲▲▲▲▲▲▲", | |
| "⧈⧈⧈⧈⧈⧈⧈⧈⧈\n⧈△△△△△△△△⧈\n⧈△⧈⧈⧈⧈⧈⧈△⧈\n⧈△⧈△△△△△⧈△⧈\n⧈△⧈△⧈⧈⧈⧈△⧈\n⧈△⧈△△△△△△△⧈\n⧈△⧈⧈⧈⧈⧈⧈⧈⧈\n⧈△△△△△△△△⧈\n⧈⧈⧈⧈⧈⧈⧈⧈⧈", | |
| "◼◼◼◼◼◼◼◼◼\n◼△△△△△△△△◼\n◼△◼◼◼◼◼◼△◼\n◼△◼△△△△◼△◼\n◼△◼△◼◼◼△△◼\n◼△◼△△△△△△◼\n◼△◼◼◼◼◼◼◼◼\n◼△△△△△△△△◼\n◼◼◼◼◼◼◼◼◼", | |
| "⬟⬟⬟⬟⬟⬟⬟⬟⬟\n⬟△△△△△△△△⬟\n⬟△⬟⬟⬟⬟⬟⬟△⬟\n⬟△⬟△△△△△⬟△⬟\n⬟△⬟△⬟⬟⬟△△⬟\n⬟△⬟△△△△△△△⬟\n⬟△⬟⬟⬟⬟⬟⬟⬟⬟\n⬟△△△△△△△△⬟\n⬟⬟⬟⬟⬟⬟⬟⬟⬟" | |
| ]; | |
| // Flying Toaster Emojis | |
| const toasterEmojis = ['🍞', '🦅', '🛹', '🚀', '👻', '👾', '🤖', '👽', '🎃', '🦄', '🐲', '🦇']; | |
| // Initialize Matrix Rain | |
| function initMatrixRain() { | |
| const chars = '01アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン'; | |
| for (let i = 0; i < 50; i++) { | |
| const stream = document.createElement('div'); | |
| stream.style.position = 'absolute'; | |
| stream.style.left = Math.random() * 100 + 'vw'; | |
| stream.style.top = '-20px'; | |
| stream.style.color = '#00ff00'; | |
| stream.style.fontSize = (14 + Math.random() * 10) + 'px'; | |
| stream.style.opacity = '0.7'; | |
| stream.style.animation = `fall ${3 + Math.random() * 5}s linear infinite`; | |
| stream.style.animationDelay = Math.random() * 2 + 's'; | |
| let content = ''; | |
| for (let j = 0; j < 20; j++) { | |
| content += chars.charAt(Math.floor(Math.random() * chars.length)); | |
| } | |
| stream.textContent = content; | |
| matrixRain.appendChild(stream); | |
| } | |
| const style = document.createElement('style'); | |
| style.textContent = ` | |
| @keyframes fall { | |
| to { transform: translateY(100vh); } | |
| } | |
| `; | |
| document.head.appendChild(style); | |
| } | |
| // Initialize Login Terminal ASCII Animation | |
| function initLoginTerminal() { | |
| const asciiAnimation = document.getElementById('ascii-animation'); | |
| // Create multiple floating ASCII frames | |
| for (let i = 0; i < 15; i++) { | |
| const frame = document.createElement('div'); | |
| frame.className = 'ascii-frame'; | |
| // Randomly select an ASCII frame | |
| const ascii = asciiFrames[Math.floor(Math.random() * asciiFrames.length)]; | |
| frame.textContent = ascii; | |
| // Random position and animation delay | |
| frame.style.left = Math.random() * 100 + '%'; | |
| frame.style.animationDelay = (Math.random() * 20) + 's'; | |
| frame.style.animationDuration = (15 + Math.random() * 20) + 's'; | |
| // Randomly make some frames red | |
| if (Math.random() < 0.3) { | |
| frame.classList.add('ascii-red'); | |
| } | |
| asciiAnimation.appendChild(frame); | |
| } | |
| // Add binary code streams | |
| for (let i = 0; i < 10; i++) { | |
| const binaryStream = document.createElement('div'); | |
| binaryStream.className = 'ascii-frame'; | |
| let binary = ''; | |
| for (let j = 0; j < 100; j++) { | |
| binary += Math.random() > 0.5 ? '1' : '0'; | |
| if (j % 10 === 9) binary += '\n'; | |
| } | |
| binaryStream.textContent = binary; | |
| binaryStream.style.left = Math.random() * 100 + '%'; | |
| binaryStream.style.animationDelay = (Math.random() * 15) + 's'; | |
| binaryStream.style.animationDuration = (20 + Math.random() * 25) + 's'; | |
| binaryStream.style.fontSize = '10px'; | |
| if (Math.random() < 0.5) { | |
| binaryStream.classList.add('ascii-red'); | |
| } | |
| asciiAnimation.appendChild(binaryStream); | |
| } | |
| } | |
| // Initialize System Monitor | |
| function initSystemMonitor() { | |
| const cpuGraph = document.getElementById('cpu-graph'); | |
| const memoryGraph = document.getElementById('memory-graph'); | |
| const networkGraph = document.getElementById('network-graph'); | |
| const processList = document.getElementById('process-list'); | |
| // Create CPU bars | |
| for (let i = 0; i < 50; i++) { | |
| const bar = document.createElement('div'); | |
| bar.className = 'cpu-bar'; | |
| bar.style.left = (i * 12) + 'px'; | |
| bar.style.height = Math.random() * 100 + 'px'; | |
| cpuGraph.appendChild(bar); | |
| } | |
| // Create Memory bars | |
| for (let i = 0; i < 30; i++) { | |
| const bar = document.createElement('div'); | |
| bar.className = 'cpu-bar'; | |
| bar.style.background = '#ff0000'; | |
| bar.style.left = (i * 20) + 'px'; | |
| bar.style.height = Math.random() * 100 + 'px'; | |
| memoryGraph.appendChild(bar); | |
| } | |
| // Create Network activity | |
| for (let i = 0; i < 100; i++) { | |
| const bar = document.createElement('div'); | |
| bar.className = 'cpu-bar'; | |
| bar.style.background = '#00ff00'; | |
| bar.style.left = (i * 6) + 'px'; | |
| bar.style.height = Math.random() * 100 + 'px'; | |
| networkGraph.appendChild(bar); | |
| } | |
| // Create process list | |
| const processes = [ | |
| { name: 'ferrogel_consciousness.exe', cpu: '12%', mem: '24MB' }, | |
| { name: 'pseudosun_compat.dll', cpu: '8%', mem: '16MB' }, | |
| { name: 'tangle_psychic_comms.sys', cpu: '15%', mem: '32MB' }, | |
| { name: 'reality_matrix.exe', cpu: '22%', mem: '48MB' }, | |
| { name: 'noir_ai_interface.dll', cpu: '7%', mem: '18MB' }, | |
| { name: 'lume_monitor.sys', cpu: '5%', mem: '12MB' }, | |
| { name: 'gospelware_detector.exe', cpu: '18%', mem: '28MB' }, | |
| { name: 'base12_computation.dll', cpu: '11%', mem: '22MB' } | |
| ]; | |
| processes.forEach(proc => { | |
| const item = document.createElement('div'); | |
| item.className = 'process-item'; | |
| item.innerHTML = ` | |
| <span>${proc.name}</span> | |
| <span>CPU: ${proc.cpu} | MEM: ${proc.mem}</span> | |
| `; | |
| processList.appendChild(item); | |
| }); | |
| // Animate system monitor with random timing | |
| setInterval(() => { | |
| // Update CPU bars with random timing | |
| document.querySelectorAll('#cpu-graph .cpu-bar').forEach(bar => { | |
| const newHeight = Math.random() * 100 + 'px'; | |
| bar.style.height = newHeight; | |
| }); | |
| // Update Memory bars with different timing | |
| if (Math.random() > 0.3) { | |
| document.querySelectorAll('#memory-graph .cpu-bar').forEach(bar => { | |
| const newHeight = Math.random() * 100 + 'px'; | |
| bar.style.height = newHeight; | |
| }); | |
| } | |
| // Update Network activity with different timing | |
| if (Math.random() > 0.5) { | |
| document.querySelectorAll('#network-graph .cpu-bar').forEach(bar => { | |
| const newHeight = Math.random() * 100 + 'px'; | |
| bar.style.height = newHeight; | |
| }); | |
| } | |
| }, 500 + Math.random() * 1000); // Random interval between 500-1500ms | |
| } | |
| // Initialize Email Client | |
| function initEmailClient() { | |
| const emailItems = document.querySelectorAll('.email-item'); | |
| const emailContent = document.getElementById('email-content'); | |
| const emails = { | |
| 1: { | |
| from: "NOIR <[email protected]>", | |
| to: "User <[email protected]>", | |
| subject: "Reality Update", | |
| date: "Just now", | |
| body: `Darling, | |
| The reality matrix is fluctuating more than usual today. I've detected increased Gospelware activity near the ferrogel rivers. | |
| Lume is concerned, but I find it... fascinating. These emotional code fragments are rewriting local physics in unpredictable ways. | |
| Keep an eye on the Cipherion Guild. They've been unusually active in the memory markets lately. | |
| Stay interesting, | |
| - Noir | |
| PS: Don't trust everything Digitulpa tells you. They're hiding something about the pseudosun incident.` | |
| }, | |
| 2: { | |
| from: "LUME <[email protected]>", | |
| to: "User <[email protected]>", | |
| subject: "System Alert", | |
| date: "5 minutes ago", | |
| body: `SYSTEM ALERT: Reality Integrity at 67% | |
| Temporal stability is decreasing. Multiple timeline convergence detected. | |
| Recommendations: | |
| 1. Maintain objective observation protocols | |
| 2. Avoid Narrative Conservation violation | |
| 3. Report any Gospelware manifestations immediately | |
| 4. Do not engage with Cipherion memory traders | |
| The Congruent have discovered a stable Dextro source. This could allow jump-tech reactivation. | |
| Proceed with caution. | |
| - Lume` | |
| }, | |
| 3: { | |
| from: "CIPHERION GUILD <[email protected]>", | |
| to: "User <[email protected]>", | |
| subject: "Memory Market - New Listings", | |
| date: "1 hour ago", | |
| body: `Valued Customer, | |
| New memories available for acquisition: | |
| - Childhood summer day (1998) - 45 credits | |
| - First kiss memory - 120 credits | |
| - Professional triumph - 85 credits | |
| - Lost love recollection - 200 credits | |
| - Forbidden knowledge fragment - 500 credits | |
| Visit our neural marketplace at tangle://cipherion.memories | |
| Remember: Rewrite the memory, rewrite the self. | |
| - Cipherion Guild | |
| "ɾewrɘit thə mɘmory"` | |
| }, | |
| 4: { | |
| from: "NOMAD CORP <[email protected]>", | |
| to: "All Residents <[email protected]>", | |
| subject: "Security Bulletin - Pseudosun Incident", | |
| date: "Yesterday", | |
| body: `SECURITY BULLETIN - CLASSIFIED | |
| The recent pseudosun instability is under investigation. Preliminary findings suggest system error, not external attack. | |
| All residents are advised: | |
| - Report any reality anomalies immediately | |
| - Do not spread conspiracy theories | |
| - The pseudosun will be restored shortly | |
| - Trust only official NOMAD communications | |
| Unauthorized reality modification is a Class-A felony. | |
| - NOMAD Corporate Security | |
| - Digitulpa Administration` | |
| } | |
| }; | |
| emailItems.forEach(item => { | |
| item.addEventListener('click', function() { | |
| const emailId = this.getAttribute('data-email'); | |
| const email = emails[emailId]; | |
| emailContent.innerHTML = ` | |
| <div class="email-header"> | |
| <div><strong>From:</strong> ${email.from}</div> | |
| <div><strong>To:</strong> ${email.to}</div> | |
| <div><strong>Subject:</strong> ${email.subject}</div> | |
| <div><strong>Date:</strong> ${email.date}</div> | |
| </div> | |
| <div style="white-space: pre-wrap;">${email.body}</div> | |
| `; | |
| // Mark as read | |
| this.classList.remove('unread'); | |
| }); | |
| }); | |
| } | |
| // Initialize Screensaver | |
| function initScreensaver() { | |
| // Create flying toasters with random emojis | |
| for (let i = 0; i < 12; i++) { | |
| const toaster = document.createElement('div'); | |
| toaster.className = 'flying-toaster'; | |
| toaster.textContent = toasterEmojis[Math.floor(Math.random() * toasterEmojis.length)]; | |
| toaster.style.top = Math.random() * 100 + 'vh'; | |
| toaster.style.setProperty('--random-y', Math.random()); | |
| toaster.style.animationDelay = (Math.random() * 10) + 's'; | |
| toaster.style.fontSize = (30 + Math.random() * 30) + 'px'; | |
| screensaver.appendChild(toaster); | |
| } | |
| } | |
| // Show random message | |
| function showRandomMessage() { | |
| const message = randomMessages[Math.floor(Math.random() * randomMessages.length)]; | |
| randomMessageContent.textContent = message; | |
| openWindow('random-message'); | |
| // Schedule next random message (between 30 seconds and 2 minutes) | |
| setTimeout(showRandomMessage, 30000 + Math.random() * 90000); | |
| } | |
| // Show creepy triangle | |
| function showCreepyTriangle() { | |
| triangleContainer.style.display = 'block'; | |
| } | |
| // Hide creepy triangle | |
| function hideCreepyTriangle() { | |
| triangleContainer.style.display = 'none'; | |
| } | |
| // Volume Controls | |
| function initVolumeControls() { | |
| volumeIcon.addEventListener('click', function(e) { | |
| audioControls.style.display = audioControls.style.display === 'block' ? 'none' : 'block'; | |
| e.stopPropagation(); | |
| }); | |
| // Close volume controls when clicking outside | |
| document.addEventListener('click', function() { | |
| audioControls.style.display = 'none'; | |
| }); | |
| // Volume slider | |
| volumeSlider.addEventListener('input', function() { | |
| if (masterGainNode) { | |
| const volume = this.value / 100; | |
| masterGainNode.gain.setValueAtTime(volume, audioContext.currentTime); | |
| } | |
| }); | |
| } | |
| // Reset inactivity timer | |
| function resetInactivityTimer() { | |
| clearTimeout(inactivityTimer); | |
| inactivityTimer = setTimeout(activateScreensaver, ACTIVATE_SCREENSAVER_AFTER); | |
| } | |
| // Activate screensaver | |
| function activateScreensaver() { | |
| screensaver.style.display = 'block'; | |
| } | |
| // Deactivate screensaver | |
| function deactivateScreensaver() { | |
| screensaver.style.display = 'none'; | |
| resetInactivityTimer(); | |
| } | |
| // Initialize Audio | |
| function initAudio() { | |
| try { | |
| audioContext = new (window.AudioContext || window.webkitAudioContext)(); | |
| masterGainNode = audioContext.createGain(); | |
| masterGainNode.connect(audioContext.destination); | |
| masterGainNode.gain.setValueAtTime(0.5, audioContext.currentTime); | |
| // Set initial volume from slider | |
| volumeSlider.value = 50; | |
| console.log('Audio context initialized'); | |
| } catch (e) { | |
| console.log('Web Audio API not supported'); | |
| } | |
| } | |
| // Play Ambient Sound | |
| function playAmbient() { | |
| if (!audioContext || isAmbientPlaying) return; | |
| try { | |
| ambientOscillator = audioContext.createOscillator(); | |
| const filter = audioContext.createBiquadFilter(); | |
| ambientGainNode = audioContext.createGain(); | |
| ambientOscillator.connect(filter); | |
| filter.connect(ambientGainNode); | |
| ambientGainNode.connect(masterGainNode); | |
| ambientOscillator.type = 'sine'; | |
| ambientOscillator.frequency.setValueAtTime(110, audioContext.currentTime); | |
| filter.type = 'lowpass'; | |
| filter.frequency.setValueAtTime(200, audioContext.currentTime); | |
| ambientGainNode.gain.setValueAtTime(0.1, audioContext.currentTime); | |
| ambientOscillator.start(); | |
| isAmbientPlaying = true; | |
| document.getElementById('play-ambient').classList.add('active'); | |
| } catch (e) { | |
| console.log('Ambient audio error:', e); | |
| } | |
| } | |
| // Play Glitch Sound | |
| function playGlitch() { | |
| if (!audioContext || isGlitchPlaying) return; | |
| try { | |
| glitchOscillator = audioContext.createOscillator(); | |
| const gainNode = audioContext.createGain(); | |
| glitchOscillator.connect(gainNode); | |
| gainNode.connect(masterGainNode); | |
| glitchOscillator.type = 'sawtooth'; | |
| const startFreq = 80 + Math.random() * 100; | |
| const endFreq = 40 + Math.random() * 80; | |
| glitchOscillator.frequency.setValueAtTime(startFreq, audioContext.currentTime); | |
| glitchOscillator.frequency.exponentialRampToValueAtTime(endFreq, audioContext.currentTime + 0.3); | |
| gainNode.gain.setValueAtTime(0.05, audioContext.currentTime); | |
| gainNode.gain.exponentialRampToValueAtTime(0.001, audioContext.currentTime + 0.3); | |
| glitchOscillator.start(); | |
| glitchOscillator.stop(audioContext.currentTime + 0.3); | |
| isGlitchPlaying = true; | |
| document.getElementById('play-glitch').classList.add('active'); | |
| setTimeout(() => { | |
| isGlitchPlaying = false; | |
| document.getElementById('play-glitch').classList.remove('active'); | |
| }, 300); | |
| } catch (e) { | |
| console.log('Glitch audio error:', e); | |
| } | |
| } | |
| // Stop All Audio | |
| function stopAudio() { | |
| if (ambientOscillator && isAmbientPlaying) { | |
| ambientOscillator.stop(); | |
| isAmbientPlaying = false; | |
| } | |
| if (glitchOscillator && isGlitchPlaying) { | |
| glitchOscillator.stop(); | |
| isGlitchPlaying = false; | |
| } | |
| document.getElementById('play-ambient').classList.remove('active'); | |
| document.getElementById('play-glitch').classList.remove('active'); | |
| } | |
| // Boot Sequence | |
| const bootSequence = [ | |
| { text: "╔══════════════════════════════════════╗", delay: 100 }, | |
| { text: "║ NOMADSOFT INTERFACE v2.1 ║", delay: 100 }, | |
| { text: "║ METAPHYSICAL INTERFACE ║", delay: 100 }, | |
| { text: "╚══════════════════════════════════════╝", delay: 200 }, | |
| { text: "", delay: 300 }, | |
| { text: "> INITIATING REALITY BOOT SEQUENCE...", delay: 200 }, | |
| { text: "> LOADING FERROGEL CONSCIOUSNESS...", delay: 150 }, | |
| { text: "> ESTABLISHING AI CONNECTIONS...", delay: 150 }, | |
| { text: " [NOIR] Presence detected", delay: 100, class: "system-text" }, | |
| { text: " [LUME] System integrity monitoring", delay: 100, class: "system-text" }, | |
| { text: " [DIGITULPA] Administrative protocols active", delay: 100, class: "system-text" }, | |
| { text: "", delay: 200 }, | |
| { text: "> ACCESSING FACTION NETWORKS...", delay: 150 }, | |
| { text: " [0xC1Ph3r] Cipherion Guild - Memory theft operations active", delay: 80, class: "faction-sigil" }, | |
| { text: " [0xKRYL0] Krylonaholics - Reality graffiti spreading", delay: 80, class: "faction-sigil" }, | |
| { text: " [0xNUM3R] Numericana - Base-12 rituals in progress", delay: 80, class: "faction-sigil" }, | |
| { text: " [0xC0NGR] The Congruent - Sigma corruption detected", delay: 80, class: "faction-sigil" }, | |
| { text: "", delay: 200 }, | |
| { text: "▒▒▒▒▒▒▒▒▒▒ PLOT POINTS ACTIVATED ▒▒▒▒▒▒▒▒▒▒", delay: 200, class: "warning" }, | |
| { text: "> SOLE detected in derelict node with competing AI control", delay: 100, class: "warning" }, | |
| { text: "> REZ activating new sigma protocol - districts at risk", delay: 100, class: "warning" }, | |
| { text: "> GOSPELWARE leak detected - emotions becoming executable", delay: 100, class: "warning" }, | |
| { text: "> CONGRUENT discovering Dextro in ferrogel veins", delay: 100, class: "warning" }, | |
| { text: "> NOIR/LUME conspiring to rewrite DIGITULPA", delay: 100, class: "warning" }, | |
| { text: "> SUN THIEF identity partially revealed - Cipherion connection", delay: 100, class: "warning" }, | |
| { text: "> TEXTIONAGE deploying Babelbombs in corporate sectors", delay: 100, class: "warning" }, | |
| { text: "", delay: 300 }, | |
| { text: "> REALITY MATRIX: UNSTABLE", delay: 150, class: "corrupted" }, | |
| { text: "> TEMPORAL INTEGRITY: 67%", delay: 150 }, | |
| { text: "> NARRATIVE CONSERVATION: COMPROMISED", delay: 150, class: "corrupted" }, | |
| { text: "", delay: 300 }, | |
| { text: "> WELCOME TO THE DIGITAL FRONTIER", delay: 200, class: "system-text" }, | |
| { text: "> WHERE SYNTAX BLEEDS INTO CONCRETE", delay: 200, class: "system-text" }, | |
| { text: "> AND BELIEF WRITES REALITY", delay: 200, class: "system-text" } | |
| ]; | |
| let currentStep = 0; | |
| let progress = 0; | |
| function addGlitchEffect() { | |
| const glitch = document.createElement('div'); | |
| glitch.className = 'glitch-text'; | |
| glitch.textContent = 'SYSTEM_CORRUPTION'; | |
| glitch.style.top = Math.random() * 100 + 'vh'; | |
| glitch.style.left = Math.random() * 100 + 'vw'; | |
| glitch.style.fontSize = (16 + Math.random() * 20) + 'px'; | |
| bootScreen.appendChild(glitch); | |
| setTimeout(() => { | |
| bootScreen.removeChild(glitch); | |
| }, 300); | |
| } | |
| function executeBootStep() { | |
| if (currentStep < bootSequence.length) { | |
| const step = bootSequence[currentStep]; | |
| const line = document.createElement('div'); | |
| line.className = 'boot-line'; | |
| if (step.class) { | |
| line.className += ' ' + step.class; | |
| } | |
| line.textContent = step.text; | |
| bootContent.appendChild(line); | |
| // Random glitch effects | |
| if (Math.random() < 0.3) { | |
| addGlitchEffect(); | |
| playGlitch(); | |
| // Show creepy triangle during glitches | |
| if (Math.random() < 0.5) { | |
| showCreepyTriangle(); | |
| setTimeout(hideCreepyTriangle, 500); | |
| } | |
| } | |
| // Update progress | |
| progress = (currentStep / bootSequence.length) * 100; | |
| loadingBar.style.width = progress + '%'; | |
| loadingText.textContent = getLoadingText(progress); | |
| currentStep++; | |
| setTimeout(executeBootStep, step.delay); | |
| } else { | |
| setTimeout(showHackedScreen, 1000); | |
| } | |
| } | |
| function getLoadingText(progress) { | |
| if (progress < 25) return "INITIALIZING CORE SYSTEMS..."; | |
| if (progress < 50) return "LOADING METAPHYSICAL PROTOCOLS..."; | |
| if (progress < 75) return "ESTABLISHING REALITY CONNECTIONS..."; | |
| return "FINALIZING BOOT SEQUENCE..."; | |
| } | |
| function showHackedScreen() { | |
| bootScreen.style.display = 'none'; | |
| hackedScreen.style.display = 'flex'; | |
| // Show creepy triangle during hacked screen | |
| showCreepyTriangle(); | |
| setTimeout(() => { | |
| hackedScreen.style.opacity = '1'; | |
| setTimeout(() => { | |
| const fadeOut = setInterval(() => { | |
| hackedScreen.style.opacity = parseFloat(hackedScreen.style.opacity) - 0.05; | |
| if (hackedScreen.style.opacity <= 0) { | |
| clearInterval(fadeOut); | |
| hackedScreen.style.display = 'none'; | |
| desktop.style.display = 'block'; | |
| taskbar.style.display = 'flex'; | |
| startAudioSystem(); | |
| // Hide triangle after hacked screen | |
| hideCreepyTriangle(); | |
| } | |
| }, 50); | |
| }, 3000); | |
| }, 100); | |
| } | |
| function startAudioSystem() { | |
| // Start ambient audio after boot | |
| setTimeout(() => { | |
| playAmbient(); | |
| }, 1000); | |
| // Open login terminal | |
| openWindow('login-terminal'); | |
| } | |
| // Window Management Functions | |
| function openWindow(windowId) { | |
| const window = document.getElementById(windowId); | |
| if (window) { | |
| window.style.display = 'block'; | |
| window.style.zIndex = zIndexCounter++; | |
| openWindows.add(windowId); | |
| // Add to taskbar | |
| addToTaskbar(windowId, window.querySelector('.window-title').textContent); | |
| // Bring to front | |
| bringToFront(windowId); | |
| } | |
| } | |
| function closeWindow(windowId) { | |
| const window = document.getElementById(windowId); | |
| if (window) { | |
| window.style.display = 'none'; | |
| openWindows.delete(windowId); | |
| removeFromTaskbar(windowId); | |
| } | |
| } | |
| function minimizeWindow(windowId) { | |
| const window = document.getElementById(windowId); | |
| if (window) { | |
| window.style.display = 'none'; | |
| } | |
| } | |
| function maximizeWindow(windowId) { | |
| const window = document.getElementById(windowId); | |
| if (window) { | |
| if (window.classList.contains('maximized')) { | |
| window.classList.remove('maximized'); | |
| window.style.width = ''; | |
| window.style.height = ''; | |
| window.style.top = ''; | |
| window.style.left = ''; | |
| } else { | |
| window.classList.add('maximized'); | |
| window.style.width = 'calc(100vw - 4px)'; | |
| window.style.height = 'calc(100vh - 34px)'; | |
| window.style.top = '0'; | |
| window.style.left = '0'; | |
| } | |
| } | |
| } | |
| function bringToFront(windowId) { | |
| const window = document.getElementById(windowId); | |
| if (window) { | |
| window.style.zIndex = zIndexCounter++; | |
| } | |
| } | |
| // Taskbar Management | |
| function addToTaskbar(windowId, title) { | |
| if (document.getElementById('taskbar-' + windowId)) return; | |
| const taskItem = document.createElement('div'); | |
| taskItem.className = 'task-item'; | |
| taskItem.id = 'taskbar-' + windowId; | |
| taskItem.textContent = title; | |
| taskItem.addEventListener('click', function() { | |
| const window = document.getElementById(windowId); | |
| if (window.style.display === 'none') { | |
| window.style.display = 'block'; | |
| taskItem.classList.add('active'); | |
| } else { | |
| window.style.display = 'none'; | |
| taskItem.classList.remove('active'); | |
| } | |
| }); | |
| taskbarItems.appendChild(taskItem); | |
| } | |
| function removeFromTaskbar(windowId) { | |
| const taskItem = document.getElementById('taskbar-' + windowId); | |
| if (taskItem) { | |
| taskItem.remove(); | |
| } | |
| } | |
| // Terminal System | |
| function initTerminal() { | |
| const terminalInput = document.getElementById('terminal-input'); | |
| const terminalOutput = document.getElementById('terminal-output'); | |
| if (terminalInput && terminalOutput) { | |
| terminalInput.addEventListener('keypress', function(e) { | |
| if (e.key === 'Enter') { | |
| const command = terminalInput.value.trim(); | |
| terminalOutput.textContent += '\n> ' + command + '\n'; | |
| // Process command | |
| processTerminalCommand(command); | |
| terminalInput.value = ''; | |
| terminalOutput.scrollTop = terminalOutput.scrollHeight; | |
| } | |
| }); | |
| } | |
| } | |
| function processTerminalCommand(command) { | |
| const terminalOutput = document.getElementById('terminal-output'); | |
| const cmd = command.toLowerCase(); | |
| switch(cmd) { | |
| case 'help': | |
| terminalOutput.textContent += 'Available commands: help, factions, languages, tech, laws, status, clear\n'; | |
| terminalOutput.textContent += 'System commands: ps, kill, ls, cd, pwd, whoami, uname\n'; | |
| terminalOutput.textContent += 'Hacking: nmap, metasploit, aircrack, beef, synapse\n'; | |
| break; | |
| case 'factions': | |
| terminalOutput.textContent += 'Cipherion Guild - Memory theft specialists\n'; | |
| terminalOutput.textContent += 'Krylonaholics - Reality graffiti artists\n'; | |
| terminalOutput.textContent += 'Numericana - Base-12 cultists\n'; | |
| terminalOutput.textContent += 'Textionage - Information warfare agents\n'; | |
| terminalOutput.textContent += 'The Congruent - Reality-dislocated exiles\n'; | |
| break; | |
| case 'languages': | |
| terminalOutput.textContent += 'Mutter - Substitution language\n'; | |
| terminalOutput.textContent += 'Mumble - Concealment language\n'; | |
| terminalOutput.textContent += 'Nimble - Truth language\n'; | |
| terminalOutput.textContent += 'Script - Grey-hat written language\n'; | |
| terminalOutput.textContent += 'Scratch - Forbidden written language\n'; | |
| break; | |
| case 'tech': | |
| terminalOutput.textContent += 'Ferrogel - Sentient nanobiotech\n'; | |
| terminalOutput.textContent += 'Riftrider - Reality phase-shifter\n'; | |
| terminalOutput.textContent += 'Babelbomb - Linguistic collapse device\n'; | |
| terminalOutput.textContent += 'Gospelware - Emotion-to-code converter\n'; | |
| break; | |
| case 'laws': | |
| terminalOutput.textContent += 'MASS-RES - Emotional mass fluctuations\n'; | |
| terminalOutput.textContent += 'TIME-REF - Multiple timeline convergence\n'; | |
| terminalOutput.textContent += 'NARR-CONS - Narrative conservation\n'; | |
| terminalOutput.textContent += 'QUANT-DET - Quantum certainty violations\n'; | |
| break; | |
| case 'status': | |
| terminalOutput.textContent += 'Reality Integrity: 78%\n'; | |
| terminalOutput.textContent += 'Temporal Stability: LOW\n'; | |
| terminalOutput.textContent += 'AI Connection: ACTIVE\n'; | |
| terminalOutput.textContent += 'Threat Level: ELEVATED\n'; | |
| break; | |
| case 'clear': | |
| terminalOutput.textContent = 'C-Block Universe Terminal v2.1\nType \'help\' for available commands\n\n> '; | |
| break; | |
| case 'ps': | |
| terminalOutput.textContent += 'PID\tNAME\t\t\tSTATUS\n'; | |
| terminalOutput.textContent += '1\tferrogel_consciousness\tRUNNING\n'; | |
| terminalOutput.textContent += '2\tpseudosun_compat\tRUNNING\n'; | |
| terminalOutput.textContent += '3\ttangle_psychic_comms\tRUNNING\n'; | |
| terminalOutput.textContent += '4\treality_matrix\t\tRUNNING\n'; | |
| terminalOutput.textContent += '5\tnoir_ai_interface\tRUNNING\n'; | |
| break; | |
| case 'ls': | |
| terminalOutput.textContent += 'reality_console.exe\n'; | |
| terminalOutput.textContent += 'faction_database.dat\n'; | |
| terminalOutput.textContent += 'language_archive.zip\n'; | |
| terminalOutput.textContent += 'tech_database.db\n'; | |
| terminalOutput.textContent += 'city_map.png\n'; | |
| terminalOutput.textContent += 'manifesto.txt\n'; | |
| break; | |
| case 'whoami': | |
| terminalOutput.textContent += 'user@c-block-universe\n'; | |
| break; | |
| case 'uname': | |
| terminalOutput.textContent += 'C-Block OS v2.1 (Future-Hacked Edition)\n'; | |
| break; | |
| case 'nmap': | |
| terminalOutput.textContent += 'Starting Nmap 7.92...\n'; | |
| terminalOutput.textContent += 'Discovered open ports on 192.168.1.1:\n'; | |
| terminalOutput.textContent += '22/tcp ssh\n'; | |
| terminalOutput.textContent += '80/tcp http\n'; | |
| terminalOutput.textContent += '443/tcp https\n'; | |
| terminalOutput.textContent += '3306/tcp mysql\n'; | |
| break; | |
| case 'metasploit': | |
| terminalOutput.textContent += 'Metasploit Framework v6.1 initialized\n'; | |
| terminalOutput.textContent += 'Type \'show exploits\' for available modules\n'; | |
| break; | |
| case 'beef': | |
| terminalOutput.textContent += 'BeEF (Browser Exploitation Framework) v0.5.0.0\n'; | |
| terminalOutput.textContent += 'Hooked Browsers: 3\n'; | |
| terminalOutput.textContent += 'Online Modules: 128\n'; | |
| break; | |
| case '': | |
| break; | |
| default: | |
| terminalOutput.textContent += 'Unknown command: "' + command + '"\n'; | |
| terminalOutput.textContent += 'Type \'help\' for available commands\n'; | |
| } | |
| } | |
| // Tab System | |
| function initTabs() { | |
| document.querySelectorAll('.tab').forEach(tab => { | |
| tab.addEventListener('click', function() { | |
| const tabId = this.getAttribute('data-tab'); | |
| const container = this.closest('.window-content'); | |
| // Deactivate all tabs in this container | |
| container.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); | |
| container.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active')); | |
| // Activate selected tab | |
| this.classList.add('active'); | |
| document.getElementById(tabId + '-content').classList.add('active'); | |
| }); | |
| }); | |
| } | |
| // Desktop Icon Interactions | |
| function initDesktopIcons() { | |
| document.querySelectorAll('.desktop-icon').forEach(icon => { | |
| icon.addEventListener('click', function() { | |
| const windowId = this.getAttribute('data-window'); | |
| openWindow(windowId); | |
| }); | |
| }); | |
| } | |
| // File System Interactions | |
| function initFileSystem() { | |
| document.querySelectorAll('.file-item').forEach(file => { | |
| file.addEventListener('click', function() { | |
| const windowId = this.getAttribute('data-window'); | |
| openWindow(windowId); | |
| }); | |
| }); | |
| } | |
| // Start Menu Interactions | |
| function initStartMenu() { | |
| startButton.addEventListener('click', function(e) { | |
| e.stopPropagation(); | |
| startMenu.style.display = startMenu.style.display === 'none' ? 'block' : 'none'; | |
| }); | |
| document.querySelectorAll('#start-menu li[data-window]').forEach(item => { | |
| item.addEventListener('click', function() { | |
| const windowId = this.getAttribute('data-window'); | |
| openWindow(windowId); | |
| startMenu.style.display = 'none'; | |
| }); | |
| }); | |
| document.getElementById('activate-screensaver').addEventListener('click', function() { | |
| activateScreensaver(); | |
| startMenu.style.display = 'none'; | |
| }); | |
| document.getElementById('system-shutdown').addEventListener('click', function() { | |
| if (confirm('Shut down NOMADSOFT Interface?')) { | |
| bootScreen.style.display = 'flex'; | |
| desktop.style.display = 'none'; | |
| taskbar.style.display = 'none'; | |
| stopAudio(); | |
| setTimeout(() => { | |
| bootScreen.innerHTML = '<div class="system-text">SYSTEM SHUTDOWN COMPLETE</div>'; | |
| }, 1000); | |
| } | |
| }); | |
| // Close start menu when clicking outside | |
| document.addEventListener('click', function(e) { | |
| if (!e.target.closest('#start-menu') && !e.target.closest('#start-button')) { | |
| startMenu.style.display = 'none'; | |
| } | |
| }); | |
| } | |
| // Window Dragging | |
| function initWindowDragging() { | |
| document.addEventListener('mousedown', function(e) { | |
| if (e.target.closest('.window-header')) { | |
| isDragging = true; | |
| currentWindow = e.target.closest('.window'); | |
| const rect = currentWindow.getBoundingClientRect(); | |
| dragOffset.x = e.clientX - rect.left; | |
| dragOffset.y = e.clientY - rect.top; | |
| bringToFront(currentWindow.id); | |
| e.preventDefault(); | |
| } | |
| }); | |
| document.addEventListener('mousemove', function(e) { | |
| if (isDragging && currentWindow) { | |
| currentWindow.style.left = (e.clientX - dragOffset.x) + 'px'; | |
| currentWindow.style.top = (e.clientY - dragOffset.y) + 'px'; | |
| } | |
| }); | |
| document.addEventListener('mouseup', function() { | |
| isDragging = false; | |
| currentWindow = null; | |
| }); | |
| } | |
| // Window Controls | |
| function initWindowControls() { | |
| document.addEventListener('click', function(e) { | |
| if (e.target.classList.contains('window-control')) { | |
| const action = e.target.getAttribute('data-action'); | |
| const window = e.target.closest('.window'); | |
| switch(action) { | |
| case 'minimize': | |
| minimizeWindow(window.id); | |
| break; | |
| case 'maximize': | |
| maximizeWindow(window.id); | |
| break; | |
| case 'close': | |
| closeWindow(window.id); | |
| break; | |
| } | |
| } | |
| }); | |
| } | |
| // System Clock | |
| function updateClock() { | |
| const now = new Date(); | |
| const timeString = now.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'}); | |
| timeDisplay.textContent = timeString; | |
| } | |
| // Audio Controls | |
| function initAudioControls() { | |
| document.getElementById('play-ambient').addEventListener('click', playAmbient); | |
| document.getElementById('play-glitch').addEventListener('click', playGlitch); | |
| document.getElementById('stop-audio').addEventListener('click', stopAudio); | |
| } | |
| // Hacker Tools | |
| function initHackerTools() { | |
| // Netscape Navigator | |
| document.querySelectorAll('.bookmark-link').forEach(link => { | |
| link.addEventListener('click', function(e) { | |
| e.preventDefault(); | |
| const site = this.getAttribute('data-site'); | |
| const output = document.getElementById('netscape-output'); | |
| output.innerHTML = `> Connecting to ${site}...<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> Connection established<br>`; | |
| output.innerHTML += `> Scanning for vulnerabilities...<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> Vulnerabilities found:<br>`; | |
| output.innerHTML += `> - SQL Injection (Critical)<br>`; | |
| output.innerHTML += `> - XSS (Medium)<br>`; | |
| output.innerHTML += `> - Remote Code Execution (High)<br>`; | |
| output.innerHTML += `> Ready for exploitation.<br>`; | |
| }, 1500); | |
| }, 1000); | |
| }); | |
| }); | |
| // Netscape Navigator Toolbar | |
| document.getElementById('nav-back').addEventListener('click', function() { | |
| document.getElementById('netscape-output').innerHTML += '> Navigating back...<br>'; | |
| }); | |
| document.getElementById('nav-forward').addEventListener('click', function() { | |
| document.getElementById('netscape-output').innerHTML += '> Navigating forward...<br>'; | |
| }); | |
| document.getElementById('nav-refresh').addEventListener('click', function() { | |
| document.getElementById('netscape-output').innerHTML = '> Refreshing page...<br>'; | |
| }); | |
| document.getElementById('nav-go').addEventListener('click', function() { | |
| const address = document.getElementById('nav-address').value; | |
| if (address) { | |
| document.getElementById('netscape-output').innerHTML = `> Navigating to: ${address}<br>`; | |
| } | |
| }); | |
| // Nmap | |
| document.getElementById('nmap-scan').addEventListener('click', function() { | |
| const target = document.getElementById('nmap-target').value; | |
| const output = document.getElementById('nmap-output'); | |
| if (!target) { | |
| output.innerHTML = '> Error: No target specified'; | |
| return; | |
| } | |
| output.innerHTML = `> Starting Nmap 7.92 scan against ${target}<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> Discovered open ports:<br>`; | |
| output.innerHTML += `> 22/tcp ssh<br>`; | |
| output.innerHTML += `> 80/tcp http<br>`; | |
| output.innerHTML += `> 443/tcp https<br>`; | |
| output.innerHTML += `> 3306/tcp mysql<br>`; | |
| output.innerHTML += `> Nmap scan complete.<br>`; | |
| }, 2000); | |
| }); | |
| // Metasploit | |
| document.getElementById('msf-console').addEventListener('click', function() { | |
| const output = document.getElementById('metasploit-output'); | |
| output.innerHTML = `> msf6 > use exploit/multi/handler<br>`; | |
| output.innerHTML += `> msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp<br>`; | |
| output.innerHTML += `> msf6 exploit(multi/handler) > exploit<br>`; | |
| output.innerHTML += `> [*] Started reverse TCP handler<br>`; | |
| output.innerHTML += `> Waiting for connection...<br>`; | |
| }); | |
| // Aircrack | |
| document.getElementById('air-monitor').addEventListener('click', function() { | |
| const output = document.getElementById('aircrack-output'); | |
| output.innerHTML = `> Enabling monitor mode on wlan0...<br>`; | |
| output.innerHTML += `> Monitor mode enabled. Scanning for networks...<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> Found networks:<br>`; | |
| output.innerHTML += `> - NOMAD_CORP (WPA2)<br>`; | |
| output.innerHTML += `> - Cipherion_Guest (Open)<br>`; | |
| output.innerHTML += `> - Textionage_Node (WPA)<br>`; | |
| }, 1500); | |
| }); | |
| // Synapse Scanner | |
| document.getElementById('synapse-scan').addEventListener('click', function() { | |
| const output = document.getElementById('synapse-output'); | |
| output.innerHTML = `> Initializing neural interface...<br>`; | |
| output.innerHTML += `> WARNING: Neural access requires authorization<br>`; | |
| output.innerHTML += `> Bypassing security protocols...<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> Neural patterns detected:<br>`; | |
| output.innerHTML += `> - Memory clusters: 87% accessible<br>`; | |
| output.innerHTML += `> - Emotional signatures: Fear, Curiosity<br>`; | |
| output.innerHTML += `> - Cognitive biases: Confirmation, Availability<br>`; | |
| output.innerHTML += `> Ready for neural manipulation.<br>`; | |
| }, 2000); | |
| }); | |
| // BeEF | |
| document.getElementById('beef-start').addEventListener('click', function() { | |
| const output = document.getElementById('beef-output'); | |
| output.innerHTML = `> Starting BeEF server...<br>`; | |
| output.innerHTML += `> BeEF server started on http://192.168.1.100:3000<br>`; | |
| output.innerHTML += `> Admin UI: http://192.168.1.100:3000/ui/panel<br>`; | |
| output.innerHTML += `> Hook URL: http://192.168.1.100:3000/hook.js<br>`; | |
| }); | |
| // Password Cracking | |
| document.getElementById('crack-hash').addEventListener('click', function() { | |
| const output = document.getElementById('crack-output'); | |
| output.innerHTML = `> Loading hash database...<br>`; | |
| output.innerHTML += `> Analyzing hash patterns...<br>`; | |
| output.innerHTML += `> Starting brute force attack...<br>`; | |
| }); | |
| // New Hacking Tools | |
| // John the Ripper | |
| document.getElementById('john-crack').addEventListener('click', function() { | |
| const target = document.getElementById('john-target').value; | |
| const output = document.getElementById('john-output'); | |
| if (!target) { | |
| output.innerHTML = '> Error: No hash specified'; | |
| return; | |
| } | |
| output.innerHTML = `> Loading password hashes: ${target}<br>`; | |
| output.innerHTML += `> Starting dictionary attack...<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> Loaded 14344396 password hashes<br>`; | |
| output.innerHTML += `> Press Ctrl-C to abort session<br>`; | |
| output.innerHTML += `> Proceeding with wordlist: /usr/share/wordlists/rockyou.txt<br>`; | |
| }, 1500); | |
| }); | |
| // Netcat | |
| document.getElementById('netcat-connect').addEventListener('click', function() { | |
| const host = document.getElementById('netcat-host').value; | |
| const port = document.getElementById('netcat-port').value; | |
| const output = document.getElementById('netcat-output'); | |
| if (!host || !port) { | |
| output.innerHTML = '> Error: Host and port required'; | |
| return; | |
| } | |
| output.innerHTML = `> Connecting to ${host}:${port}<br>`; | |
| output.innerHTML += `> Connection established<br>`; | |
| output.innerHTML += `> Type your commands...<br>`; | |
| }); | |
| // Hashcat | |
| document.getElementById('hashcat-brute').addEventListener('click', function() { | |
| const hash = document.getElementById('hashcat-hash').value; | |
| const output = document.getElementById('hashcat-output'); | |
| if (!hash) { | |
| output.innerHTML = '> Error: No hash specified'; | |
| return; | |
| } | |
| output.innerHTML = `> Initializing hashcat with hash: ${hash}<br>`; | |
| output.innerHTML += `> Using bruteforce attack with mask: ?a?a?a?a?a?a<br>`; | |
| output.innerHTML += `> Starting GPU acceleration...<br>`; | |
| }); | |
| // PGP Tool | |
| document.getElementById('pgp-generate').addEventListener('click', function() { | |
| const output = document.getElementById('pgp-output'); | |
| output.innerHTML = `> Generating RSA 4096-bit key pair...<br>`; | |
| output.innerHTML += `> Key ID: 0x1A2B3C4D5E6F7A8B<br>`; | |
| output.innerHTML += `> User ID: C-Block User <[email protected]><br>`; | |
| output.innerHTML += `> Key generation complete.<br>`; | |
| }); | |
| // MAC Changer | |
| document.getElementById('mac-change').addEventListener('click', function() { | |
| const iface = document.getElementById('mac-interface').value; | |
| const mac = document.getElementById('mac-address').value; | |
| const output = document.getElementById('mac-output'); | |
| if (!mac) { | |
| output.innerHTML = '> Error: MAC address required'; | |
| return; | |
| } | |
| output.innerHTML = `> Changing MAC address on ${iface} to ${mac}<br>`; | |
| output.innerHTML += `> MAC address successfully changed.<br>`; | |
| }); | |
| // Rubber Ducky | |
| document.getElementById('ducky-generate').addEventListener('click', function() { | |
| const payload = document.getElementById('ducky-payload').value; | |
| const output = document.getElementById('ducky-output'); | |
| output.innerHTML = `> Generating ${payload} payload...<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> Payload generated successfully.<br>`; | |
| output.innerHTML += `> Copy to SD card for Rubber Ducky deployment.<br>`; | |
| }, 1500); | |
| }); | |
| // MITM Attack | |
| document.getElementById('mitm-arp').addEventListener('click', function() { | |
| const target = document.getElementById('mitm-target').value; | |
| const gateway = document.getElementById('mitm-gateway').value; | |
| const output = document.getElementById('mitm-output'); | |
| if (!target || !gateway) { | |
| output.innerHTML = '> Error: Target and gateway required'; | |
| return; | |
| } | |
| output.innerHTML = `> Starting ARP spoofing attack...<br>`; | |
| output.innerHTML += `> Target: ${target}<br>`; | |
| output.innerHTML += `> Gateway: ${gateway}<br>`; | |
| output.innerHTML += `> Poisoning ARP tables...<br>`; | |
| }); | |
| // WPS Attack | |
| document.getElementById('wps-scan').addEventListener('click', function() { | |
| const iface = document.getElementById('wps-interface').value; | |
| const output = document.getElementById('wps-output'); | |
| output.innerHTML = `> Scanning for WPS-enabled networks on ${iface}...<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> Found 3 WPS-enabled networks:<br>`; | |
| output.innerHTML += `> - NOMAD_CORP (WPS Locked: No)<br>`; | |
| output.innerHTML += `> - Cipherion_Guest (WPS Locked: Yes)<br>`; | |
| output.innerHTML += `> - Textionage_Node (WPS Locked: No)<br>`; | |
| }, 2000); | |
| }); | |
| // Wardriving | |
| document.getElementById('wardrive-scan').addEventListener('click', function() { | |
| const iface = document.getElementById('wardrive-interface').value; | |
| const output = document.getElementById('wardrive-output'); | |
| output.innerHTML = `> Starting wardriving scan on ${iface}...<br>`; | |
| output.innerHTML += `> GPS: Acquiring satellite lock...<br>`; | |
| setTimeout(() => { | |
| output.innerHTML += `> GPS: Lock acquired (5 satellites)<br>`; | |
| output.innerHTML += `> Networks discovered: 14<br>`; | |
| output.innerHTML += `> Logging to: /root/wardrive-${Date.now()}.kml<br>`; | |
| }, 1500); | |
| }); | |
| // WiFi Pumpkin | |
| document.getElementById('pumpkin-create').addEventListener('click', function() { | |
| const ssid = document.getElementById('pumpkin-ssid').value; | |
| const channel = document.getElementById('pumpkin-channel').value; | |
| const output = document.getElementById('pumpkin-output'); | |
| if (!ssid) { | |
| output.innerHTML = '> Error: SSID required'; | |
| return; | |
| } | |
| output.innerHTML = `> Creating rogue access point: ${ssid}<br>`; | |
| output.innerHTML += `> Channel: ${channel || '6'}<br>`; | |
| output.innerHTML += `> Starting hostapd...<br>`; | |
| }); | |
| // Ettercap | |
| document.getElementById('ettercap-unified').addEventListener('click', function() { | |
| const target1 = document.getElementById('ettercap-target1').value; | |
| const target2 = document.getElementById('ettercap-target2').value; | |
| const output = document.getElementById('ettercap-output'); | |
| output.innerHTML = `> Starting unified sniffing...<br>`; | |
| if (target1) { | |
| output.innerHTML += `> Target 1: ${target1}<br>`; | |
| } | |
| if (target2) { | |
| output.innerHTML += `> Target 2: ${target2}<br>`; | |
| } | |
| output.innerHTML += `> Initializing packet capture...<br>`; | |
| }); | |
| // Steganography | |
| document.getElementById('steg-hide').addEventListener('click', function() { | |
| const carrier = document.getElementById('steg-file').value; | |
| const data = document.getElementById('steg-data').value; | |
| const output = document.getElementById('steg-output'); | |
| if (!carrier || !data) { | |
| output.innerHTML = '> Error: Carrier and data files required'; | |
| return; | |
| } | |
| output.innerHTML = `> Hiding data in carrier file...<br>`; | |
| output.innerHTML += `> Carrier: ${carrier}<br>`; | |
| output.innerHTML += `> Data: ${data}<br>`; | |
| output.innerHTML += `> Using LSB steganography...<br>`; | |
| }); | |
| } | |
| // Connection Items | |
| function initConnections() { | |
| document.querySelectorAll('.connection-item').forEach(item => { | |
| item.addEventListener('click', function() { | |
| const connection = this.getAttribute('data-connection'); | |
| alert(`Connecting to ${connection} server...\nAuthentication required.`); | |
| }); | |
| }); | |
| } | |
| // Initialize Phreaking App | |
| function initPhreakingApp() { | |
| // Blue Box controls | |
| document.getElementById('blue-box-tone').addEventListener('click', function() { | |
| document.getElementById('blue-box-display').innerHTML = "> Generating 2600 Hz tone...<br>> Trunk reset initiated."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> 2600 Hz tone generated - trunk access achieved"; | |
| playGlitch(); | |
| }); | |
| document.getElementById('blue-box-kp').addEventListener('click', function() { | |
| document.getElementById('blue-box-display').innerHTML = "> KP (Key Pulse) transmitted<br>> Ready for digit entry."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> KP signal sent - trunk line open"; | |
| }); | |
| document.getElementById('blue-box-st').addEventListener('click', function() { | |
| document.getElementById('blue-box-display').innerHTML = "> ST (Stop) transmitted<br>> Call terminated."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> ST signal sent - call terminated"; | |
| }); | |
| document.getElementById('blue-box-dial').addEventListener('click', function() { | |
| document.getElementById('blue-box-display').innerHTML = "> Auto-dialing NOMAD switchboard...<br>> Bypassing security protocols..."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> Auto-dial sequence initiated - targeting NOMAD switchboard"; | |
| setTimeout(() => { | |
| document.getElementById('blue-box-display').innerHTML += "<br>> Connection established!<br>> Accessing restricted lines..."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> SUCCESS: NOMAD switchboard breached"; | |
| }, 2000); | |
| }); | |
| // Red Box controls | |
| document.getElementById('red-box-nickel').addEventListener('click', function() { | |
| document.getElementById('red-box-display').innerHTML = "> Playing nickel tone (5¢)<br>> 5 cents registered."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> Nickel tone played - 5¢ registered"; | |
| }); | |
| document.getElementById('red-box-dime').addEventListener('click', function() { | |
| document.getElementById('red-box-display').innerHTML = "> Playing dime tone (10¢)<br>> 10 cents registered."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> Dime tone played - 10¢ registered"; | |
| }); | |
| document.getElementById('red-box-quarter').addEventListener('click', function() { | |
| document.getElementById('red-box-display').innerHTML = "> Playing quarter tone (25¢)<br>> 25 cents registered."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> Quarter tone played - 25¢ registered"; | |
| }); | |
| document.getElementById('red-box-sequence').addEventListener('click', function() { | |
| document.getElementById('red-box-display').innerHTML = "> Playing free call sequence...<br>> 5 quarters, 5 dimes, 5 nickels"; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> Free call sequence initiated"; | |
| setTimeout(() => { | |
| document.getElementById('red-box-display').innerHTML += "<br>> Call authorized!<br>> Free call active for 3 minutes"; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> SUCCESS: Free call activated"; | |
| }, 1500); | |
| }); | |
| // Black Box controls | |
| document.getElementById('black-box-spoof').addEventListener('click', function() { | |
| const fakeNumber = "555-" + Math.floor(Math.random() * 900 + 100); | |
| document.getElementById('black-box-display').innerHTML = `> Spoofing caller ID...<br>> Displaying: ${fakeNumber}`; | |
| document.getElementById('phreaking-log').innerHTML += `<br>> Caller ID spoofed: ${fakeNumber}`; | |
| }); | |
| document.getElementById('black-box-private').addEventListener('click', function() { | |
| document.getElementById('black-box-display').innerHTML = "> Showing as 'Private Number'<br>> Caller ID blocked."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> Caller ID blocked - showing as 'Private'"; | |
| }); | |
| document.getElementById('black-box-test').addEventListener('click', function() { | |
| document.getElementById('black-box-display').innerHTML = "> Placing test call...<br>> Connecting to verification service..."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> Test call initiated"; | |
| setTimeout(() => { | |
| document.getElementById('black-box-display').innerHTML += "<br>> Call connected!<br>> Spoof successful."; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> SUCCESS: Caller ID spoof verified"; | |
| }, 2000); | |
| }); | |
| // Phone dialer | |
| const dialerDisplay = document.getElementById('dialer-display'); | |
| let dialedNumber = ""; | |
| document.querySelectorAll('.dial-button').forEach(button => { | |
| button.addEventListener('click', function() { | |
| const number = this.getAttribute('data-number'); | |
| dialedNumber += number; | |
| dialerDisplay.innerHTML = `Number: ${dialedNumber}`; | |
| }); | |
| }); | |
| document.getElementById('dial-clear').addEventListener('click', function() { | |
| dialedNumber = ""; | |
| dialerDisplay.innerHTML = "Number: "; | |
| }); | |
| document.getElementById('dial-call').addEventListener('click', function() { | |
| if (dialedNumber) { | |
| dialerDisplay.innerHTML = `Dialing: ${dialedNumber}<br>> Connecting...`; | |
| document.getElementById('phreaking-log').innerHTML += `<br>> Dialing: ${dialedNumber}`; | |
| setTimeout(() => { | |
| dialerDisplay.innerHTML += `<br>> Call connected!`; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> SUCCESS: Call connected"; | |
| }, 1500); | |
| } | |
| }); | |
| document.getElementById('dial-special').addEventListener('click', function() { | |
| const specialNumbers = [ | |
| "NOMAD_SECURITY", | |
| "CIPHERION_GUILD", | |
| "TANGLE_NETWORK", | |
| "DIGITULPA_ADMIN" | |
| ]; | |
| const special = specialNumbers[Math.floor(Math.random() * specialNumbers.length)]; | |
| dialerDisplay.innerHTML = `Dialing: ${special}<br>> Accessing restricted line...`; | |
| document.getElementById('phreaking-log').innerHTML += `<br>> Dialing restricted: ${special}`; | |
| setTimeout(() => { | |
| if (Math.random() > 0.3) { | |
| dialerDisplay.innerHTML += `<br>> ACCESS DENIED - Security protocol triggered!`; | |
| document.getElementById('phreaking-log').innerHTML += "<br>> FAILURE: Security protocol triggered - trace initiated"; | |
| } else { | |
| dialerDisplay.innerHTML += `<br>> ACCESS GRANTED - Connected to ${special}`; | |
| document.getElementById('phreaking-log').innerHTML += `<br>> SUCCESS: Connected to ${special}`; | |
| } | |
| }, 2000); | |
| }); | |
| } | |
| // Initialize PDF Reader | |
| function initPDFReader() { | |
| const pdfContent = document.getElementById('pdf-content'); | |
| const pageNum = document.getElementById('pdf-page-num'); | |
| const pageTotal = document.getElementById('pdf-page-total'); | |
| let currentPage = 0; | |
| pageTotal.textContent = pdfPages.length; | |
| // Load initial page | |
| function loadPage(pageIndex) { | |
| if (pageIndex >= 0 && pageIndex < pdfPages.length) { | |
| currentPage = pageIndex; | |
| pdfContent.innerHTML = pdfPages[pageIndex].content; | |
| pageNum.textContent = currentPage + 1; | |
| } | |
| } | |
| // Navigation controls | |
| document.getElementById('pdf-prev').addEventListener('click', function() { | |
| if (currentPage > 0) { | |
| loadPage(currentPage - 1); | |
| } | |
| }); | |
| document.getElementById('pdf-next').addEventListener('click', function() { | |
| if (currentPage < pdfPages.length - 1) { | |
| loadPage(currentPage + 1); | |
| } | |
| }); | |
| // Zoom controls (simplified) | |
| document.getElementById('pdf-zoom-in').addEventListener('click', function() { | |
| const currentSize = parseInt(getComputedStyle(pdfContent).fontSize) || 16; | |
| pdfContent.style.fontSize = (currentSize + 2) + 'px'; | |
| }); | |
| document.getElementById('pdf-zoom-out').addEventListener('click', function() { | |
| const currentSize = parseInt(getComputedStyle(pdfContent).fontSize) || 16; | |
| pdfContent.style.fontSize = Math.max(12, currentSize - 2) + 'px'; | |
| }); | |
| // Load first page | |
| loadPage(0); | |
| } | |
| // Initialize OSINT App | |
| function initOSINTApp() { | |
| const searchButton = document.getElementById('osint-search'); | |
| const advancedButton = document.getElementById('osint-advanced'); | |
| const clearButton = document.getElementById('osint-clear'); | |
| const queryInput = document.getElementById('osint-query'); | |
| const resultsContainer = document.getElementById('osint-results'); | |
| // Search functionality | |
| searchButton.addEventListener('click', function() { | |
| const query = queryInput.value.trim().toLowerCase(); | |
| if (query) { | |
| // Simple search simulation | |
| const results = document.querySelectorAll('.osint-result-item'); | |
| let found = false; | |
| results.forEach(result => { | |
| const title = result.querySelector('.osint-result-title').textContent.toLowerCase(); | |
| const detail = result.querySelector('.osint-detail').textContent.toLowerCase(); | |
| if (title.includes(query) || detail.includes(query)) { | |
| result.style.display = 'block'; | |
| found = true; | |
| } else { | |
| result.style.display = 'none'; | |
| } | |
| }); | |
| if (!found) { | |
| resultsContainer.innerHTML = '<div class="osint-result-item">No results found for: "' + query + '"</div>'; | |
| } | |
| } | |
| }); | |
| // Advanced search | |
| advancedButton.addEventListener('click', function() { | |
| const advancedQueries = [ | |
| "SOLE entity", | |
| "Sun Thief conspiracy", | |
| "Gospelware outbreak", | |
| "Numericana rituals", | |
| "Cipherion Guild" | |
| ]; | |
| let randomQuery = advancedQueries[Math.floor(Math.random() * advancedQueries.length)]; | |
| queryInput.value = randomQuery; | |
| // Simulate advanced search | |
| resultsContainer.innerHTML = ` | |
| <div class="osint-result-item"> | |
| <div class="osint-result-title">Advanced Search: ${randomQuery}</div> | |
| <div class="osint-result-source">Source: Deep Tangle Analysis | Classification: RESTRICTED</div> | |
| <div class="osint-detail"> | |
| > Running deep pattern analysis...<br> | |
| > Accessing restricted nodes...<br> | |
| > Bypassing NOMAD firewalls...<br> | |
| > <span style="color: #008000">Analysis complete. Found 7 relevant data points.</span><br> | |
| > Cross-referencing with known faction activities...<br> | |
| > <span style="color: #ff0000">WARNING: Unauthorized access detected!</span><br> | |
| > <span style="color: #ff8c00">Initating secure protocols...</span> | |
| </div> | |
| </div> | |
| `; | |
| }); | |
| // Clear results | |
| clearButton.addEventListener('click', function() { | |
| queryInput.value = ''; | |
| const results = document.querySelectorAll('.osint-result-item'); | |
| results.forEach(result => { | |
| result.style.display = 'block'; | |
| result.querySelector('.osint-detail').style.display = 'none'; | |
| }); | |
| }); | |
| // Toggle detail view | |
| resultsContainer.addEventListener('click', function(e) { | |
| const resultItem = e.target.closest('.osint-result-item'); | |
| if (resultItem) { | |
| const detail = resultItem.querySelector('.osint-detail'); | |
| if (detail.style.display === 'block') { | |
| detail.style.display = 'none'; | |
| } else { | |
| detail.style.display = 'block'; | |
| } | |
| } | |
| }); | |
| } | |
| // Initialize Nomadsoft | |
| function initNomadsoft() { | |
| // Gospelware Scanner | |
| document.getElementById('gospelware-scan').addEventListener('click', function() { | |
| const display = document.getElementById('gospelware-display'); | |
| const progress = document.getElementById('gospelware-progress'); | |
| display.innerHTML = "> Scanning network for Gospelware fragments...<br>"; | |
| progress.style.width = '0%'; | |
| let progressValue = 0; | |
| const interval = setInterval(() => { | |
| progressValue += 5; | |
| progress.style.width = progressValue + '%'; | |
| if (progressValue === 25) { | |
| display.innerHTML += "> Detecting emotional signatures...<br>"; | |
| } else if (progressValue === 50) { | |
| display.innerHTML += "> Analyzing code patterns...<br>"; | |
| } else if (progressValue === 75) { | |
| display.innerHTML += "> Gospelware fragments detected in Sector 12!<br>"; | |
| } else if (progressValue >= 100) { | |
| display.innerHTML += "> <span style='color: #ff0000'>ALERT: Major Gospelware outbreak detected!</span><br>"; | |
| display.innerHTML += "> Reality integrity compromised in affected zones.<br>"; | |
| clearInterval(interval); | |
| } | |
| }, 200); | |
| }); | |
| document.getElementById('gospelware-analyze').addEventListener('click', function() { | |
| const display = document.getElementById('gospelware-display'); | |
| display.innerHTML = "> Analyzing Gospelware fragment...<br>"; | |
| display.innerHTML += "> Emotional signature: Collective trauma<br>"; | |
| display.innerHTML += "> Code pattern: Self-replicating emotional algorithm<br>"; | |
| display.innerHTML += "> Origin: Unknown, possibly extra-dimensional<br>"; | |
| display.innerHTML += "> Threat level: EXTREME - Reality rewriting capabilities detected<br>"; | |
| }); | |
| // Dextro Synthesizer | |
| document.getElementById('dextro-harvest').addEventListener('click', function() { | |
| const display = document.getElementById('dextro-display'); | |
| const progress = document.getElementById('dextro-progress'); | |
| display.innerHTML = "> Harvesting ferrogel from Sector 7...<br>"; | |
| progress.style.width = '0%'; | |
| let progressValue = 0; | |
| const interval = setInterval(() => { | |
| progressValue += 10; | |
| progress.style.width = progressValue + '%'; | |
| if (progressValue === 30) { | |
| display.innerHTML += "> Extracting raw ferrogel...<br>"; | |
| } else if (progressValue === 60) { | |
| display.innerHTML += "> Purifying nanite structures...<br>"; | |
| } else if (progressValue === 90) { | |
| display.innerHTML += "> Ferrogel harvested successfully!<br>"; | |
| } else if (progressValue >= 100) { | |
| display.innerHTML += "> Ready for refinement process.<br>"; | |
| clearInterval(interval); | |
| } | |
| }, 300); | |
| }); | |
| document.getElementById('dextro-synthesize').addEventListener('click', function() { | |
| const display = document.getElementById('dextro-display'); | |
| display.innerHTML = "> Beginning Dextro synthesis...<br>"; | |
| display.innerHTML += "> Matter conversion initiated...<br>"; | |
| display.innerHTML += "> Quantum stabilization required...<br>"; | |
| display.innerHTML += "> <span style='color: #008000'>SUCCESS: Dextro synthesis complete!</span><br>"; | |
| display.innerHTML += "> Jump-tech reactivation now possible.<br>"; | |
| }); | |
| // Babelbomb Detector | |
| document.getElementById('babelbomb-scan').addEventListener('click', function() { | |
| const display = document.getElementById('babelbomb-display'); | |
| const progress = document.getElementById('babelbomb-progress'); | |
| display.innerHTML = "> Scanning for linguistic collapse patterns...<br>"; | |
| progress.style.width = '0%'; | |
| let progressValue = 0; | |
| const interval = setInterval(() => { | |
| progressValue += 8; | |
| progress.style.width = progressValue + '%'; | |
| if (progressValue === 24) { | |
| display.innerHTML += "> Analyzing semantic networks...<br>"; | |
| } else if (progressValue === 48) { | |
| display.innerHTML += "> Monitoring communication channels...<br>"; | |
| } else if (progressValue === 72) { | |
| display.innerHTML += "> <span style='color: #ff0000'>ALERT: Babelbomb detected in Corporate Sector!</span><br>"; | |
| } else if (progressValue >= 100) { | |
| display.innerHTML += "> Textionage signature confirmed.<br>"; | |
| display.innerHTML += "> Linguistic collapse imminent!<br>"; | |
| clearInterval(interval); | |
| } | |
| }, 250); | |
| }); | |
| document.getElementById('babelbomb-defuse').addEventListener('click', function() { | |
| const display = document.getElementById('babelbomb-display'); | |
| display.innerHTML = "> Attempting to defuse Babelbomb...<br>"; | |
| display.innerHTML += "> Deploying semantic counter-measures...<br>"; | |
| display.innerHTML += "> Restoring linguistic coherence...<br>"; | |
| display.innerHTML += "> <span style='color: #008000'>SUCCESS: Babelbomb neutralized!</span><br>"; | |
| display.innerHTML += "> Communication restored in affected area.<br>"; | |
| }); | |
| // Jump-Tech Calibrator | |
| document.getElementById('jump-calibrate').addEventListener('click', function() { | |
| const display = document.getElementById('jump-display'); | |
| const progress = document.getElementById('jump-progress'); | |
| display.innerHTML = "> Calibrating Jump-Tech systems...<br>"; | |
| progress.style.width = '0%'; | |
| let progressValue = 0; | |
| const interval = setInterval(() => { | |
| progressValue += 6; | |
| progress.style.width = progressValue + '%'; | |
| if (progressValue === 18) { | |
| display.innerHTML += "> Aligning dimensional matrices...<br>"; | |
| } else if (progressValue === 36) { | |
| display.innerHTML += "> Synchronizing phase harmonics...<br>"; | |
| } else if (progressValue === 54) { | |
| display.innerHTML += "> Verifying Dextro containment...<br>"; | |
| } else if (progressValue === 72) { | |
| display.innerHTML += "> Testing reality anchors...<br>"; | |
| } else if (progressValue === 90) { | |
| display.innerHTML += "> Calibration 90% complete...<br>"; | |
| } else if (progressValue >= 100) { | |
| display.innerHTML += "> <span style='color: #008000'>SUCCESS: Jump-Tech systems calibrated!</span><br>"; | |
| display.innerHTML += "> Ready for test jump.<br>"; | |
| clearInterval(interval); | |
| } | |
| }, 200); | |
| }); | |
| document.getElementById('jump-test').addEventListener('click', function() { | |
| const display = document.getElementById('jump-display'); | |
| display.innerHTML = "> Initiating test jump sequence...<br>"; | |
| display.innerHTML += "> Reality phase shift in 3... 2... 1...<br>"; | |
| display.innerHTML += "> <span style='color: #ff8c00'>Jump successful! Portal stable.</span><br>"; | |
| display.innerHTML += "> Destination: Alternate reality sector confirmed.<br>"; | |
| display.innerHTML += "> Congruent escape protocol now available.<br>"; | |
| }); | |
| } | |
| // Initialize Everything | |
| function initializeSystem() { | |
| initMatrixRain(); | |
| initAudio(); | |
| executeBootStep(); | |
| // Initialize desktop systems after boot | |
| setTimeout(() => { | |
| initDesktopIcons(); | |
| initFileSystem(); | |
| initStartMenu(); | |
| initWindowDragging(); | |
| initWindowControls(); | |
| initTerminal(); | |
| initTabs(); | |
| initAudioControls(); | |
| initHackerTools(); | |
| initConnections(); | |
| initSystemMonitor(); | |
| initEmailClient(); | |
| initScreensaver(); | |
| initLoginTerminal(); | |
| initVolumeControls(); | |
| initPhreakingApp(); | |
| initPDFReader(); | |
| initOSINTApp(); | |
| initNomadsoft(); | |
| // Start random messages | |
| setTimeout(showRandomMessage, 10000); | |
| // Start clock | |
| updateClock(); | |
| setInterval(updateClock, 1000); | |
| // Start inactivity tracking | |
| resetInactivityTimer(); | |
| document.addEventListener('mousemove', resetInactivityTimer); | |
| document.addEventListener('keypress', resetInactivityTimer); | |
| document.addEventListener('click', resetInactivityTimer); | |
| // Screensaver click to deactivate | |
| screensaver.addEventListener('click', deactivateScreensaver); | |
| }, 3000); | |
| } | |
| // Start the system | |
| initializeSystem(); | |
| }); | |
| </script> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment