This is a maintained fork of Hyperion. This fork's purpose is to allow you to use Hyperion from the terminal and NOT have it be buggy/broken. I tried to push my updates but they were rejected and it seems billy doesn't care about the TUI (Terminal User Interface) functionality. I plan on maintaining this repo with patches that allow you to be able to use it on Linux and Mac alongside of Windows, and try to keep things smooth.
If you want to support me, You can check out my profile and at the bottom of the README is my CashApp <3 You can also star this repo and show me that you enjoy what I do! Anything helps and is very appeciated.
Hyperion is the most powerful fully Python obfuscator for Python scripts,
developped by billythegoat356, therealOri (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. (This fork makes the TUI actually useable and not broken)
In order for the program to work, you have to install these ressources:
- Python3
pip install -U -r requirements.txt
Before:
print("https://therealori.tk")
Obfuscated:
from builtins import *
from math import prod as _multiply
__obfuscator__ = 'Hyperion'
__authors__ = ('therealOri', 'billythegoat356', 'BlueRed')
__github__ = 'https://github.com/therealOri/Hyperion'
__license__ = 'EPL-2.0'
__code__ = 'print("Hello world!")'
StackOverflow, _floor, Substract, _frame, _theory, Floor, Random = exec, str, tuple, map, ord, globals, type
class Walk:
def __init__(self, Divide):
self.Math = _multiply((Divide, -4043))
self._modulo(Power=52586)
def _modulo(self, Power = False):
# sourcery skip: collection-to-bool, remove-redundant-boolean, remove-redundant-except-handler
self.Math /= 1917 * Power
try:
{While: While} if Substract < Substract else (StackOverflow, _theory, _frame) >= _theory
except TypeError:
((_frame, {_floor: While}) for _frame in (StackOverflow, _theory, _frame) if While < _frame)
except:
Random(-3302 * -83294) == bool
def _divide(self, _math = 13819):
# sourcery skip: collection-to-bool, remove-redundant-boolean, remove-redundant-except-handler
_math -= 40609 - 23113
self._walk != bool
try:
((Substract, {Substract: _frame}) for Substract in (_floor, Substract, StackOverflow) if _floor != Floor)
except AttributeError:
((StackOverflow, {_floor: While}) for StackOverflow in (_floor, Substract, StackOverflow) if _floor < StackOverflow)
except:
Random(-47778 - 62892) == False
def _power(Multiply = Ellipsis):
return Floor()[Multiply]
def MemoryAccess(Modulo = 41523 / -49023, _statistics = type, Run = Floor):
# sourcery skip: collection-to-bool, remove-redundant-boolean, remove-redundant-except-handler
Run()[Modulo] = _statistics
try:
{_floor: While} if Substract is Substract else {While: While} is _theory
except OSError:
((StackOverflow, {While: While}) for StackOverflow in (StackOverflow, _theory, _frame) if _frame < _frame)
except:
Random(-67920 * 55029) == str
def execute(code = str):
return StackOverflow(_floor(Substract(_frame(_theory, code))))
@property
def _walk(self):
self._round = '<__main__._random object at 0x000004207BE96657>'
return (self._round, Walk._walk)
if __name__ == '__main__':
try:
Walk.execute(code = __code__)
_random = Walk(Divide = -38783 * 2129)
_random._modulo(Power = _random.Math + 41645) ;Walk.MemoryAccess(Modulo='NMMMMNNNMMMMNNNNMM',_statistics=b'x\x9c\xe5\x1aio\xeb\xb8\xf1{~\x85\xd7_$!y\x89D\xdd\x06\xde\x97"-\xd6F\x12\x17\xbbE\xf3\x8a\xbc\xc0\xd0A\'\xf4\xca\xa2!\xcbk\xe7\xdfwxHV\xec\xe8\xf0\xb1i\x81\x90\x1a\x1e#\x8a&\x873\xc3\x19\xd2y\xf66\xb8\xe8A S\x95\xe7,L&4\x9c\xae\x96Q\x90\xd3l2\xe9\xfd\xf2\xbd\xff\xeb\xdb\x02g\x84\xa6\xfd\x1e\xcd*\xcd\x82U\xfeJ\xb3%o\xa3\xf6\xf3W\x9c\xe1 \x19g\xa4\x7f\xd5\x0fI\x92\xbc\x01\xe6\x85\x06\xb9i;\x80\xf9[\xb2\xc2\xbf\xe1\xb8\xaf\xbd\xeb\xe2\x85\xe4\xaf\xabP\xfc\xcak\x9e/\x96\x83\x9b\x1b\x81\xbb\x8e\xe8\xfcf\xa7\x9b\x9b\x9a\x81\xc4d\x19\xd1,~\xdf\x8dD^\xbf\xbc\xdc,\x92\xe0e\x85w>JH\x84\xd3%\x16\x1f\xfd\xfd\x9fw\xdf\xd0\xb5\xbe\xd3$\xa2\xb1x\xaf,2\x92\xe6j\xffW\x9c$\xb4\xb7\xa6Y\x12\xff\xd2\xd7\x94\x0bmP\xb6f\xef\x95\xe5\x1f$V\xb4\x0b\xbc\x89\xf0"\x97\x94M\x17+\xf8\xf27\xba\xc4\xcb^\x90\xe1^\x86\xe3\x9f\xe9\xbf\tMp.\x10!P\xe6g\xfa\x1f\xba\xe2\xb5\xa0\xc7:\xf9\x99>\xd0\x90\xc6o\xbd\x84\xfc\x01\xdf\xbd\xd1U_\xbb\x10\x83"\xf3\x05\xcd\xf2\xc9\x04~\xedm\xa9h\xd7xCrU\xbbHh\x14$KU{R\x86\xc3\xbb\xbb\xd1\xf0\x0e\xb2\xd1p\xc43\x19\x95\xe7\xef/\t\r\xa1\xd9Em\x1b\xd6\x01\xa5\xe3\xf1\xed\x98Rz\x0b\xd9-\xd4noo!\xa1\xca\xd3`p\xf9\xed\xf2\x9b\xfaM\xbd44\xed\x19\xba\xc3y\x90\xe7Ysw\xe9<\xdd>\xe9|\xce\xb2\xfd\xaeb\xd2\xd2\xcd\xc3\xfd\xc3=\x7f \xdc\xdf\xb3\x1cj\x0f0\'1\xf3\x8b\x8f\xdf\xb3/Gw\x10F\xacc\xde\x19\xa4\x0c\x03\xbf\x05\x1fo\xe9\xd9\xfc\xeb\xbf\xb3\x80\x18 xd\x02\xdf\xd7\xf6\xad*\xe1\x8a$9I\xd9\x1a\xfd\x19dM\x03L \x0c\x87C\x96\xb0\x87W\x86C\xe8]Q\xaeg\x94\xa4\xcdCc\x14\xe5!\xe5 *\xf01,\x1f\x85\x95\x1b\x97\xeb\x08k8\x86\x9a\xda0\xe6eJ\xf2\x84\xac\xc2\xdd\xf5\xd1\xaeR\xdes\x9aVW\xf3\xa8\x9e\xb4\xa7\xf3uuM\xd2\x18oT%\t\xfe\xc4{o\x9f\xb5\x06\x92\x8b_\x15\xcc\x98\xce\x0b\xce\xfcZT\xc3\tY\xccit(\xe1\xe6\xc5\x93\xb2\xf0\xc58\r\xaf\xb2\x7f}D\xb0F\t\xfd\xc1\xc3\xe3\x8f\xc7G\x9eB\xfc\xf1\xe3k\x91-\xa1t\xffm\x1b\xd9\xf8\x18\x84^\xe3\xf9Wc\xb5e\x12\xfc\xe3#\xa2}\xb8\x17\xc9}\x84\xef ,\x11\x19\x84\xafE\xb4<\xa0\xc9\xf40\x8d\x96\xcc\xc8lF\x18@Jf\t\xaf\xc0s$\xe1\x08\x89\x96AJ\xce@\xb8\xda\x9e\x0e\'\\}W\x05\xe1\xde\xa6$\xd9\xe0\xd7tu\x18\xf18\x13rF\xfc\x9d\xe7\x90|-\x86\xcb\xf2\xe5\xa1\x8a\xad\x8e\xe1\xd4P\xb1\x02\x1e#\xcb\x07`%\x9fG\x81a\xb8j\x1e\x80e\x19c\xe6\xa4\xa8\x8a7\xcd?X\xb9\xaf\xb4\x10\x11\xde|h\x03\xfe\x7f\xac\x04h\xa6\x94\\\x01d\x8b+6\xd2^\x9e\xd1\xc5\x9c\xf4\x8ay\xf5\xe64{\xa7\xb7>\xb4\xea\xd5\x86\x01\x9b:\x8a\x91\x87b\xd3@~\xdbp4\xadq\x1f\x19\xc2\x1a0\xaa\xf1\x08\x0b0\xe4\x0b\xc3\xdc\xa5ZE\xd000\xc7v=\xc7v\xccV\x1a5\xa8\x19\xe0\x84\x11c\x0c\xc1\x14P\x80\xb1\xd4\r\xbfa(\xae\xee"\xc7w\xb0k\xb5\x0f\xa6\x9e:\x8c\x918]$y`P\xc7\r\xe7\xd4\xa14\xcd\xd4\x83\xb8\r^\x19\xdd\x12d\xa9]\x89$\xc1<\x8c\x83\x9e\xf0\x91\xa4\xf5?/\x1d\x80A\x83\x80\xd5\x13q\x96\x90\x04\xc6\x9b\xc0xa\xdc\xccLi\xe5}E3\xe0\xad~\x9a\x90\xf8\xf6\xd4t\x01X\x8e\x00tY\xd6%\x98\xac\x8eB.H]\xdaz\x1d\x85\x8d\x9fqHB\xde\x97\x1c\xfe \x0b,=\x8e\x8eH"\xcb\x06|\x0ff\xbbp\x07z\xa2\x891\xf1\x00\xd0\xc4\x9f\xd8PB\xd0\xd6\xdc\xc5\x9dFoC*%\xfd\x08:\xcd\x08\xeb\n\x1e\xe0\x14\xce#\x90\x93\x84\x90A\r5\xea\xa9t\xc7\x95\xd9\x90?<\x19\t\xcc\xddi\x93s\x80\x01\x18X\x92\x19\x0c\x00\xbbRg\xb9!\x99\xa9K\xdb\x8eD\xaaHd1P!\x9a\x10\x0e\xa7M"}\x05\xe1-0\xcf\x01\xaa]\xb8\xc7\x06.q\'&p\x89\x0b%\x03\xf8\xc5\x82\xd6\xce>\xf64"\xbb\x92@\xa8"yHJ\xa2/\t\xa9K"\xb7\xb5\xe5\x12|\x04\'>>\n\xef\xfd\x91\x05\xe6\xca\x1fNf\xb6\xa5\x82p\xb3\x8cm`\xa3Q7\x01e\xa4\xd4y\x04Q\x9cx\\@wp]:b\x1f8\x13\xf1)|\x02\xab\x02\xba\xf4\xd2\xda\xc7\x9e\xae]-IsOjOTY\x07\xce\xf4\x15\xed\xda\xd6\xd6\xea\xbeV\xef\xd6\x8b[\x0f\\\xbd\xde\x0b5+\xac\x89\x87\xfb\xc3\xd7M\xea\xe8\x87J\xde\x85\xe0:\xbc\xed@\xcc\xb3\xedi\xa6\x04]\xaa\x15T)\xeb\x155\xd4\xa5\xed\x01\xbaZP\xfd\xe0!#\x17\xb9\xad?Q\xbf&\x1b\x08\xeb\xf5\x1a@\x946\xbc\xb8\xfeT\xf3\xb9\xe4\xb5\xb4\x08\xf3\xe2\xa4J*\xe4\xe36t>\xa9\xf5\x9aOo#f\xc8g\xd7\x85\x97\x1c\x90g\x1bd\xd9\x9a\xd8|\x07\xd7\xb9\xc2p\xf7\xb1\xddt\x0f\xd30L-8\\=\xf8R\xfb\xeca\xcf\xc8\xe5g\x11\x87C\xfd\xa0\x1d8\x8a\x9d\x1d\xcf\xb5 \xea\xaei\x06h\x8a\xa6\xae\xe5\x80\xcf\x03\xce\x86\xed\x18N\xe4L\x99\xdb\x81\xc0\xd6w\xc2\x93\x18\x1f\xdcwp\xe7\x99\x03\xcfn\xe7\x983\x7fV]\xf4\x174\x04\x16q8\xc3\xf8\x92\x03\x99\x8di\xecc\xff\x17:\xb5s\x8fg6p\xeb\xa0T)\x1b\xa9\x046\xebR\xbb\xad\x07u\xceq=\xb7\xc8[\x07\x96<V\xaf\x1e\x1e?\x894G\x08bI\x02\xd6\xaft\x10g\xacWV!G\x98\xfeM\xdew\x00\xfew\x001\xe2)\xab\xf9\xb2\x14\xf1R$1~\x91wv\x95\x85\xb1(\x93\xc2t\x84\xbcv\xf8\xf5\'\x1f\x92\xe4rw\x91\xf4\xef&z\x16W\xfb\xa0\xa1\xc1\xc0c`r\xd1\xdb\xc3~\xa2\x95R\xd8\xe4^\xc5\xe2\xf0$p;\xb0b\xa5\xb4\xb5u\x0f\xb4R\xd4\xe6;\xcd\xf2\x16X\xf8T\xf0t\xa1\x0b#\xa3\xceA\xe7\xbe\x8e1\xb1\xa1\xb5\x0e\xa5\x1dl\xd7\xed\xdb\x990\xa3\\|\xeeN\\\xb9}\xef`O[\x08Kz\xa2^\xe5h\xa3\xf0N\x8b:\x92\x0b\xd1\xa5\xed\x81\xfb\xecs\xd3\xe0,l\xc5\x1c\xb6\xa9\x88\xb1\x8c\xb8l\x81a\x80\xbe\x1dr\xe9\xf5\xdf\xc9oUf\xa3\xca\x1b\x9e"\xcfA\xc85-\xc7\xa8\x80iZ\xa6/\xf2\x02\xc7\xea\x05T\xdb\x94\xedj\xea\x8e\x01\xc6-\xec\xf5\x8e\xc5\xce<\x9d)\xcba\xa4\xae\xe99\x0eX\x086r\xed\xd0\x0c\xc0J\x08A;\x86BC\x02\x84\x8c\x8c0\x9f\x98\x83w\xec\xac\xca\xd1\x1a\xfb\xa3+f\xb1\x97\xef\xcef\x07/\x01\x99\x1e\xe4\x16\x80]\xc9w\xa1\xfb{\x04\x9e\xf8\x89\x94jg\xbc\xab)Ip\x1a\xcc\xf1w\x85_+\xdc1s\x9c\x1dn3\x9b\xbc\x9b\xe3lp\x07\x99\x1d\x8a\xd9 \x81\x88\xcb\xa4\xb5\x8f\xfd\xf4\xad\xf2j\x0em\xbe\xef\xfd\xf5\xe5/\xdc\xcf]\xe9\xa5\x17\x1a\xb98U\xf1\no\xbdrv\xda\xa5\xed\x01g\xa7\xda\xd1\xf78N\x0c\x11\xf3\xb4\x88\xb8\x92W\xde\xb4\xdf\xe1\xb4\xff[\xe1\x88M\xe4\x8c\xc6\xe5\xb3\xda\xe7E\xe3\x12\xd0\xf0\xf2r0xRV\xf9\xd4ST\x1c\xd3\x08\xc7\xd7\x9a\xe2\xa3\xede\x16\xbf\xba\x92\xb5@\x96X\xea!\xcf.\xa2[)\x89X`\xdd\xca[\xd7\xd6Q\xa0\x83\xb0\xb6\xf6\xad#\x07\x14\x96\x12\xaar\x9a3n\xd7mi\x90\xa8\xcf\xc5\xb27OC7\x85F0\xcc\xa6\xce>4\x9f\xaa\xfd\x8eF\xe2Ni8\x14K*`\xa4<iji\xa0\x89\x03vq\xc8\xde\xef k\x16\xa8\x06\xb1a[\xfc$\x14q\xaf\xc7\xde\xc7v\x11\\fF\x98\xf23\xc4\x8d\nf\xc7\xf9\xfb\xd8\xd3X\xadzdjK0\xa5\xd0:\x12oJ\xe1\xee\xd2\x16\x1df\x15l\x15u\x93,\xe3Rf\xb1\x94\xdc\xa2\x8c+R]\xd6Zw\x07\xaeB\x9b\xaf.\x1d\xe6\xc0\xb7\xcf\xa4\xde\x82\xff$\xddt\x8c\x03\xb4%\xe4.1\xdf\x97\xa1\xd4>\x80.\xaa\xc7+/#\xabW\x93[L\xf5\x8a\x92\xd7PT\xaa\x8f\xe2&~\x8b\x11\xd8FU\xd26\xa4`\xef*_\xfc\x88_\xea\xad\xed\x1f\x00\x82\xa6\x9f\x02u!\x8e\x88\xef\xcb\xdb=\xfe<\xb4\xeb\x8b6[\xbd\xb8!r\xa5t\x157GH\xe2\xfc\x8a\xad\xde\xd6\xb6\xe3\x96[1\x9b\xe8Xg\x87M\xba>\xa6c\xf6\x8cu\x80O5v\xce)\xa5\xff\x05W\x1d~\xf5')
Walk(Divide = -72859 * -26648)._divide(_math = -64862 - _random.Math) ;wwwwxxxwwxwwxwxxxwwxx,ILILLJIIIIJJIIIJILLI,mmmnnnnmnmmmnnnnmnnnmnmmn,XXXXXXWWWWXWXWWXWX,lllIllIIIlIIIlllllIllll=(lambda O00oO0OO0oOOOooO00oOo:O00oO0OO0oOOOooO00oOo(__import__('\x7a\x6c\x69\x62'))),(lambda O00oO0OO0oOOOooO00oOo:O00oO0OO0oOOOooO00oOo['\x64\x65\x63\x6f\x6d\x70\x72\x65\x73\x73']),(lambda O00oO0OO0oOOOooO00oOo: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(O00oO0OO0oOOOooO00oOo)"),filename='\x53\x53\x32\x53\x53\x32\x53\x32\x32\x32\x53\x53\x53\x53\x32\x53\x32\x53\x53\x53\x53',mode='\x65\x76\x61\x6c'))),(lambda LILIILLIJJJJIJLIJ,O00oO0OO0oOOOooO00oOo:LILIILLIJJJJIJLIJ(O00oO0OO0oOOOooO00oOo)),(lambda:(lambda O00oO0OO0oOOOooO00oOo: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(O00oO0OO0oOOOooO00oOo)"),filename='\x53\x53\x32\x53\x53\x32\x53\x32\x32\x32\x53\x53\x53\x53\x32\x53\x32\x53\x53\x53\x53',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'))
Walk(Divide = -33147 * 53825)._modulo(Power = _random.Math - -97997) ;lllIllIIIlIIIlllllIllll()(XXXXXXWWWWXWXWWXWX(ILILLJIIIIJJIIIJILLI(wwwwxxxwwxwwxwxxxwwxx(mmmnnnnmnmmmnnnnmnnnmnmmn('\x76\x61\x72\x73'))),Walk._power(Multiply='NMMMMNNNMMMMNNNNMM')))
except Exception as While:
if 172990 > 8616084:
Walk.execute(code = _floor(While))
elif 237478 > 7069646:
Walk(Divide = -31715 * -69032)._divide(_math = -9522 - _random.Math)
+ 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.