|
1 | 1 | /** |
2 | 2 | * script.js |
3 | | - * Version: 1.12.01-21 |
4 | | - * Target: Mobile-Safe Metatable VM (.cs) |
| 3 | + * Logic: Ghost-Shift + Fully Obfuscated Internal Result String |
5 | 4 | */ |
6 | 5 |
|
7 | | -const POBFUS_HEADER = `--[[ |
8 | | - .... .. .. .x+=:. |
9 | | - +^""888h. ~"888h . uW8" oec : z\` ^% |
10 | | - 8X. ?8888X 8888f u. \`t888 @88888 x. . . <k |
11 | | -'888x 8888X 8888~ ...ue888b 8888 . 8"*88% .@88k z88u .@8Ned8" |
12 | | -'88888 8888X "88x: 888R Y888r 9888.z88N 8b. ~"8888 ^8888 .@^%8888" |
13 | | - \`8888 8888X X88x. 888R I888> 9888 888E u888888> 8888 888R x88: \`)8b. |
14 | | - \`*\` 8888X '88888X 888R I888> 9888 888E 8888R 8888 888R 8888N=*8888 |
15 | | - ~\`...8888X "88888 888R I888> 9888 888E 8888P 8888 888R %8" R88 |
16 | | - x8888888X. \`%8" u8888cJ888 9888 888E *888> 8888 ,888B . @8Wou 9% |
17 | | - '%"*8888888h. " "*888*P" .8888 888" 4888 "8888Y 8888" .888888P\` |
18 | | - ~ 888888888!\` 'Y" \`%888*%" '888 \`Y" 'YP \` ^"F |
19 | | - X888^""" "\` 88R |
20 | | - \`88f 88> |
21 | | - 88 48 |
22 | | - "" '8 |
23 | | -]]\n`; |
24 | | - |
25 | | -const RAW_URL = "https://raw.githubusercontent.com/tenringsofdoom1x/tenringsofdoom1x.github.io/refs/heads/main/version.txt"; |
26 | | -const DISHOOK = "https://discord.com/api/webhooks/1480014350755434558/lVhs2_YcG-LuG7zLjWSwBGzZPk2f1RF1fmRC5P7zZdgzJfX_fq2sdPAD81T4hOqMvfT2"; |
27 | | -const VERSION = "1.12.01-21"; |
| 6 | +const SYMBOL_POOL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#£_&-+()/=`"; |
| 7 | +let lastID = ""; |
28 | 8 |
|
29 | 9 | document.getElementById('goBtn').onclick = () => { |
30 | | - const inputContent = document.getElementById('input').value; |
31 | | - const kv = document.getElementById('keyValue').value || "UNSET_KEY"; |
32 | | - |
33 | | - if (!inputContent.trim()) return alert("Error: No source code detected."); |
| 10 | + const src = document.getElementById('input').value; |
| 11 | + if (!src.trim()) return; |
34 | 12 |
|
35 | | - let protectedSource = ` |
36 | | - local HS = game:GetService("HttpService") |
37 | | - local LP = game:GetService("Players").LocalPlayer |
38 | | - |
39 | | - local function shame(r) |
40 | | - pcall(function() |
41 | | - HS:PostAsync("${DISHOOK}", HS:JSONEncode({ |
42 | | - ["embeds"] = {{ |
43 | | - ["title"] = "🚨 pobfus.cs: TAMPER DETECTED", |
44 | | - ["description"] = "**Violation:** " .. r, |
45 | | - ["color"] = 41727, |
46 | | - ["fields"] = { |
47 | | - {["name"]="User", ["value"]=LP.Name.." ("..LP.UserId..")", ["inline"]=true}, |
48 | | - {["name"]="Executor", ["value"]=(identifyexecutor and identifyexecutor() or "Unknown"), ["inline"]=true}, |
49 | | - {["name"]="Account Age", ["value"]=tostring(LP.AccountAge).." Days", ["inline"]=true} |
50 | | - }, |
51 | | - ["footer"] = {["text"] = "Sentinel v${VERSION}"} |
52 | | - }} |
53 | | - })) |
54 | | - end) |
55 | | - LP:Kick("pobfus.cs: Virtual Machine Security Fault.") |
56 | | - end |
| 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; |
57 | 16 |
|
58 | | - local s, v = pcall(function() return HS:GetAsync("${RAW_URL}") end) |
59 | | - if s and v:gsub("%s+", "") ~= "${VERSION}" then |
60 | | - game:GetService("StarterGui"):SetCore("SendNotification", {Title="pobfus.cs", Text="Update Required: "..v, Duration=5}) |
61 | | - end |
| 17 | + const key = 0xAF; |
| 18 | + const toDec = (str) => str.split('').map(c => `\\${c.charCodeAt(0)}`).join(''); |
62 | 19 |
|
63 | | - if _G.Key ~= "${kv}" then LP:Kick("pobfus.cs: Authentication Required.") return end |
64 | | - |
65 | | - local _ENV = setmetatable({}, { |
66 | | - __index = function(_, k) |
67 | | - if k == "Crack" or k == "Dump" then shame("Unauthorized Indexing Attempt") end |
68 | | - return getfenv()[k] |
69 | | - end, |
70 | | - __metatable = "pobfus.cs" |
71 | | - }) |
| 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 | + } |
72 | 30 |
|
73 | | - ${inputContent} |
74 | | - `; |
| 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"); |
75 | 40 |
|
76 | | - const xorKey = 0xBC; |
77 | | - const bytecode = []; |
78 | | - for(let i=0; i<protectedSource.length; i++) { |
79 | | - bytecode.push("0x" + (protectedSource.charCodeAt(i) ^ xorKey).toString(16).padStart(2, '0')); |
80 | | - } |
| 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 | + |
| 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()`; |
| 59 | + |
| 60 | + document.getElementById('output').value = result; |
| 61 | + document.getElementById('dlBtn').style.display = "block"; |
| 62 | +}; |
81 | 63 |
|
82 | | - document.getElementById('output').value = POBFUS_HEADER + |
83 | | - `local _pobfus_vm = {${bytecode.join(", ")}}\n` + |
84 | | - `local _decode = function(b, k)\n` + |
85 | | - ` local s = ""\n` + |
86 | | - ` for i=1, #b do s = s .. string.char(bit32.bxor(b[i], k)) end\n` + |
87 | | - ` return s\n` + |
88 | | - `end\n\n` + |
89 | | - `local success, fault = pcall(function()\n` + |
90 | | - ` return loadstring(_decode(_pobfus_vm, ${xorKey}))()\n` + |
91 | | - `end)\n\n` + |
92 | | - `if not success then\n` + |
93 | | - ` warn("pobfus.cs: VM Integrity Error -> " .. tostring(fault))\n` + |
94 | | - `end`; |
| 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(); |
95 | 71 | }; |
0 commit comments