PyObfuscator icon indicating copy to clipboard operation
PyObfuscator copied to clipboard

Obfuscating Python script with multiple imports

Open SeanPedersen opened this issue 1 year ago • 4 comments

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

SeanPedersen avatar Dec 10 '24 11:12 SeanPedersen

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:

  1. Identify all imports (functions, methods, classes and variables)
  2. Define the obfuscated name in the command line or the config file
  3. 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...).

mauricelambert avatar Dec 29 '24 13:12 mauricelambert

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?

SeanPedersen avatar Jan 14 '25 01:01 SeanPedersen

I have built an example:

  1. Write file test.py:
test3 = lambda: print("test3")

class Test:
    def test2():
        print("test2")

def test1():
    print("test1")
  1. Write file import_test.py:
from test import test1, Test
import test

test1()
Test.test2()
test.test3()
  1. 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:

  1. 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()
  1. 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.

mauricelambert avatar Feb 08 '25 20:02 mauricelambert

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.

SeanPedersen avatar Apr 04 '25 12:04 SeanPedersen