PyObfuscator
1.0.0
このツールはPythonコードを難読化します。
このパッケージには次のことが必要です。
pip install PyObfuscatorPyObfuscator -h # help message
PyObfuscator code.py # easiest command
PyObfuscator -o " obfu.py " -l 6 -n " name1:obfu_name1 " " name2:obfu_name2 " -n " name3:obfu_name3 " -d -w " mypassword " -e " utf-8 " -s 8 -p -g 50 -f " logs.log " code.py from PyObfuscator import Obfuscator , Name
Obfuscator ( 'code.py' ). default_obfuscation () # write your obfuscate code in code_obfu.py
Obfuscator (
"code.py" ,
"obfu.py" ,
6 ,
{
"name1" : Name ( "name1" , "obfu_name1" , False , None ),
"name2" : Name ( "name2" , "obfu_name2" , False , None ),
"name3" : Name ( "name3" , "obfu_name3" , False , None ),
},
True ,
"mypassword" ,
"utf-8" ,
8 ,
). default_obfuscation ()python3 PyObfuscator.pyz -o " obfu.py " -l 6 -n " name1:obfu_name1 " " name2:obfu_name2 " -n " name3:obfu_name3 " -d -w " mypassword " -e " utf-8 " -s 8 -p -g 50 -f " logs.log " code.py
# OR
chmod u+x PyObfuscator.pyz # add execute rights
./PyObfuscator.pyz code.py # execute filepython3 -m PyObfuscator -o " obfu.py " -l 6 -n " name1:obfu_name1 " " name2:obfu_name2 " -n " name3:obfu_name3 " -d -w " mypassword " -e " utf-8 " -s 8 -p -g 50 -f " logs.log " code.py
python3 -m PyObfuscator.Obfuscator code.pypython3 -m doctest -v PyObfuscator.py
python3 -m unittest discover -s tests -p Test * .py -v
python3 -m coverage report環境には注意してください。コードを難読化するために使用されるPythonバージョンは、 builtinsメソッドが異なる可能性があるため、コードを実行するために使用する必要があります。 python3.11を使用してコードを難読化し、 python3.8を使用して難読化を実行する例:
Traceback (most recent call last):
File "examples/test_level2.py", line 1, in <module>
FDPNIhb1AZEN,seksF21wjxt5,xqWjyUJQi2WW,uek5BUS_9gp9,DUf2SsKgzwIR,UeB2l_bNCh3N,u_n3FMDZm8tq,feUH2QpjE1gi,hA33zmiTJ_JE,M3lzh7eBSD9y,NuY_a_VBO50V,lgOF8wmF3ql4,evF7Z_VpmU_w,rAD4vYkZfTqs,A3d0EhLPyeE1,NCzfbX1s_ggE,CriWabrsNFfO,XkjAnTEaNfuZ,BOqlKFTYkxbk,y2Dt_mc2THTA,Rp6gDOiPNDue,Gfg2DqYJjCzi,c8wWtRA76FdT,Cq2Su4t4y0h4,fbbaDgxs8tWM,R6tcHR8knbgb,qhyLkEbSFB4S,Bh3PAjtAs_ro,EhDsQ7NUGiS8,mFOzzhayukZF,RzLj02zhQOac,rTHnxBm852It,fQfaXvdfr51h,OwN8fPlvvHio,ou9uh1HSaZ_h,cQHwbRxoIABE,gO9zG8s9hQ85,jG7_ouSPtcJD,Rrz6wtYDgLyh,SepJ1GH_EvbO,CmEouI596SfP,cdjga9FvDMrR,xXKwxO3Af6ZC,IlSqIRFUc3aq,eiK3E54SxbFL,T_nEHJVrd8xa,dyeFfvNvRrJe,nQ3aG44kYDrE,d79KCDSODUdp,v8Ih6eJzsZct,mBDQlvTLhz5_,ifXIJVCat530,GCso0nOOcTvs,vjduw9_bYMAC,RpDzd9pIuzsp,HY0EPrDGTokL,giYP_dZTTiBY,blL25OfKbP_r,ocO5loEcx20N,AZp_GuYUG7qv,_DCe2Pf05TXF,qeY3dofBohyR,RylQla9TlcNg,g7jtp3n62w5F,FrJC6cWPgiE2,jnfMTOrLcfqd,cnMq4yvWy3GW,iPmZyGtZMhz7,OcgS6nKP_s5X,jaqISdaRa0ew,uO41PEYi7HMu,AZBUShNdIuX5,s2rqHmFMnwH1,XPJarUBiJk7D,e0SXoCio_DWE,w17jY9PSTodx,t2bSK98RFzM_,Qkp8QP0cUTaG,yT2XPV9tzlXx,tWeUmmgtidl3,mbjQPtxtxP7G,JxQvQeWBKRPi,zoQ5baLbTfil,nZoIdYSG5kFr,iVCjamAO6XIn,Tto8NZRTYO72,GHFFxAReo1VB,mq8K2uzcjw7t,pKf7VEb4p6dI,xpHqiVjNS4lX,CJru0K1uWKzM,m1efM_Co0gSv,UK3DqzeZ74rh,VZR0NBMxiWaq,vUz2dlBx9yvi,HP9lXICmFjl9,kOF5lxeAR_ag,RFPMvZDIZBM4,IwRGhMx782L6,R6I1WOjRiEY3,pXZGyDO5POgg,Mmh3GIH0pn9g,QIHGG3kvbTDT,SnqQLHu_oegW,v3JLevaT8dFE,dot2SSVbimus,h0F6lqwWBnTz,WZfDRY4jqD9i,GaCJ66MKZ7z5,O12mBRro2EjY,oOjJs6N8kdLR,Ih0Qk_Jf5txk,pbGaW1lwTTZQ,YvHk6bp91YLQ,nC1x2GGo_x3K,A440BaO7Yb_5,BBdxdBzon96y,b1hNtXENuzuh,MQDqjzcYElA7,p9VtLdxESgWm,nCtRO2HjFujc,sU7fWucgGmHg,X3_YNBBM7YGH,TQjjgn8BRnDS,Ikh4dRElUDTk,TrnUtcs8WS3k,M7bn5Vrg3OGY,IR8uzG04ar89,GCKHIADb6Wnv,PPTwFCzsLZZA,NhT3ESD2opiP,S7HSHlLGnHYd,GkkQa2mEOp7r,wW8UFW6MMSfV,nRnBtNqQ0haa,XzDeNchDhUFa,MQ8HU46biWT5,CQg_VvjuAcZW,dZ38dwV3zvkX,_9Q2HZjaOLuy,XEvrxUAzCWg9,aPu2QDS0jErQ,Ta60wzRxmZbF,qsBi0eW1wbw0,QypXydiMEfUM,e9AQ2_aOuA6q,yuTgsIloXhqk,qfkiotz2gFQy,u3ciCSnQCsWs,zyHM8gHWxyAO,iTs_Rdx40gau,sUKE7PHxzi8g,FmrWkwmzE4g7,KtRksPeReH51,k0sEHlvTMXPs,PgCfUfZlha8S,mDMspkh5l4LM,L5eUGEzsyNao,lYEOTtozCnvK,Uypmnv6RLVw4,t2bSK98RFzM_,ZfXs5cUjR9pI,yT2XPV9tzlXx,tWeUmmgtidl3,mbjQPtxtxP7G,JxQvQeWBKRPi=ArithmeticError,AssertionError,AttributeError,BaseException,BaseExceptionGroup,BlockingIOError,BrokenPipeError,BufferError,BytesWarning,ChildProcessError,ConnectionAbortedError,ConnectionError,ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,Ellipsis,EncodingWarning,EnvironmentError,Exception,ExceptionGroup,False,FileExistsError,FileNotFoundError,FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,ImportWarning,IndentationError,IndexError,InterruptedError,IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,ModuleNotFoundError,NameError,None,NotADirectoryError,NotImplemented,NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,PermissionError,ProcessLookupError,RecursionError,ReferenceError,ResourceWarning,RuntimeError,RuntimeWarning,StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,SystemExit,TabError,TimeoutError,True,TypeError,UnboundLocalError,UnicodeDecodeError,UnicodeEncodeError,UnicodeError,UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,ZeroDivisionError,__build_class__,__debug__,__doc__,__import__,__loader__,__name__,__package__,__spec__,abs,aiter,all,anext,any,ascii,bin,bool,breakpoint,bytearray,bytes,callable,chr,classmethod,compile,complex,copyright,credits,delattr,dict,dir,divmod,enumerate,eval,exec,exit,filter,float,format,frozenset,getattr,globals,hasattr,hash,help,hex,id,input,int,isinstance,issubclass,iter,len,license,list,locals,map,max,memoryview,min,next,object,oct,open,ord,pow,print,property,quit,range,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,sum,super,tuple,type,vars,zip,__annotations__,__builtins__,__cached__,__doc__,__file__,__loader__,__name__,__package__,__spec__
NameError: name 'BaseExceptionGroup' is not defined
Builtin BaseExceptionGroup python3.8には存在しませんが、 python3.11には存在します。
Pyinstallerまたはアプリをフリーズする他の方法には注意してください。ソムズ変数はデフォルトのPythonインタープリターに存在しますが、凍結したアプリには存在しません。デフォルト値で変数を設定してエラーを解く(pyinstallerの場合):
from sys import exit
copyright = """Copyright (c) 2001-2023 Python Software Foundation.
All Rights Reserved.
Copyright (c) 2000 BeOpen.com.
All Rights Reserved.
Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.
Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
All Rights Reserved."""
credits = """ Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
for supporting Python development. See www.python.org for more information."""
help = "Type help() for interactive help, or help(object) for help about object."
quit = "Use quit() or Ctrl-Z plus Return to exit"
license = "Type license() to see the full license text"
__cached__ = ""使用される各バライブルの静的なタイプを定義することはおそらく非常に困難です。次のコードにバグが発生します。
from threading import Thread
class NotThread :
def start ():
print ( "start" )
Thread ( target = start ). start ()前のコードでは、すべてのstart属性名は難読化されますが、 threading.Threadクラスは難読AttributeErrorさAttributeError: 'Thread' object has no attribute 'i3xEgmcuREyD'ないため、メソッドとして難読化されたstart名がありません。
それを修正するには、非肥大化されていない名前と名前が異なるはずです。
GPL、バージョン3に基づいてライセンスされています。