Luau syntax normalizer
Desugars compound assignments and strips Luau type annotations while preserving strings, comments and nested expressions — preparing code for the Lua 5.1 parser.
engine/syntax_normalizer.pyEpimetheus turns Prometheus-protected Lua and Roblox Luau into cleaner, more understandable source — combining dynamic trace emulation, static constant decoding and token-aware AST optimization.
Instead of relying on a single trick, Epimetheus combines purpose-built modules. Each one handles a different part of the Prometheus pipeline — from Luau syntax to the final reconstructed source.
Desugars compound assignments and strips Luau type annotations while preserving strings, comments and nested expressions — preparing code for the Lua 5.1 parser.
engine/syntax_normalizer.pyA native Lua 5.1 mock sandbox captures observable behavior with execution timeouts and a restricted host environment.
lua_bin/lua5.1 · deobfuscator.pyRemoves repetitive VM allocation and unpack noise, compresses consecutive loops and keeps meaningful calls, globals, URLs and closure entries.
engine/trace_filter.pyRecovers encrypted Prometheus strings in Python, understands custom Base64/Base85 alphabets and reverses rotated constant arrays.
engine/static_decoder.pyFolds arithmetic and string expressions, propagates safe aliases and removes dead Prometheus watermark guards without rewriting literals or comments.
engine/ast_optimizer.pyUnwraps ConstantArray wrappers and proxified locals. A shared lexical scanner keeps token handling consistent across the engine.
engine/constant_inliner.py · lua_lexer.pyExplore each stage of the pipeline. Select a step or play the sequence to see how noisy, protected input becomes structured Lua output.
Luau-specific syntax is transformed into Lua 5.1-compatible code. Compound assignments and type annotations are handled without altering strings or comments.
-- Input: Luau syntax local total: number = 10 total += 5 -- Normalized output local total = 10 total = total + 5
The project includes a benchmark suite for its core processing stages. These figures are reported in the v2.7.0 documentation and reflect the tested workloads.
Performance depends on input size, structure and hardware. Benchmark figures are project-reported measurements, not a universal speed guarantee.
Each processed script can produce a reconstructed source file, a constants dump and a compact execution report — ready to inspect in your editor.
Reconstructed Lua source with recovered calls, functions, loops, globals and applied optimizations.
Extracted and decoded string and numeric constants collected from static analysis and emulation.
Filtered trace of observed property access, method calls, global updates and detected URLs.
Clone the repository, make the bundled Lua runtime executable and run your first target. No external Lua compilation step is required.
$git clone https://github.com/NoName2323-wq/Epimetheus.git $cd Epimetheus
$chmod +x deobfuscator.py format_lua.py lua_bin/lua5.1
$python3 deobfuscator.py target_script.lua $python3 deobfuscator.py path/to/scripts --jobs 4