Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | |
| <title>Hackheld Web Flasher</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <style> | |
| body { | |
| background-color: #0d0d0d; | |
| font-family: 'Courier New', Courier, monospace; | |
| } | |
| .log { | |
| height: 300px; | |
| overflow-y: auto; | |
| background-color: #1a1a1a; | |
| color: #00ff00; | |
| padding: 1rem; | |
| font-size: 0.85rem; | |
| border: 1px solid #333; | |
| white-space: pre-wrap; | |
| } | |
| .flash-pulse { | |
| animation: pulse 1s infinite; | |
| } | |
| @keyframes pulse { | |
| 0% { opacity: 1; } | |
| 50% { opacity: 0.4; } | |
| 100% { opacity: 1; } | |
| } | |
| </style> | |
| </head> | |
| <body class="text-white"> | |
| <div class="container mx-auto p-6 max-w-2xl"> | |
| <h1 class="text-3xl font-bold mb-4 text-center text-green-400">Hackheld Web Flasher</h1> | |
| <div class="flex justify-center mb-4 space-x-4"> | |
| <button id="startBtn" class="bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded">Start Flash</button> | |
| <button id="stopBtn" class="bg-red-600 hover:bg-red-700 text-white px-4 py-2 rounded">Stop</button> | |
| <button id="resetBtn" class="bg-gray-600 hover:bg-gray-700 text-white px-4 py-2 rounded">Reset</button> | |
| </div> | |
| <div class="log border mb-4" id="logBox"> | |
| [INFO] Hackheld Web Flasher v1.0 initialized.<br/> | |
| [READY] Connect device and click Start Flash. | |
| </div> | |
| <div class="flex justify-center items-center"> | |
| <div id="statusLight" class="w-6 h-6 rounded-full bg-gray-400"></div> | |
| <span id="statusText" class="ml-2 text-gray-400">Status: Idle</span> | |
| </div> | |
| </div> | |
| <script> | |
| const logBox = document.getElementById('logBox'); | |
| const startBtn = document.getElementById('startBtn'); | |
| const stopBtn = document.getElementById('stopBtn'); | |
| const resetBtn = document.getElementById('resetBtn'); | |
| const statusLight = document.getElementById('statusLight'); | |
| const statusText = document.getElementById('statusText'); | |
| let flashInterval = null; | |
| let logCount = 0; | |
| function appendLog(message) { | |
| logBox.innerHTML += `\n[LOG] ${message}`; | |
| logBox.scrollTop = logBox.scrollHeight; | |
| } | |
| function startFlash() { | |
| if (flashInterval) return; | |
| statusLight.classList.remove('bg-gray-400'); | |
| statusLight.classList.add('bg-green-500', 'flash-pulse'); | |
| statusText.textContent = 'Status: Flashing'; | |
| statusText.classList.remove('text-gray-400'); | |
| statusText.classList.add('text-green-400'); | |
| appendLog('Starting flash process...'); | |
| let step = 1; | |
| flashInterval = setInterval(() => { | |
| if (step <= 5) { | |
| appendLog(`Flashing sector ${step}... OK`); | |
| step++; | |
| } else { | |
| appendLog('Flashing complete. Device is now booting.'); | |
| stopFlash(); | |
| } | |
| }, 1000); | |
| } | |
| function stopFlash() { | |
| if (flashInterval) { | |
| clearInterval(flashInterval); | |
| flashInterval = null; | |
| } | |
| statusLight.classList.remove('bg-green-500', 'flash-pulse'); | |
| statusLight.classList.add('bg-red-500'); | |
| statusText.textContent = 'Status: Stopped'; | |
| statusText.classList.remove('text-green-400'); | |
| statusText.classList.add('text-red-400'); | |
| appendLog('Flashing stopped.'); | |
| } | |
| function resetLog() { | |
| logBox.innerHTML = '[INFO] Hackheld Web Flasher v1.0 initialized.\n[READY] Connect device and click Start Flash.'; | |
| stopFlash(); | |
| statusLight.classList.remove('bg-red-500'); | |
| statusLight.classList.add('bg-gray-400'); | |
| statusText.textContent = 'Status: Idle'; | |
| statusText.classList.remove('text-red-400'); | |
| statusText.classList.add('text-gray-400'); | |
| } | |
| startBtn.addEventListener('click', startFlash); | |
| stopBtn.addEventListener('click', stopFlash); | |
| resetBtn.addEventListener('click', resetLog); | |
| </script> | |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-qwensite.hf.space/logo.svg" alt="qwensite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-qwensite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >QwenSite</a> - 🧬 <a href="https://enzostvs-qwensite.hf.space?remix=S-Dreamer/hackheld-web-flasher" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
| </html> |