Pyobfusinator
Just another Python code obfuscator
Install / Use
/learn @dthung1602/PyobfusinatorREADME
<img src="docs/img-social.png" width="100%" style="border-radius: 8px">
What is this?
Just another Python code obfuscator
Feature
PyObfusinator has 2 methods to obfuscate code:
Inflation
Rewrite the whole program using only 4 built-in functions: exec, eval, str, all, with (), [], and +
For example, a simple print('hello world') becomes
exec(str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval(str(str)[all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])]+str(str)[all([])+all([])+all([])]+str(str)[all([])+all([])]+str(str)[all([])+all([])+all([])+all([])]+str(())[all([[]])]+str(())[all([])]))[all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval(str(str)[all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])]+str(str)[all([])+all([])+all([])]+str(str)[all([])+all([])]+str(str)[all([])+all([])+all([])+all([])]+str(())[all([[]])]+str(())[all([])]))[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])]+str(eval(str(str)[all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])]+str(str)[all([])+all([])+all([])]+str(str)[all([])+all([])]+str(str)[all([])+all([])+all([])+all([])]+str(())[all([[]])]+str(())[all([])]))[all([])+all([])+all([])+all([])+all([])+all([])]+str(eval(str(str)[all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])]+str(str)[all([])+all([])+all([])]+str(str)[all([])+all([])]+str(str)[all([])+all([])+all([])+all([])]+str(())[all([[]])]+str(())[all([])]))[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])]+str(eval(str(str)[all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])]+str(str)[all([])+all([])+all([])]+str(str)[all([])+all([])]+str(str)[all([])+all([])+all([])+all([])]+str(())[all([[]])]+str(())[all([])]))[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])]+str(eval)[all([])]+str(str)[all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])])
exec(eval(str(eval)[all([])]+str([])[all([[]])]+str(all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([]))+str([])[all([])])+str(str)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])]+str(())[all([[]])]+eval(str(eval)[all([])]+str([])[all([[]])]+str(all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([]))+str([])[all([])])+eval(str(eval)[all([])]+str([])[all([[]])]+str(all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([]))+str([])[all([])])+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])]+str(str)[all([])+all([])]+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])]+eval(str(eval)[all([])]+str([])[all([[]])]+str(all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([]))+str([])[all([])])+str(eval)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])]+str(str)[all([])+all([])]+eval(str(eval)[all([])]+str([])[all([[]])]+str(all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([]))+str([])[all([])])+eval(str(eval)[all([])]+str([])[all([[]])]+str(all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([]))+str([])[all([])])+str(())[all([])]+eval(str(eval)[all([])]+str([])[all([[]])]+str(all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([])+all([]))+str([])[all([])]))
Unicode magic
"Compress" the whole program using zalgo text
For example, print('hello world') becomes
b='E͉͎͔͈͐͒̈̇͌͌ͅ͏̀͗͏͒͌̈́̇̉ͯ'.encode();exec(''.join(chr(((h<<6&64|c&63)+22)%133+10)for h,c in zip(b[1::2],b[2::2])))
Installation
- Clone this project
- Make sure you have poetry installed
- Run
poetry install
Command line
Once installed, call the command line directly
pyobfusinator -i source.py -o dest.py -f
Or using the python module
python3 -m pyobfusinator -i source.py -o dest.py -f
All available options:
pyobfusinator [-h] [-i INPUT] [-o OUTPUT] [-v] (-f | -c)
options:
-h, --help Show this help message and exit
-i INPUT, --input INPUT Input file. Leave empty to read from stdin
-o OUTPUT, --output OUTPUT Output file. Leave empty to write to stdout
-v, --verbose Print extra info
-f, --inflate Make the code inflated by using only exec, ev
