您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Full toolset + working logout nuker with session destruction and DOM bypass (Fixed Bugs!)
// ==UserScript== // @name Etheranel Executor v4.4.5 // @namespace scratch.mit.edu/ // @version 4.4.5 // @description Full toolset + working logout nuker with session destruction and DOM bypass (Fixed Bugs!) // @author EtherealRealm // @match *://scratch.mit.edu/* // @grant none // @run-at document-end // ==/UserScript== (function () { const PANEL_ID = 'ethereal-executor'; const mainColor = '#a64eff'; let drawingActive = false, isEraser = false; let drawColor = '#ff0000', drawSize = 3; let audio = null, canvas = null, ctx = null; let destroyerActive = false; let emailList = []; function fillReactInput(selector, value) { const el = document.querySelector(selector); if (!el) return; const setter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), 'value')?.set; setter ? setter.call(el, value) : el.value = value; el.dispatchEvent(new Event('input', { bubbles: true })); } function createRandomUsername() { const chars = "abcdefghijklmnopqrstuvwxyz0123456789"; return "user" + Array.from({ length: 6 }, () => chars[Math.floor(Math.random() * chars.length)]).join(''); } function generatePassword() { const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%"; return Array.from({ length: 10 }, () => chars[Math.floor(Math.random() * chars.length)]).join(''); } function getCSRFToken() { const match = document.cookie.match(/scratchcsrftoken=([^;]+)/); return match ? match[1] : ''; } async function nukeAccount() { if (!confirm("\u2620\ufe0f This will delete your account and wipe all data. Proceed?")) return; try { const logoutBtn = document.querySelector('button[data-control="logout"]'); if (logoutBtn) logoutBtn.click(); const headers = { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest", "X-CSRFToken": getCSRFToken() }; const deleteReq = fetch("/accounts/delete/", { method: "POST", headers, credentials: "include", body: JSON.stringify({ password: "delete" }) }); const logoutReq = fetch("/accounts/logout/", { method: "POST", headers, credentials: "include" }); await Promise.all([deleteReq, logoutReq]); localStorage.clear(); sessionStorage.clear(); indexedDB.databases?.().then(dbs => dbs.forEach(db => indexedDB.deleteDatabase(db.name))); document.cookie.split(";").forEach(c => { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); if (navigator.credentials) { try { await navigator.credentials.preventSilentAccess(); } catch {} } alert("\u2620\ufe0f Nuked. Redirecting to home."); location.href = "/"; } catch (err) { alert("\u274c Nuker failed: " + err.message); } } function createPanel() { if (document.getElementById(PANEL_ID)) return; const panel = document.createElement('div'); panel.id = PANEL_ID; panel.style = ` position:fixed;top:120px;left:100px;width:340px; background:#111;color:#fff;padding:15px;z-index:99999999; border:2px solid ${mainColor};border-radius:10px; font-family:Arial;box-shadow:0 0 10px ${mainColor}; `; const username = createRandomUsername(); panel.innerHTML = ` <div style="font-size:18px;font-weight:bold;margin-bottom:10px;color:${mainColor};">⚡ Etheranel Executor v4.4.5</div> <details><summary>🖼️ Image Replacer</summary> <input id="img-url" placeholder="Image URL" style="width:100%;margin:5px 0;padding:5px;background:#222;color:#fff;border:none;" /> <button id="replace-images" style="width:100%;padding:6px;">Replace Images</button> </details><hr> <details><summary>🎵 Music Player</summary> <input id="music-url" placeholder="MP3 URL" style="width:100%;margin:5px 0;padding:5px;background:#222;color:#fff;border:none;" /> <button id="play-music" style="width:100%;padding:6px;">▶️ Play</button> <button id="stop-music" style="width:100%;padding:6px;margin-top:6px;background:#f33;color:#fff;">⏹ Stop</button> </details><hr> <details><summary>🧠 Text Rewriter</summary> <input id="text-find" placeholder="Find" style="width:100%;margin:5px 0;padding:5px;background:#222;color:#fff;border:none;" /> <input id="text-replace" placeholder="Replace" style="width:100%;margin:5px 0;padding:5px;background:#222;color:#fff;border:none;" /> <button id="rewrite-text" style="width:100%;padding:6px;">Rewrite</button> </details><hr> <details><summary>✏️ Draw Mode</summary> <input type="color" id="color-picker" value="${drawColor}" style="width:100%;" /> <input type="range" id="size-picker" min="1" max="20" value="${drawSize}" style="width:100%;" /> <button id="toggle-draw" style="width:100%;padding:6px;">Toggle Draw</button> <button id="eraser-tool" style="width:100%;padding:6px;">Toggle Eraser</button> <button id="clear-canvas" style="width:100%;padding:6px;">Clear Canvas</button> </details><hr> <details><summary>💥 Element Destroyer</summary> <button id="toggle-destroyer" style="width:100%;padding:6px;">💥 Toggle Destroyer</button> </details><hr> <details open><summary>🧬 Auto Account Generator</summary> <label>Username:</label> <input id="username-input" value="${username}" style="width:100%;margin:5px 0;padding:5px;background:#222;color:#fff;border:none;" /> <label>Email List (one per line):</label> <textarea id="email-list" style="width:100%;height:80px;background:#222;color:#fff;border:none;"></textarea> <button id="fill-form" style="margin-top:6px;width:100%;padding:6px;background:#4f4;">⚙️ Fill Account Form</button> </details><hr> <details><summary>☠️ Account Nuker</summary> <button id="nuke-account" style="width:100%;padding:6px;background:#900;color:#fff;">☠️ Nuke This Account</button> </details> `; document.body.appendChild(panel); // Restore broken tools const $ = sel => panel.querySelector(sel); $('#replace-images').onclick = () => { const url = $('#img-url').value; if (!url) return alert('Enter a valid URL'); document.querySelectorAll('img').forEach(img => img.src = url); }; $('#play-music').onclick = () => { const url = $('#music-url').value; if (!url) return; if (audio) audio.pause(); audio = new Audio(url); audio.loop = true; audio.play(); }; $('#stop-music').onclick = () => audio?.pause(); $('#rewrite-text').onclick = () => { const find = $('#text-find').value; const rep = $('#text-replace').value; const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); while (walker.nextNode()) walker.currentNode.nodeValue = walker.currentNode.nodeValue.replaceAll(find, rep); }; $('#color-picker').oninput = e => drawColor = e.target.value; $('#size-picker').oninput = e => drawSize = +e.target.value; $('#toggle-draw').onclick = () => { drawingActive = !drawingActive; drawingActive ? enableDrawing() : disableDrawing(); }; $('#clear-canvas').onclick = () => ctx?.clearRect(0, 0, canvas.width, canvas.height); $('#eraser-tool').onclick = () => { isEraser = !isEraser; alert(isEraser ? '🧽 Eraser on' : '✏️ Brush on'); }; $('#toggle-destroyer').onclick = () => { destroyerActive = !destroyerActive; alert(destroyerActive ? '💥 Destroyer active' : 'Destroyer off'); }; document.addEventListener('click', e => { if (destroyerActive && !panel.contains(e.target)) { e.preventDefault(); e.stopPropagation(); e.target.remove(); } }, true); $('#fill-form').onclick = () => { emailList = $('#email-list').value.split('\n').map(e => e.trim()).filter(e => e.includes('@')); if (!emailList.length) return alert('Provide at least one valid email'); const uname = $('#username-input').value.trim() || createRandomUsername(); const pwd = generatePassword(); fillReactInput('#username', uname); fillReactInput('#password', pwd); fillReactInput('#passwordConfirm', pwd); const obs = new MutationObserver(() => { const emailInput = document.querySelector('#email'); if (emailInput && emailInput.offsetParent !== null) { const email = emailList[Math.floor(Math.random() * emailList.length)]; fillReactInput('#email', email); obs.disconnect(); } }); obs.observe(document.body, { childList: true, subtree: true }); alert(`✅ Step 1 filled.\nUsername: ${uname}\nPassword: ${pwd}`); }; $('#nuke-account').onclick = nukeAccount; } function enableDrawing() { if (document.getElementById('draw-canvas')) return; canvas = document.createElement('canvas'); canvas.id = 'draw-canvas'; canvas.style = `position:fixed;top:0;left:0;z-index:99999998;pointer-events:auto;`; canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); ctx = canvas.getContext('2d'); ctx.lineJoin = 'round'; let drawing = false; canvas.onmousedown = e => { drawing = true; ctx.beginPath(); ctx.moveTo(e.clientX, e.clientY); }; canvas.onmousemove = e => { if (!drawing) return; ctx.lineTo(e.clientX, e.clientY); ctx.strokeStyle = isEraser ? '#000' : drawColor; ctx.lineWidth = drawSize; ctx.globalCompositeOperation = isEraser ? 'destination-out' : 'source-over'; ctx.stroke(); }; canvas.onmouseup = () => drawing = false; canvas.onmouseleave = () => drawing = false; } function disableDrawing() { if (canvas) canvas.remove(); canvas = null; ctx = null; } setTimeout(() => { if (document.readyState === 'complete') createPanel(); else window.addEventListener('load', createPanel); }, 500); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址