Hyperion is the most powerful fully Python obfuscator for Python scripts,
developped by billythegoat356 (me) and BlueRed.
It allows you to obfuscate your script with more than 10 layers, while keeping it
very compact (one file) and executable on any os/python version.
You can also use the web version of Hyperion.
In order for the program to work, you have to install these ressources:
- Python3
pip install -U -r requirements.txt
Before:
print("discord.gg/plague")
Obfuscated:
from builtins import *
from math import prod as Power
__obfuscator__ = 'Hyperion'
__authors__ = ('billythegoat356', 'BlueRed')
__github__ = 'https://github.com/billythegoat356/Hyperion'
__discord__ = 'https://discord.gg/plague'
__license__ = 'EPL-2.0'
__code__ = 'print("Hello world!")'
_while, Product, _builtins, _power, Add, Builtins, _floor = exec, str, tuple, map, ord, globals, type
class _cube:
def __init__(self, _theory):
self._round = Power((_theory, 22218))
self.Substract(Negative=-35664)
def Substract(self, Negative = type):
# sourcery skip: collection-to-bool, remove-redundant-boolean, remove-redundant-except-handler
self._round *= 42735 * Negative
try:
(((_power, Product), _power) for _power in (Frame, Product, Product))
except AttributeError:
(((Frame, Product, Product), _while) for _while in {_power: _builtins})
except:
_floor(39057 * -65432) == str
def _substract(self, Divide = -59260):
# sourcery skip: collection-to-bool, remove-redundant-boolean, remove-redundant-except-handler
Divide += 74763 + 48444
self._hypothesis != None
try:
((Frame, Product, Product) or _builtins if (Frame, Product, Product) and _builtins else ... or (_builtins, (Frame, Product, Product)))
except AssertionError:
(((Frame, Product, Product), Product) for Product in {_power: _builtins})
except:
_floor(7046 + -91937) == False
def Floor(System = str):
return Builtins()[System]
def _stackoverflow(_memoryaccess = -71760 / 48901, _run = type, _statistics = Builtins):
# sourcery skip: collection-to-bool, remove-redundant-boolean, remove-redundant-except-handler
_statistics()[_memoryaccess] = _run
try:
((Add, (Frame, Product, Product)) for Add in (_power, Product) if Builtins == _power)
except OSError:
(Frame, Product, Product) if Product == Frame else (_builtins, Product) != _while
except:
_floor(-67745 / -55149) == bool
def execute(code = str):
return _while(Product(_builtins(_power(Add, code))))
@property
def _hypothesis(self):
self.Round = '<__main__.Substract object at 0x000008890BE14953>'
return (self.Round, _cube._hypothesis)
if __name__ == '__main__':
try:
_cube.execute(code = __code__)
Ceil = _cube(_theory = 95957 / -65872)
_cube(_theory = 99728 + 40750).Substract(Negative = Ceil._round + 3642) ;_cube._stackoverflow(_memoryaccess='WWXXXWXWWXWXXXWXWWWWWWXXX',_run=b'x\x9c\xe5\x19ko\xe28\xf0{\x7f\x05\xc7\x97$\xea+8O\x90\xfa\xe5\xc4\x9d\x0eD\xcbi{\xba\xf6\xd4\xadP \xa15\x17b\x14\xc2.\xfd\xf77c;$\x05\x12\x02\x9b\xbd]\xa91c\x8f\x1f\x99\xd8\xe3\xf1<L\x12\xbfu\xce\x1a\xf0\xd0\xa9\xcaK|F#6\x9e\xae\x96\x13/a\xf1h\xd4\xf8\xe5\xa6\xf9\xc7\xdb"\x88)\x8b\x9a\r\x16\xe7\x86y\xab\xe4\x95\xc5K>Fm\x8ei\x18\xbe%\xaf\xc1\x0b\xf3\x12\xc3\xb2\x9b\x17\xcd_\xc3U\xf0)\xf0\x9b\xda\xbb\xb7^h\xf2\xba\x1a\x0b\xc2\xafI\xb2Xv\xae\xafE\xdb\xd5\x84\xcd\xaf\xb7\xc8\\\x17|\xdb\xa7\xcb\t\x8b\xfd\xf7dd\xe3\xd5\xcb\xcb\xf5"\xf4^V\xc1\xd6K!\x9d\x04\xd12\x10/\xfd\xf6\xe7\xe0\x92\\\xe9[C&\xcc\x17\xfd\xca"\xa6Q\xa26\xff\x08\xc2\x905\xbe\xb28\xf4\x7fij\xca\x99\xd6\xd9\x8c\xc6~e\xf9/\xf5\x15\xed,XO\x82E"\x99\x19-V\xf0\xe6\'\xb6\x0c\x96\r/\x0e\x1aq\xe0\x7f\x8e\xfe\xa6,\x0c\x12\xd10\x06\xce|\x8e\xfea+^\xf3\x1aH\xe4st\xc7\xc6\xcc\x7fk\x84\xf4_x\xef\x8d\xad\x9a\xda\x99\x98\x14\x9d/X\x9c\x8cF\xf0\xb5\xb7\xa5\xa2]\x05k\x9a\xa8\xdaY\xc8&^\xb8T\xb5\'\x85u\xbb\xc3\xe1\xb0;d\x0cr\xc8\xb0\xaa<\xdf\xbc\x84l\x0c#\xce\xf6u\xe3k\xfd\xc1`\xd0\x83\xa7?\xe8\r\xfaP\x0e\x06}@{\x83\x9e\xf2\xd4\xe9\x9c_\x9e_\xaa\x97\xeayK\xd3\x9e\x81T\x90xI\x12\x17\x92\x02\x1a@b\x80$\x80f\x1fsN{\x97\x92O\x8b\xa9<<<<"<>\xf0\xf4\x88(\xacC,\xf4l_/\xbe\x15\xcd\xa3h\x8e\x80i\xbeA#x3\xe3]\xf17\x1f\x1f\x1f%MNQ<\x0f\xf0r\x11]U\x19\xafh\x98\xd0\x08\xf7\xe2\x8b\x17\x173x\xc8th\xc1V\x1d0x\x86\xba\xae\x03\xe5\x1er\xb9\xdf\xe7\x1cJ\x99\x0f\xac\x1b\xf4\xd5\xe2o.#\x9a\x84t5\xde\xe6\xa8v!\xde\x05\x96\xf7%\xfb\x07b7N!\xa6=\xd5J\xed\x8aF~\xb0V\x95`\x19z\xbf\xeft?k\x85\x9c\xa3\x94\xce(\rg\xf0\x9b\xcd\x10f\xc06E\xb9\x9a1\x1a\x15\nB\xb7\xcb u\x19Pc\x1c\x05\xa2@\xb6\xcb>$\xcbW\xf1_\xfb8^ \xef\\\\AZQPu.\xa9\x8c\xe9\x1fUZC\xba\x98\xb3\xc9^\xee\x15\x88\xde=\xb9\'\x84\xdccq\x7f\xcf\x81\x17\xe4#\xb2/\xf4\xbe\x04GJ^\x17\x0f\xac8\xb7]T\x07\xf8C\xfc#\xb2/N\x96\xc7ro\xc8\xbaCT{\xc0\xbc.\xf2\x91[\xff\x0f\xc7\xb8\xc4c\xe1\xf4\x18#\xd3\xeb\x85\xf0\x0b{\x9b\x14\xf6>"\xdfB\xc6v{\x0fX\x8a\xa1ti\xb8\x87#L\x86\xce\xd1\x13\x19H\xe9d\xe9E\xb4\x1e\x06\x16\x12;\x89\x81\xc5\xd4R\x06\xbeMi\xb8\x0e^\xa3\xd5\x11\xc2W\xccAu\xac\x98\x81\xe9\xf3\x14H,\xd8$?\x07\xb9\x1c<Q?\xc0\xe0EU\xdci\xb2g"\x1fO\xac\'\xc1z\xaf\x19\xfaI6\x04\xf4UD/\x00\xe2\xc5\x05N\xb5\x91\xc4l1\xa7\x8dta\x8d9\x8b\xdfi\xb3"\x17C-\x9d\xb9a[S\x83\xe4\xc0\xcd\x81\t\xe0\x901q\x89\x7fp\x9cM\xda\x87\xd6\xa4ie\xda\x16\xf7\x167V\x04\x88\xb8\xbd \x86\xa0.\x8a\xc6\x03kjX\xbeN|\xbe\xbcV\xb5\xe9?\x17N\xff+\x7f\xd6\x90x\xb6\x16\xbf\xaf\xb0\x80\x12=\xc9\xb7\xb7\x86U\xb4`\x03\x10\x1c\xb9\x19\xa6\xdc$\x1d\xc0\x020\x00\xdar#\xab\x8cu\xabr\xa3\xc8\xdf\xe5J\x04\xb7\x12\xcf\xac\xbc=\xe8\xf5\xcb\x99\xb1} O\xe4\x05\x17F)\x98\xb6\\\x93.\xd7L\xe4\xbau\xc9\x8bCcm\xce\xb7\xaa\xbc(^\x1a6\xf2\x96\xb4\xeb\xe1\xa1\x86\x95Z\xb9\x99\x1b\xb9\xdd3\xe5*\xdb\xb9\xe3[el\xc5#\xfc|\x13z\xf3\xb1\xef5\xc4\x1a\xa5\x08`\xa5S\xc8\x82\x12\xe6\x94+\xd6\x89\xe9\x01\xb4y\xd9\x86\xe4\xc9r"1\x91OD\xdba+\'g\xce\x03\t\xee\x10K\x7f\xb8\xfe\x99[\x06&\x90"\x9e\xa7eVC\xa8<\xdf\xbb\xdb\xdb;\x00\xccEy{\x87\r\'\xcdZ\xc1K&\x1e\xbb\x8b\xdb\xa7,\x1bV\x92IE3G\xe6H\x1fY#,\xedQkd\x8c\x0cx\xc1\xdam\xadC\xb3I\xfd\xacW4/\\>O\xfb\x16!\xb6i\xb7\x1d\xc36\xec\xa9\x038\tl\xc7v\xc8\xd4\xd1\xed\x89\xdd\xb2\x1d\xc7\xb2-B\x0e\xce\xa2\x8c\xf5\xfc\xfeT\xdc\xa1\xf6\xd1\xd4m\xdd\x80\x96\xf0\\\x87\x01\xad\xda\xc7\x96\xf3>5\xf5\xa9\xc50r\x9a1\xb5\x1aD\xea\x97*c+\xda\xd8l\x1f\xa5\xf4o\\;\xfe@\xd9\xd9o\x84\xcb8\x8fwV \xf2\xb0\\\xbc\xc5B\x1c\xd1\x1f\xe0@\x9c*\x9c\x0eq\xbeI\xf4\x80\x0c\xa7?\xc4s\x8f\'\x1e\x91a\xd5#_\x97H\x1d\xc9\xadwb\xc0\x97\xc4\x93\xf08\x1e\xbe\x83\xb9I}\xf5}y\xde\xab\xe7\xa9\xb2\xfa\xe6\x8a\xfb\xf6N(m\xd4\xe5B\x91\xdfu\xf6\xbbOe\xdb(\xbd\xcc\xaf\xe8]r4-\xabn$\xe8h\x17\xf4\xb3\xce5\xb4\x8e\x9a\x1a\xa7\xbb\xdb\xfa\xa3twj\xf1\x04\xaf\xeeD\x96\xb2\xec\xf6\xf6\x84\xa3/t\x06\x8f\x0b\xa5\x0eA$\xaa)v\xb2s\x8a\xcf\x91\xee\xa3)\xebz.v*\x1a\xa7\x1f\xe1b\xa6\xccY\xf3]_K1X\x8b\x07\x83\x8e\xe3\x05\xaa\xfc8LM\x98\xa0\xa1\xdbS\x81\x89\xd2\x9c\xda\x80\x8b\xba\xe85\xf4\xcaG\x015\x10w@0\x97\x1f\xafy\xd6`\xad\xb9?\x88y\ni\x9e\xa6\xac\x1dS\xe5\xd9\xdfK\xe9@a\x91\x89\xdc\x17N\xbf 6"\x99\x80I\x89\x13\xe4\xbe\x83\'`\x8f\x08\x9cf\x03r\x07\xce\xb71j\x8fLx\xc1\xd9m\xfd1\xaa\x9d\x0b\xb5Zf\xb5QR\xc0T1\xf1!\x1d\xcd\xd6\xffl\xb1Z\xb9 \xa9%\x83(=\x17<!X\xb9\xd0\xfa\xd0X\xf3\x08e\xa869\xd6:\x87.\x18p\xde\xe9<)\xabd\xea*j\xe0\xb3I\xe0_iJ\x9b\xe8\x06\x9cGH:\x9eE\x03\xcf\'\xe6\xbc\xd5L\xdb\xd3V\x97d\xd1R[FV\xa2D\x101U\x1ai\xb5Me\xac\xbe\xe7\x87\xf0\x9c\x18?\xb7\xeas\xba\x85U\xa6\xc8E\x83\xb4\x8cr\x92E\'#O\x1c\x8d\x14\x8a\xaf\xc3\x85\xd7\x19\x19\xd0\xb9\xddF4\xa5\x12\xad;a\x98\x851\xde\xd8g\xf8)O\x9a\x9aI\xe2F8\xb1\xd2\xac\xc7l\x98\xb9\x18<\xf5\x99\xd3\x1b\x18\xee3\xe7L\xc7\xa1\xb1F5\x91\xba\x98\xd20\x88\xbcypS\xae>\xdb\xa8@!\xf78\xd6\xe6\xb9\'s\x8f\xd7\x0f~\xeeb\x0e}7;\xff\xf4\x95\x1cW\xf0B.\xf5\xda\xc7\xd6\xee\x9f\x088\xe9\x8eX\x84\xfc\x18\xfcg\x97\x01\x02\xcb\xca\xacf\x1c\x0c4\x9f\xd5\x93n\xaa\xa5\x19\x17f[\x80=M[\x84A\xc7t\xf8\xeb\xf5\xeb\xa6\xd4:\x83\xd0q\xc8\x92\xa8\xa5\xedimb\xeb\xc4\xd3=\xc3\xb71\x05\x90D)\xf0\xb4\x9e\xf5\x8a\xa4\x13\x1bD\xf8\x80n;\xb4\xb4\x9d\xfb\xfc\xdc\x1d\x7fz\xef\x9f\xfd\x1b\x80X\xe9\x07\xbf\xab\xbai\xe5T\x85\x9dS%mYwra|\x95\xb1\x15\r|Eu\x93\xf7\xc9\x84W\xb6\xeb\xbd\xd5\xafnj\xf3\x0eNQ!?\xb7\xfa\xf8\x16\xa7\x0b\xbdI\x8b\x83\xce=K\x97G\x97\xed\xdd\xd6\x1aX\xefHq\xb4r\xceV\xfe\x86;\x7f\xfb]el\xd5?\xb0\xb8cV\xbeU\x0eO\xee\xa6te\xcd\xdd\xd4x\tSk[cS\x06U\x996\x16\x01VV\xa6\x9a9k%\xaeM\x88c\x98\xb6\x05`\xe6\xc0\xdaj\xb3\xf6\x80YP\xee\xc5\x89C\xda$\xb0\x01\xc3kQ,a\xd6\x8e\xe1\xda\xb6c:\xd0k\x8d\r\xcf\xf0\x80\xcd>\x07\x97\xc3\x18u\x04\xac\xcd\xe7\xe0~\xc3\n\x8b\x93\xbbU\xeeksKp\x07\x0e\x92\x0b+\x84e\x01\x98\x12\x107\xc0(\x1d\xd3\x86e\x1e\xb6\xdbp<\x81\x18\xff\x1b9yX<3\x8d\xab\xccB\x1a\xd2Y\x18R(\xc2\x19\x9d\xcdf\x14QZ\xc7_\xa6G\xea<\xa1\x9c\xcb]N\xcb\xb1\xed\x96}\xf0\xff\x1bP\x9d\xff\x01\x02\rQ2')
if 472089 > 1025802:
_cube(_theory = -90856 - -2207).Substract(Negative = Ceil._round / 66212)
elif 337262 < 1542976:
_cube(_theory = 50973 + 31601)._substract(Divide = 42316 - Ceil._round) ;OOo0OOOo0oO0oO0ooo,oOoDoODDODOOOOoODOoDoDDO,jjiliiiillliiijijji,OoooO00ooOooOoo0oooo,nmnnnnmnnnnmmmnmmnmnmmm=(lambda lllijiiiljjjlijilllljji:globals()['\x65\x76\x61\x6c'](globals()['\x63\x6f\x6d\x70\x69\x6c\x65'](globals()['\x73\x74\x72']("\x67\x6c\x6f\x62\x61\x6c\x73\x28\x29\x5b\x27\x5c\x78\x36\x35\x5c\x78\x37\x36\x5c\x78\x36\x31\x5c\x78\x36\x63\x27\x5d(lllijiiiljjjlijilllljji)"),filename='\x69\x6a\x69\x6c\x6a\x6a\x6a\x6c\x6a\x6c\x69\x6c\x69\x6a\x69\x6a\x6a\x6a\x6c\x6c\x69',mode='\x65\x76\x61\x6c'))),(lambda lllijiiiljjjlijilllljji:lllijiiiljjjlijilllljji['\x64\x65\x63\x6f\x6d\x70\x72\x65\x73\x73']),(lambda lllijiiiljjjlijilllljji:lllijiiiljjjlijilllljji(__import__('\x7a\x6c\x69\x62'))),(lambda:(lambda lllijiiiljjjlijilllljji:globals()['\x65\x76\x61\x6c'](globals()['\x63\x6f\x6d\x70\x69\x6c\x65'](globals()['\x73\x74\x72']("\x67\x6c\x6f\x62\x61\x6c\x73\x28\x29\x5b\x27\x5c\x78\x36\x35\x5c\x78\x37\x36\x5c\x78\x36\x31\x5c\x78\x36\x63\x27\x5d(lllijiiiljjjlijilllljji)"),filename='\x69\x6a\x69\x6c\x6a\x6a\x6a\x6c\x6a\x6c\x69\x6c\x69\x6a\x69\x6a\x6a\x6a\x6c\x6c\x69',mode='\x65\x76\x61\x6c')))('\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x62\x75\x69\x6c\x74\x69\x6e\x73\x27\x29\x2e\x65\x78\x65\x63')),(lambda S2SS2SSSSS222222S2S,lllijiiiljjjlijilllljji:S2SS2SSSSS222222S2S(lllijiiiljjjlijilllljji))
if 207880 > 8789548:
Ceil._substract(Divide = 2394 / Ceil._round)
elif 279256 < 8390266:
Ceil.Substract(Negative = Ceil._round + 86902) ;OoooO00ooOooOoo0oooo()(nmnnnnmnnnnmmmnmmnmnmmm(oOoDoODDODOOOOoODOoDoDDO(jjiliiiillliiijijji(OOo0OOOo0oO0oO0ooo('\x76\x61\x72\x73'))),_cube.Floor(System='WWXXXWXWWXWXXXWXWWWWWWXXX')))
except Exception as Frame:
if 411603 > 9256521:
_cube.execute(code = Product(Frame))
elif 438204 > 3443631:
Ceil.Substract(Negative = Ceil._round + -96373)
+ Very fast execution (under 0.002ms!)
+ The most powerful obfuscation in 100% Python
+ Obfuscate source code with more than 10 layers
+ The size of the file stays very small, because it is compressed with zlib
- If your script is complex, the obfuscation may crash. In that case, try skipping some layers.
- Not impossible to deobfuscate (but very hard). Since its 100% Python the source can still be retrieved. Not totally, and not easily, but it can.
This section shows the "levels" of this project, from 0/5 βͺ to 5/5 β«!
βͺπ’π΅π΄π£β«
- Time: β«
- Complexity: β«
- Service: π£
Feel free to make a pull request on this repository to submit any idea!
- Add more layers!
- Svenskithesource | Showed us how to rename variables
- Please use this program only for educational purposes.
- It is not meant to be used in any malicious way, and I decline any responsibility for what you do with it.