Obfuscating Python script with multiple imports
I have a main script that makes many imports from same dir and subdirs. Obfuscating it works fine but I want to obfuscate the whole package. So that every individual source file is obfuscated and the imports still work (with the new obfuscated files). Is this use case possible yet?
So I have a dir src/ with src/main.py and many other scripts that are imported. And I would like to have as output: src_obfu/main.py including all other scripts (incl. subdirs) to be obfuscated.
I could write a bash script to copy each individual file into a new dir but I am not sure if the imports of the obfuscated files would still work... Hope you understand my problem
Hi @SeanPedersen, thanks for opening this issue.
Multiples files is not supported... The problem is to solve the name of imports. You should use a little workaround:
- Identify all imports (functions, methods, classes and variables)
- Define the obfuscated name in the command line or the config file
- Obfuscate all files with the same configuration
I think i will write a little wrapper to obfuscate multiples files in the futur with the same name obfuscation but there is a risk to use it: obfuscate partially the code (standard library are probably used but not obfuscated, external libraries installed with pip can be used but is not obfuscated, ... if a Python C module use a non obfuscated name and you obfuscate the library that define the name used, the obfuscation will generate a crash...).
I am not sure, I can follow your workaround. Here an example to clarify:
- file src/a.py
import b
import numpy as np
print(b.bla())
- file src/b.py
from dir.c import coco
print(coco())
- file src/dir/c.py
def coco():
print("hi")
How do I obfuscate all files so that the imports work with the obfuscation?
I have built an example:
- Write file
test.py:
test3 = lambda: print("test3")
class Test:
def test2():
print("test2")
def test1():
print("test1")
- Write file
import_test.py:
from test import test1, Test
import test
test1()
Test.test2()
test.test3()
- Obfuscation with name obfuscation:
(test) C:\test> python import_test.py
test1
test2
test3
(test) C:\test> PyObfuscator -l 1 -n "test:obfu" "Test:Obfu" "test1:obfu1" "test2:obfu2" "test3:obfu3" -o obfu.py test.py
(test) C:\test> PyObfuscator -l 1 -n "test:obfu" "Test:Obfu" "test1:obfu1" "test2:obfu2" "test3:obfu3" -o import_obfu.py import_test.py
(test) C:\test> python import_obfu.py
test1
test2
test3
(test) C:\test> type obfu.py
NAR7qmhXzZOB,xo3P8e1WfhhT,crBKwHLJNVzQ,A_nnmAyu4pad,GpBWV3dn7P0v,ERAmgeIg5Lqv,vuQ8niceVjP2,tURVy9hcBwHc,muzY_fu2NIoY,REJ2DJHiLdff,Q67JAQDH7AOl,rk9hvwQqnDOz,Q5ugl_wMrGZF,uml4ZYLF1ECx,trF_ObDF36Gw,Xnc9Z73wZoOV,YPJ6GfQWIUj1,yqaGihJnEaYH,R5Ty3GXPLSp1,IsL6nGXJx0CM,CtF0i8rMNGtH,GOC8VfXm_eJi,NyHjd2MOFRdH,RJOCVZbzfvr_,pE6plxounYWt,jiRQURhaLGf8,fzi8FfFI7vFe,D3EBfUVz1CfQ,K0ceeNYzKsCi,TSNxqCPJ7KEe,MC1orFVGTOal,tR0EvFqUrkvl,y61EvV5bUnvI,BCq5aFslhybs,jKN0hOiUODTQ,lObwFxnyLGca,XEzCwVzLjEST,OdZ_8MNJbi7b,UfyVxeZDqHtj,Hr572r0rrLZP,TX_OM_cjonw6,rG3v5RZTCDlM,ac_gBfNDLmTw,NoGjDO8H_sGI,mGIH5XpsGNTO,mQLjU9YhTiru,dd4wDJF9w6Rv,EoD5yfWhDb5y,EUMgZRyQTQaC,HBH7HAUr0Mae,TgewZB0kiUSu,l4VI33Bxy3n2,Qz5UJjBzwCIR,LS2b_MqdPV4k,IV7puk6fXvfg,bK6XHDBx_I1y,WOe1j3An2N1R,uAJw2zw_b_7m,E7MYstaTZhHb,EQlFsLHg9ggw,_5OxkMVBNICX,Buqk19DtwRhU,BabzH2KbNzXK,DIARi6gFJ6rW,oiYaPRqMW_41,ZF1y4hOK2Bdf,GSYBzXT2ILDp,fltOVfhhaKjE,VGe1GnHDOPTt,MgIboShs06pG,EO27ebdbAAUj,d15V5MV4sTJR,AQQlSpw3vaW6,_Ht_HPwMhtoU,Irfu3hRmrFVm,ybIrTt8QuiKE,FR8LbFKUIUtp,prEvUzErxZfL,Ovhi3NzsQ9of,RhG1prYt0Mfz,QKw_2zjo6bEA,XFeqaL5RKZLs,s4RQbWtotFQM,C456abiLUOyU,NhE1v4G_RvtU,z_Oijq3zecBi,bRXf5_Jd9u0s,AhPLG7vydIL3,alqYPocgGpzC,b_snvXV_xLEO,mMAzEhofvXAh,wbwuyHRlkIRk,tt9736RTOzi7,x4htJtcAy9q0,XWtEnIGLuEsk,v4HxnuJNS3zU,yokAwrBRi_PW,emZrKH8XzjqJ,X83Y0sriVuxa,i5vqF_PaUhJa,nQM__L8iVaD4,PtozOXAk6ZUd,BKrRA0NzjA4t,ZrEI1Pckr8Nq,ZKSxP18ZsXIO,K60FbnOIgS7a,ZuWTQG3IMIP8,GXiK5iRJjE2X,W6ftUz6Myk7y,XWrCDmw_kWNB,PpQtwWkoHOCA,JnNfXiVJt9EF,TCEp_SVBlK4T,dB2NVRs57AKn,x6rMgLz6fOEQ,jMFHfe_70qJW,YVYPyYon5zk4,W0TT0D_Ju3E1,Ik3djBnuuIeq,zp3pIn6NnTLD,RsZ67bdrEQlG,cjxtuWP1igP3,VPbHjwzTCCS6,e7I1pICOYi6L,NzPVpaUcARtw,bwkDBOvZjhap,mUIjFHyLPZYR,F0DAkxaeUgrq,v3mgeeer1qIl,nBvW80wVssD4,ONVNNCrQKEXh,bvkjC5BhwzJy,PTU7f_iB4yF4,ZwSmkUb2u_9d,juIB2kK0PIwM,f9sMWgN4Q1Dl,DuYpl7BDX25s,I7LVQ3YZRUbn,DheEHyQ8IRY0,DEtnCHn_MrgK,KAExNDkyjZcb,bxvLb1sUny8Y,wJ0VXXauRmqD,g3L2DxPa_z3t,vyiDAuoOCcHQ,WVnhBhbUmVBl,M2i9pns6wJdl,u34k7ZVnn734,fsAoMg5XEoTS,i9PyFHsaw74r,RD5bA7Xsf1EJ,OBnWLUsI8Ya_,wZgTUy5CguuS,yzBVL7x6XdIY,FkLc3_MgWz40,oramvw8nlCmp,th_Lg_kWMoMD,KNLxySkAetYS,aAxrjQrQAmC_,DsCdYV79Df8v,prEvUzErxZfL,g2dXc6ZblYRu,RhG1prYt0Mfz,QKw_2zjo6bEA,XFeqaL5RKZLs,s4RQbWtotFQM=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,WindowsError,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,__builtins__,__cached__,__doc__,__file__,__loader__,__name__,__package__,__spec__
def A74xMyqkg0FO(kU18MXQuFkrI, ajSBy4bkhUGH, *wRhqdhie5PMG, **S5f9TM6Mp7TW):
try:
return Ovhi3NzsQ9of(kU18MXQuFkrI + '.' + ajSBy4bkhUGH, *wRhqdhie5PMG, **S5f9TM6Mp7TW)
except K0ceeNYzKsCi:
return Ovhi3NzsQ9of(kU18MXQuFkrI, *wRhqdhie5PMG, **S5f9TM6Mp7TW)
obfu3 = lambda: DEtnCHn_MrgK('test3')
class Obfu:
def obfu2():
DEtnCHn_MrgK('test2')
def obfu1():
DEtnCHn_MrgK('test1')
(test) C:\test> type import_obfu.py
lR6DdN9CTtcc,iuB0Z1RRXB7x,JEKho0p5L6Jo,OiOAFm27V7T6,PgGu0TQNADn4,sHiqQSvXjLbV,nw8A9ZHhGB1g,L0VoJBwG54su,ATulm0yPq9qo,O1YghsJOVriQ,NZWdtgdhAOOc,bx31EIxMyWdA,L7VA2mhWrLSk,Fs2lHWaANgxz,yRka0L45nr5P,FxFLjvpmuyFV,wQweqi2Zv8t5,WHffh9m1csUJ,_yi9PijfWvmo,zM1EgYDkHorz,xqzBHsGKg4j1,pjWFjX8jCMKU,ldKtBr0ALQDD,h6e_dqNU5_cT,PhcqSGl0tvKI,rOUZqVg9UPYQ,xSeAPk0fIRKK,XdUtaWn3sE48,vmDS9yUrOxPM,OH7u6m4AurrG,JxZlikO10pdn,kIoqXwULCKEj,_aDgDxFu0fxH,jFcbv7JQPfAI,XW4XdML1GSOq,kRmcOsk0oPWl,NZL6TZKwp6zc,VcNY0EMO3LoI,lPjo8rENPeR4,qrn32AD4pkNG,jDsbbcrFO0O5,PpUtwIBEkt7t,UeyH4bp4Twol,OyNXmo40N69p,x9FoShVXLu_Q,HQYGt1_fEwpr,LFFr_Xp0qtbd,QBTjITS3jl1T,NG1_LYGiv7IO,shyyIkMn6IvA,fDzw07fjBdCM,IP0PeZU9HD7j,m1nd4OsYgxpc,EsFcFYTYmnbi,Zi12bZxOthJN,tgAlgKQxlhr8,f0rVwBAaExrV,jwnVPgF3tZET,rUKMWvmITzSd,rUJ_QQKzXHwQ,_SLKR16f3iXA,qsHXEbFF6wd9,Md8_NGOy1GiZ,_f1OYqE5fdbx,X9gkf4AkgB_u,kfCbJgteOvls,uGNYyuOLvoW_,rBAKn3FGNU5i,nqtEcFx1AoMm,OEoxalSk30pJ,Mf6nvPn0JyXc,tDrgGcoddXbi,WBU_78cj73Ar,s7nnoLW4kLlS,KgReITStUbQl,CQQmWYXoP4qn,cEOEuh9GBdW2,pPFvy4xqMJ_6,GtECoj_JHvTB,oWOAgpIVvxG0,qUXA0IcFAu2U,G_rrOyx9sju_,gILxdwuX6SV_,DwfP2jRhk66t,DOf42aAYsl7F,imZcyMWhx1UU,EkQHiO_ducA6,kadne4cgp2jn,I1qWPWjlxvMW,lRWuVOxuHwZM,msKeqYkuhdor,SET3OBGYVegi,_q_aecgWGcWU,_EOu1iIzcXY5,GNY6jPTZAMnu,l1dFbOn0f4R7,lILTGKJuBJIw,t9ZPCi518jk6,Hf2MMZIfJ3t8,YfFf5o6n2AZ0,wceVIKK_y3Lo,XuDLlj69hhXW,oTJvqT2o7864,xHbs4hb3F9_x,wKUpvpKunei8,DZlXD9av3aJV,ug8v4dTNwGzu,VG29h0rhSqCw,go4qUPQEC_uw,WXymFasPyTgu,XiUJD8bZRXWM,GrlCzONKtnPi,vW7VIsaz_jYq,FzF2DCKyaYDR,UpmGWX3zScnH,UkpGgu3aKCHM,_UFv2Y2p4YEj,XRN_ulindT0V,IRFFQ2oEmIsT,x8_onzvRhXXI,Jo0znn5zND5_,mEutJ9_0AdtB,BmHjbiOlyCAm,Rcatp25ulgVm,enhLWWL9RYbF,wYz337xYwDLC,n_StwChly_Av,YwF7J3WlYmls,s0AE_1EQe5jb,zGZjq3gcaU9a,_ujTYz31aRC2,ZV9RcorZOCWJ,N9DhuhexI39U,xtGYU9_hlBl5,tjNXCyWXsa7U,kzDcrOS_RLPt,AdYIikHH4xSX,RZ2LxBGPch7X,noR6AZe5UHa4,Q7OTu2Psfiu0,w3cp3MiONm2P,uuwB6WPIsw3r,hW8hQaTzcqDG,sNdgvER8QCqV,bLaOY9SyqNUo,Zbl0R5_H1VUO,J6yhcW9asOFa,N2xmtNhGkyjo,sM5w55GqYGxm,uPnR8Z6A8RG6,FOMyCzIYcA8L,WXdtDBQqxNy0,_EMXXXRB662b,lyaJJU7m6EaO,Cw9IuEq65_KW,HG3a2um7ACu9,mtOAVg_EZA8V,smPbqLr_9rE3,_ccL9pI9jh3X,rlcYY8C3C3Xs,pPFvy4xqMJ_6,UZWXfEj2p1Ns,oWOAgpIVvxG0,qUXA0IcFAu2U,G_rrOyx9sju_,gILxdwuX6SV_=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,WindowsError,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,__builtins__,__cached__,__doc__,__file__,__loader__,__name__,__package__,__spec__
def K0AThDDsRk7D(SlSonFgR5lK9, Tgb8Gg0YbH6H, *zVVvwNuSgwGI, **WpipGI4GnRI1):
try:
return GtECoj_JHvTB(SlSonFgR5lK9 + '.' + Tgb8Gg0YbH6H, *zVVvwNuSgwGI, **WpipGI4GnRI1)
except vmDS9yUrOxPM:
return GtECoj_JHvTB(SlSonFgR5lK9, *zVVvwNuSgwGI, **WpipGI4GnRI1)
obfu1, Obfu = (FzF2DCKyaYDR(K0AThDDsRk7D('test', 'test1', globals=None, locals=None, level=0), 'test1'), FzF2DCKyaYDR(K0AThDDsRk7D('test', 'Test', globals=None, locals=None, level=0), 'Test'))
obfu, = (GtECoj_JHvTB('test'),)
obfu1()
FzF2DCKyaYDR(Obfu, 'test2')()
FzF2DCKyaYDR(obfu, 'test3')()
(test) C:\test>
- So, all names should be obfuscated with a static or predefine obfuscation name (modules names, variables names, classes names, functions names, ...).
- You can use the command line to obfuscate the files with static or predefine obfuscation name
Another way to do an equivalent obfuscation:
- Write the file
obfuscate.py:
from PyObfuscator import Obfuscator, Name
names = {
"test": Name("test", "obfu", False, None),
"Test": Name("Test", "Obfu", False, None),
"test1": Name("test1", "obfu1", False, None),
"test2": Name("test2", "test2", True, "Test"),
"test3": Name("test3", "test3", True, "test"),
}
Obfuscator(
"test.py",
"obfu.py",
1,
names,
).default_obfuscation()
Obfuscator(
"import_test.py",
"import_obfu.py",
1,
names,
).default_obfuscation()
- Run the script, to obfuscate files, using python
(test) C:\test> python obfuscate.py
(test) C:\test> python import_obfu.py
test1
test2
test3
(test) C:\test> type obfu.py
MX5yEBJYBXJL,aksLXu_3Y8Ko,OzSJMUPICOS8,onR6YT18E_J4,hLfbovD9yF5Z,hhRcJBgovLrC,ngEMw8t2EJ08,ANEFdyFIwZJc,XvHtrwmVsL7j,xWa_5C809wmL,fGVOPFWlSBVS,hhmlfE88UrSY,gfLhARyZBxT6,i3PG80XV5tSn,OAHr0tHiVdmA,OjfnqBwA19BG,fHDwnieZmn3O,w6VGiKJvRcLt,MoHvNFwyUT3x,eAcZPq8tiGNx,_euXKOQqE_mj,rTUqNWVeGIJG,nGOK2A2EDWaR,_bX628IWnFuw,q2amWg_fAet_,wUQNRqGqVCp2,d1b3Bx5z52nj,tXDgPTwIROX_,HkIU19p8EEBv,frNSY87lNrur,IGT7oEqU5WxE,NWNKWp2dxoiG,tvLyY9s4xKj9,xKgzjmFELIK4,rmOJRFI5_Qgb,qNaKFK31Lnzb,IbKg0VJuJ2Bh,hypSqK_kfniy,TyLyTVX_5NSO,bbsigNcnCv0I,SXr5dkHDXQVC,Nl_WUzA7yWAF,lQ1uwc7vARTm,bMI60KLTrrn4,GO7yoo0MLTgJ,CGHdLjtvEhDE,h25J2Np2W8OC,XTsAZ5d5xQFA,l53n6u_V0ZN1,DfGsk8MU2ozd,MyEsMfaeLnOx,B0qYVRuYnEGb,p8_Re_y6_lVG,ou1LDp0n1MBw,FiVLl0qeJEQh,O3numiyqv8lr,FsdVjN6XDEhd,ksSlgX9XGSrt,SbOW5EJvdn90,grcPzV5ZIOiC,kjw22BxPC90V,A9NB9AciWE43,uT2kWT4j292g,iBfZPZWfPp13,Kd3Jw5uGbOr5,RiY0Rholewu8,nkLvj85snM8_,Sa2h1Vrit1V4,t4lK0dLuWNkx,YV7pQOte6qYa,rCRqTR2Xf86c,AamBc00IlIJI,ek9Qd2WT12sT,Uuz1aT5PWDuH,vIDUxDfgLOxZ,zzpWmAu_2aEE,_Ocvzlsj0suv,BlP9ye5GWIlx,zDaHiS631Wp4,qag0TcWEd2yo,VNFdZgP56Mfy,yPc47o6Xv6XW,Vd7rsgY3IRC8,_kqNBniyeEB9,EvA28CdK5FIR,LBlVdRzKLTly,NNaT54z4btN2,p1OuiKQt1jPC,M3paLqBL6Vds,meXtH01X1Hx4,nTXfM18o7_LH,Dx4yZFFC_tQ1,wGx6WoB1Mx06,EZq78rIRaFpD,Q5zlUD4W6gdE,fxSHzw5FlYdU,mmGXBNX0JLJd,Rq2tY80UDPRr,mLHYGsIm21BM,A29Qi0zJ0Q6K,GnGZWOVPoB8m,i0vdsbiUUGfP,bK1DhqBuv2sk,BdovjidS_xLq,uHOaFveeObOJ,GGfVHZhmLFE7,Y0QImfxvMlnX,gcxgxKYd8qmg,yQafWyPVzXnZ,i5CD8UJFYnLg,nHnB_D8XTrFH,ZOmcAfSetTsY,VVmiO896_ZRh,aYCFRT4geg4l,BeY_BN3z5L6i,bGWJL8G7QD3q,s25bjbxg5cSA,J__YyuAWiPUY,VWL3kqYGXCXV,KHPqKaM49E1G,qG6ouoPj7NKO,FMT_mj4Q68D8,XjcswXeF5Eiq,ekivuF4HRgzd,j_biEz7ENG5s,ZdQB6KlRWVPX,vAqPS5RTuxic,iZL4L3zZMEtz,geDbDPuCOZn1,wGaSyBjDrJRg,ccVG33H3dBxD,yqVDQAF9XzCu,EtjqyrdVgzBl,nrUEF1LPLf08,NbZyOVXSP_C1,XbK0YHXxKVnm,yI02ExdP12I9,HT6wgUuj9enG,ixUKP_VlxvDX,Q4yMUph6jnCT,eF8ec8tOCEgd,ERSZyBxWBgGT,e5256z13F4l1,sYyn0TTfe53R,ACYSpQ9O1LUb,KcbllhV80moo,NdND9HYs6L4t,fFTPwaH9i9lJ,zdhH4DjorOBG,GZUdlCpSudPG,Pa6tTogYGqJg,taIceDxmXRHE,JvA9begadDJ1,MpvKtex7Hz3h,TaEF4sOp10GH,lhMZLppou7yX,ZzXifrDwFJw9,GpJ1ByVQYpTe,RYacGaQmVr3F,Gd3lio6YvCiD,BlP9ye5GWIlx,dZ03TALrsZDc,qag0TcWEd2yo,VNFdZgP56Mfy,yPc47o6Xv6XW,Vd7rsgY3IRC8=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,WindowsError,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,__builtins__,__cached__,__doc__,__file__,__loader__,__name__,__package__,__spec__
def _ruXaDSZeRN8(z13g_pXln0iv, vbFvH69Od3WU, *tbOi_4M6Xpnx, **hzlTI0cni2SH):
try:
return zDaHiS631Wp4(z13g_pXln0iv + '.' + vbFvH69Od3WU, *tbOi_4M6Xpnx, **hzlTI0cni2SH)
except HkIU19p8EEBv:
return zDaHiS631Wp4(z13g_pXln0iv, *tbOi_4M6Xpnx, **hzlTI0cni2SH)
obfu3 = lambda: Q4yMUph6jnCT('test3')
class Obfu:
def test2():
Q4yMUph6jnCT('test2')
def obfu1():
Q4yMUph6jnCT('test1')
(test) C:\test> type import_obfu.py
khBz2KaSwJAQ,jQJfAMeXpuS7,aX1F_UgA_sVH,CnTSUfQlPOHl,u6ih71mHAWkm,EGGxMwNomABv,wsHG0i7HGBw7,Ytub2dhaEbf4,DNsDYkobT5s_,hqA4ToU6eXH0,KXwyZ1tOZveN,bc1gvGrPZWEx,J4I0gorYDzQK,SYaMknDVkE84,vXF2ICBNKAlL,GshnZXqjsC5M,LCqAY6ntgqJ4,kk4S0d2a7ymt,LPP_pzoX9g81,r0tgcTkH4Lfb,MMj3Tn6ZDKL7,MkfHdbKUZm9A,XcYWfF5XsOYs,FwV8XgFCzvKV,rRU4CHHWCL7U,zzlvFhPfjFAf,XE4N7D4vEygC,spoCaNDueHUR,HldU0oA6k44Y,FzkfwKTQF3Lt,zuIfjKfs1J0j,HzbUgzijZjJv,JdElXL8UCiJx,gvNLUidlU0JJ,xkgO0dVmRC6Y,Ssai9YVbib9c,PzKf32vb4qYv,BfSUBTMw4WGH,XEAYRzDZCfC8,HdxPvN41MyGh,tJpWdjScheHF,oMnGGNCXrdJB,QJdXUeyO_xus,GMWSwXW0wiOY,qXzx3Xy1AjCA,vr1_F54vvTzm,sD1jLtYD0gcx,MPN_wMna_Cwt,ZdNGITBOA4_y,X9FjeMSuwJyq,_c8KO75K6mhJ,GqlX1qxfUskE,rLkWZ9N19W9x,gmF5qVWxPNXn,UKvt8e0vC3Wz,aFZRrC77PHEG,m1Sw69GR7tQI,U3gD_kwFXUE0,wCLNrPfjav4x,NZa1oMvVQ42N,WqZnozcBZZhn,J6Zz8fgCvPaD,vZBKGwTQFsa8,VsEPFsqpP6cZ,RQG0kAi9BEcS,iNbzQozCeGN1,i54Zv25gdtQb,w9Uy1MlnLLPZ,HB0OdCWLmlJE,u4YcdmGvtwys,TstCxK1RzxGu,P5ywAsW0oIf7,HaxJeDUyjZk4,IJTMLtwmFn8K,Z54cd8aC7TPL,q1l80McezymY,CimaH00gkLPP,wPa8Xk4O58rJ,Ka_jO1SqkB9q,TZFQsB_I_AXD,_pdgPHS7lNAw,tH4OKb3lFG8f,KbHzPhAxaceb,sttcfGEWYovV,pRRAnWYY9Xad,QblikNo0QVDV,gRQtUK0SKtHl,R4Aoi14cOJuA,WK7kPcmOyJBV,qFIVMESceSKQ,A4_ZWv62DTur,FaSfRXoFFoTa,OKBovFW9sFiL,XHMqzeHdDSCX,Gh7GZjaooqBT,H4290lJF6Fvy,WNc0xan8E8Hd,L9dWyCy3TG7G,Ckp9NhLymy9z,py6qtSvDStzk,sHKu_feWURJc,CIxYQv33WYOf,AvHQ5dnCvAqm,dbTWfjcHnzk9,NwH70EArTzQd,tX7nB1em2WC6,niUSFCqD9lUU,eEuejTuRDtuN,y14lF5_mgWiU,eYCgrgGOD6cq,FEIp6cG4qVyo,PXPlR7sPE5oK,dCgacFOwtHQ8,KnJq1N32_5v_,Zlm5_OOCjFU8,WknCtCdmjcNf,fvFoJ0op1cKz,QbfJDou2v4vD,J5AuFiUs8SBB,Zj8AhgCmTsBN,cR2ah5b_iqdR,LF6EbXS0UlgS,o0yneB2htJNz,svygP8c2FBx8,jDueGoXEuJjb,QKLAWOFYESxT,dNBePY5x9sUH,jwQYd_2PE2nt,hyCUZmWS_pHn,vqJUBTnW8s5N,W_K2DjUt0N9H,ajkumHJIaClP,NTJ3o7V7t7h5,GSV82cdiyqHr,Gkdp7NQYrNUd,GQyrtUfsPGjz,fB9tbD2i2Iuf,Js0cJira0kH2,w02W8t_9eLrN,d2v41qnkOiFu,XLEKoNk4lVWX,Jh7gu5gLzmT9,yWRZzJ7G2Auy,PpqGUBSz5FgM,meG84010Vbhq,ueETgrvuhKKt,RvgSpksOGbmN,g1v7oOf1kWZi,cG32HEScSu2i,RuG57jyuPngy,cdfelXH_JM9L,Vrm6sDFlvgXR,upYXLmbwJ9rQ,YjxLzNDZ5to0,a8KK9q94FDrK,d6omKCXgKimC,LoPT95fob1q6,bvt1CG_VQa01,f4wX1ChJFXqh,lT1t6BHxerqJ,wPa8Xk4O58rJ,kq_RTv2DpkD8,TZFQsB_I_AXD,_pdgPHS7lNAw,tH4OKb3lFG8f,KbHzPhAxaceb=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,WindowsError,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,__builtins__,__cached__,__doc__,__file__,__loader__,__name__,__package__,__spec__
def caiHuKMNJV5y(GdCuLJW7q8Vv, VPX0odSrFwHe, *P_hVLQR4ePYv, **_p_5okiFxoBz):
try:
return Ka_jO1SqkB9q(GdCuLJW7q8Vv + '.' + VPX0odSrFwHe, *P_hVLQR4ePYv, **_p_5okiFxoBz)
except HldU0oA6k44Y:
return Ka_jO1SqkB9q(GdCuLJW7q8Vv, *P_hVLQR4ePYv, **_p_5okiFxoBz)
obfu1, Obfu = (KnJq1N32_5v_(caiHuKMNJV5y('test', 'test1', globals=None, locals=None, level=0), 'test1'), KnJq1N32_5v_(caiHuKMNJV5y('test', 'Test', globals=None, locals=None, level=0), 'Test'))
obfu, = (Ka_jO1SqkB9q('test'),)
obfu1()
KnJq1N32_5v_(Obfu, 'test2')()
KnJq1N32_5v_(obfu, 'test3')()
(test) C:\test>
This response is probably really bad... It's working only because i don't remove the non-obfuscated files.... Import name are not obfuscated... I will work on it, the problem is same than previous, i can't know which import i should obfuscate and which import i shouldn't.
You mean you can not detect which imports are third-party (pip) packages and which ones are local? Can't you just infer this from the local source file names? Obfuscate local file names and keep pip packages un-obfuscated.