38029-vm/core/obfuscator.py
2026-01-31 12:38:38 +00:00

60 lines
1.8 KiB
Python

import random
import string
import base64
class LuauObfuscator:
@staticmethod
def generate_random_name(length=12):
return ''.join(random.choice(string.ascii_letters) for _ in range(length))
@staticmethod
def obfuscate(code):
if not code.strip():
return "-- No code provided"
# 1. Simple Variable Renaming (Simulated)
# 2. String Encryption
# 3. VM Wrapper
# This is a robust "VM-lite" wrapper for Luau
vm_name = LuauObfuscator.generate_random_name(16)
payload_name = LuauObfuscator.generate_random_name(10)
decrypt_name = LuauObfuscator.generate_random_name(10)
encoded_payload = base64.b64encode(code.encode()).decode()
obfuscated_template = f"""
-- Obfuscated by VM-Luau Strong
local {vm_name} = {{}}
local {payload_name} = "{encoded_payload}"
local function {decrypt_name}(data)
-- Simplified VM Decryption Layer
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
data = string.gsub(data, '[^'..b..'=]', '')
return (data:gsub('.', function(x)
if (x == '=') then return '' end
local r,f='',(b:find(x)-1)
for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
return r;
end):gsub('%d%d%d%d%d%d%d%d', function(x)
local r=0
for i=1,8 do r=r+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
return string.char(r)
end))
end
local {LuauObfuscator.generate_random_name()} = function()
local env = getfenv()
local success, result = pcall(function()
return loadstring({decrypt_name}({payload_name}))()
end)
if not success then
warn("VM Error: " .. tostring(result))
end
end
{LuauObfuscator.generate_random_name()}()
"""
return obfuscated_template.strip()