
    5i<\                        d Z ddlZddlZdZ e e                                                      Z	 e n%# e$ r da	 G d de
          ZddlmZ ddZY nw xY wej        Zej        Zej        Zej        Zej        Zej        Z G d dej                  Z G d	 d
ej                  Z	  ej         ej         ej                                         ej        Zn# e$ r
 ej        ZY nw xY wdZer4 G d de          Z G d de          Z G d de          Z e            ZddZ ddZ!ddZ" G d de          Z# G d de          Z$d Z%d Z&ej        Z'ej        Z(ej)        Z*ej+        Z,ej-        Z.ej/        Z0ej1        Z2ej3        Z4ej5        Z6ej7        Z8ej9        Z:ej1        Z;ej/        Z<ej5        Z=ej3        Z>ej5        Z?ej3        Z@ej9        ZAej7        ZBejC        ZDejE        ZFejG        ZHej1        ZIej5        ZJej9        ZKejL        ZMej/        ZNej3        ZOej7        ZPej5        ZQej9        ZRej3        ZSej7        ZTej3        ZUej7        ZVej5        ZWejX        ZYejZ        Z[	 ej\        Z]ej^        Z_n7# e`$ r/ e,e0e4e8d ee'                   Z]e.e2e6e:d ee'                   Z_Y nw xY w ee]          Zae]Zbe]Zce]Zde'Ze eee          ZfeDZgeFZheDZieFZj ee,          Zk ee.          Zl ee0          Zm ee2          Zn ee4          Zo ee6          Zp ee@          Zq ee?          ZreoZs eeb          ZteqZuerZve(Zwe,Zx eeW          ZyeyZze(Z{e,Z|eBZ} eeU          Z~ eeS          Z eeV          Z eeT          Ze~ZeZeZeZe0Ze'Z ee          ZeZeZeZeZeZ ee          ZeZeZeZeZeZeZeZe?ZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZe?Z ee          ZecZe4Ze8Ze4Ze'Ze'Ze4ZeZ ee          Z ee          ZeeZ G d de          Z ee          Z G d d e          Z ee          ZdZd!Zd"ZdZd"Z	  ej        d!          j        Zn:# e$ r2  eej                  d#k    rd$Zn eej                  d%k    rd&Zn Y nw xY wd'Zd(ZdZd"Zd)Zd*Zd+Zd,Zd%Zd-Zd.Zd/Zd0Zd1Zd2Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:Zd;Zd<Zd=Zd>Zd?Zd@ZdAZdBZdCZdDZdEZdFZdGZdHZdIZdJZdKZdLZdMZdNZdOZdPZdQZdRZdSZdTZdUZdVZdWZdXZdYZdZZd[Zd\Zd]Zd^Zd_Zd`ZdaZdbZdcZddZdeZdfZ dgZdhZdiZdjZdkZdlZdmZdnZdoZ	dpZ
dqZdrZdsZdtZduZdvZdwZdxZdyZdzZd{Zd|Zd}Zd~ZdZdZeZeZeZdZdZ G d de          Z  G d de          Z! G d de          Z" e e                                                      #                    e          ZdS )z
Common definitions.
    Nc                       e Zd Zd ZdS )WindowsErrorc                 p    t          j        | g|R i | t          ddlma t                      | _        d S )Nr   )GetLastError)OSError__init___glekernel32r   winerror)selfargskwargss      N/home/kali/Ninja/venv/lib/python3.11/site-packages/winacl/functions/defines.pyr   zWindowsError.__init__4   sI    T3D333F333|999999 FFDMMM    N)__name__
__module____qualname__r    r   r   r   r   3   s#        	# 	# 	# 	# 	#r   r   )getenvc                 n    t          | d           }|"t          |                                 |          }|S N)_real_getenvupper)keydefaultvalues      r   r   r   <   s2    S$''= g66Er   c                   >    e Zd Z eej                  dk    rdZdS dS )	Structure      Nr   r   r   sizeofctypesc_void_p_pack_r   r   r   r   r   M   2        vfo!## $#r   r   c                   >    e Zd Z eej                  dk    rdZdS dS )Unionr   r    Nr!   r   r   r   r(   r(   P   r&   r   r(   Fc                       e Zd Zd ZdS )
WinDllHookc                     |                     d          rt                              | |          S t          |          S N_)
startswithobject__getattr__WinFuncHookr   names     r   r0   zWinDllHook.__getattr__g   s:    s## 6))$555t$$$r   N)r   r   r   r0   r   r   r   r*   r*   f   s#        	% 	% 	% 	% 	%r   r*   c                       e Zd Zd Zd ZdS )r1   c                     || _         d S r   )_WinFuncHook__namer2   s     r   r   zWinFuncHook.__init__m   s    DKKKr   c                     |                     d          rt                              | |          S t          | j        |          S r,   )r.   r/   r0   WinCallHookr6   r2   s     r   r0   zWinFuncHook.__getattr__p   s>    s## 6))$555t{D111r   N)r   r   r   r   r0   r   r   r   r1   r1   l   s2        	 	 		2 	2 	2 	2 	2r   r1   c                        e Zd Zd Zd Zd ZdS )r8   c                 |    || _         || _        t          t          t          j        |          |          | _        d S r   )_WinCallHook__dllname_WinCallHook__funcnamegetattrr#   windll_WinCallHook__func)r   dllnamefuncnames      r   r   zWinCallHook.__init__v   s1    $DN&DO!'&-"A"A8LLDKKKr   c                     	 t          | |          }t          | j        ||           d S # t          $ r, 	 t	          | j        |           Y d S # t          $ r Y Y d S w xY ww xY wr   )r=   setattrr?   AttributeErrordelattr)r   	attributer   s      r   __copy_attributezWinCallHook.__copy_attribute{   s    i00Y66666!   DK333333%   DDDs&   &* 
A A
AA AA c                    |                      d           |                      d           |                      d           t          d           t          | j        d| j        d|            | j        | }t          d|           |S )Nargtypesrestypeerrcheckz
----------z !  z== )_WinCallHook__copy_attributeprintr;   r<   r?   )r   argvretvals      r   __call__zWinCallHook.__call__   s    !!*---!!),,,!!*---&MMM$...$///44HIII T[$'FEVV%&&&Mr   N)r   r   r   r   rM   rQ   r   r   r   r8   r8   u   sD        	M 	M 	M
	 	 		 	 	 	 	r   r8   r   c                 0    | st          j                    | S )z
    Error checking for most Win32 API calls.

    The function is assumed to return an integer, which is C{0} on error.
    In that case the C{WindowsError} exception is raised.
    r#   WinErrorresultfunc	argumentss      r   RaiseIfZerorY      s       oMr   c                 0    | rt          j                    | S )ao  
    Error checking for some odd Win32 API calls.

    The function is assumed to return an integer, which is zero on success.
    If the return value is nonzero the C{WindowsError} exception is raised.

    This is mostly useful for free() like functions, where the return value is
    the pointer to the memory block on failure or a C{NULL} pointer on success.
    rS   rU   s      r   RaiseIfNotZeror[      s       oMr   c                 D    | t           k    rt          j        |           | S )z
    Error checking for Win32 Registry API calls.

    The function is assumed to return a Win32 error code. If the code is not
    C{ERROR_SUCCESS} then a C{WindowsError} exception is raised.
    )ERROR_SUCCESSr#   rT   rU   s      r   RaiseIfNotErrorSuccessr^      s$     of%%%Mr   c                   N    e Zd ZdZ ed          Z ed          ZeZd Zd Z	dS )GuessStringTypea  
    Decorator that guesses the correct version (A or W) to call
    based on the types of the strings passed as parameters.

    Calls the B{ANSI} version if the only string types are ANSI.

    Calls the B{Unicode} version if Unicode or mixed string types are passed.

    The default if no string arguments are passed depends on the value of the
    L{t_default} class variable.

    @type fn_ansi: function
    @ivar fn_ansi: ANSI version of the API function to call.
    @type fn_unicode: function
    @ivar fn_unicode: Unicode (wide) version of the API function to call.

    @type t_default: type
    @cvar t_default: Default string type to use.
        Possible values are:
         - type('') for ANSI
         - type(u'') for Unicode
     c                    || _         || _        	 | j         j        dd         | _        n# t          $ r Y nw xY w	 | j         j        | _        n# t          $ r Y nw xY w	 | j         j        | _        dS # t          $ r Y dS w xY wz
        @type  fn_ansi: function
        @param fn_ansi: ANSI version of the API function to call.
        @type  fn_unicode: function
        @param fn_unicode: Unicode (wide) version of the API function to call.
        Nfn_ansi
fn_unicoder   rD   r   __doc__r   rf   rg   s      r   r   zGuessStringType.__init__        "$	 L1#2#6DMM 	 	 	D		"l5DOO 	 	 	D		</DLLL 	 	 	DD	/   * 
77A 
AAA1 1
A?>A?c                 0   | j         }d |D             }|                    d |                                D                        | j        |k    r| j        }n| j        }| j        |v r||v rt          |          }t          t          |                    D ]&}||         |k    rt          ||                   ||<   '|                                D ]*\  }}t          |          |k    rt          |          ||<   +| j        }n||v r| j        } ||i |S )Nc                 ,    g | ]}t          |          S r   type.0items     r   
<listcomp>z,GuessStringType.__call__.<locals>.<listcomp>       333Td4jj333r   c                 2    g | ]\  }}t          |          S r   rn   rq   r   r   s      r   rs   z,GuessStringType.__call__.<locals>.<listcomp>   "    LLL,3$u++LLLr   )t_ansiextend	iteritems	t_defaultrf   rg   	t_unicodelistxrangelenunicodeitemsro   )	r   rO   argdrx   v_typesfnindexr   r   s	            r   rQ   zGuessStringType.__call__   sG    K 43T333LL$..:J:JLLLNNN >V##BBB >W$$   Dzz#CII.. ; ;Eu~//&-d5k&:&:U$(JJLL 3 3LS%E{{f,,$+ENNS	 BB w B r4 4   r   N)
r   r   r   rh   ro   rx   r|   r{   r   rQ   r   r   r   r`   r`      s_         0 RFS		I I  0(! (! (! (! (!r   r`   c                       e Zd ZdZd Zd ZdS )DefaultStringTypeaq  
    Decorator that uses the default version (A or W) to call
    based on the configuration of the L{GuessStringType} decorator.

    @see: L{GuessStringType.t_default}

    @type fn_ansi: function
    @ivar fn_ansi: ANSI version of the API function to call.
    @type fn_unicode: function
    @ivar fn_unicode: Unicode (wide) version of the API function to call.
    c                    || _         || _        	 | j         j        dd         | _        n# t          $ r Y nw xY w	 | j         j        | _        n# t          $ r Y nw xY w	 | j         j        | _        dS # t          $ r Y dS w xY wrc   re   ri   s      r   r   zDefaultStringType.__init__%  rj   rk   c                 d    t           j        t           j        k    r| j        }n| j        } ||i |S r   )r`   r{   rx   rf   rg   )r   rO   r   r   s       r   rQ   zDefaultStringType.__call__=  s<     $(>>>BBB r4 4   r   N)r   r   r   rh   r   rQ   r   r   r   r   r     s<        
 
  0	! 	! 	! 	! 	!r   r   c                 F     t          j                    fd            }|S )z
    Decorator that generates an ANSI version of a Unicode (wide) only API call.

    @type  fn: callable
    @param fn: Unicode (wide) version of the API function to call.
    c                     t           j        }t           j        }d | D             }|                    d |                                D                        ||v rt          |           } t          t          |                     D ]"}||         |k    r || |                   | |<   #|                                D ]&\  }}t          |          |k    r ||          ||<   ' | i |S )Nc                 ,    g | ]}t          |          S r   rn   rp   s     r   rs   z4MakeANSIVersion.<locals>.wrapper.<locals>.<listcomp>S  rt   r   c                 2    g | ]\  }}t          |          S r   rn   rv   s      r   rs   z4MakeANSIVersion.<locals>.wrapper.<locals>.<listcomp>T  rw   r   
r`   rx   r|   ry   rz   r}   ranger   r   ro   	rO   r   rx   r|   r   r   r   r   r   s	           r   wrapperz MakeANSIVersion.<locals>.wrapperO  s    #*#-	33T333LL$..:J:JLLLNNNW::Ds4yy)) 9 95>V++"+)DK"8"8DK"jjll 1 1
U;;&(( )	% 0 0DIr4 4   r   	functoolswrapsr   r   s   ` r   MakeANSIVersionr   H  :     _R! ! ! ! ! Nr   c                 F     t          j                    fd            }|S )z
    Decorator that generates a Unicode (wide) version of an ANSI only API call.

    @type  fn: callable
    @param fn: ANSI version of the API function to call.
    c                     t           j        }t           j        }d | D             }|                    d |                                D                        ||v rt          |           } t          t          |                     D ]"}||         |k    r || |                   | |<   #|                                D ]&\  }}t          |          |k    r ||          ||<   ' | i |S )Nc                 ,    g | ]}t          |          S r   rn   rp   s     r   rs   z4MakeWideVersion.<locals>.wrapper.<locals>.<listcomp>k  rt   r   c                 2    g | ]\  }}t          |          S r   rn   rv   s      r   rs   z4MakeWideVersion.<locals>.wrapper.<locals>.<listcomp>l  rw   r   r   r   s	           r   r   z MakeWideVersion.<locals>.wrapperg  s    #*#-	33T333LL$..:J:JLLLNNN::Ds4yy)) 6 65>Y.."(&e"5"5DK"jjll . .
U;;)++ &uDIr4 4   r   r   r   s   ` r   MakeWideVersionr   `  r   r   )r       r      c                       e Zd ZdefdefgZdS )FLOAT128LowPartHighPartN)r   r   r   QWORD_fields_r   r   r   r   r     s%        		HHHr   r   c                       e Zd ZdefdefgZdS )M128ALowHighN)r   r   r   	ULONGLONGLONGLONGr   r   r   r   r   r   "  s%        	I	HHHHr   r   rd   r    r   l    r   l       i  r                     &   '   2   P   W   o   p   x   y   z   {   ~                                 i  i  i+  i  i6  i<  i>  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i#  i$  i%  i&  i'  i(  i)  i*  i+  i,  i-  i.  i/  i0  i1  i2  i3  i4  i5  i6  i7  i8  i9  i:  i;  i<  i  i"  i4  i  i   i   i   i   i   i   i   i  c                   *    e Zd ZdefdefdefgZd ZdS )UNICODE_STRINGLengthMaximumLengthBufferc                 f    t          j        | j        | j                                      d          S )Nz	utf-16-le)r#   	string_atr   r   decode)r   s    r   
get_stringzUNICODE_STRING.get_string  s'    T[99@@MMMr   N)r   r   r   USHORTPVOIDr   r   r   r   r   r   r     sG        	F#	F#	E"H
N N N N Nr   r   c                   0    e Zd Zdefdefdefdedz  fgZdS )GUIDData1Data2Data3Data4r   N)r   r   r   DWORDWORDBYTEr   r   r   r   r   r     s9        	E	D	D	D1H	HHHr   r   c                       e Zd ZdefdefgZdS )
LIST_ENTRYFlinkBlinkN)r   r   r   r   r   r   r   r   r   r     s%        	E	EHHHr   r   r   )Nr   ($  rh   r#   r   _allsetvarskeysr   	NameErrorr	   r   osr   r   	addressofr"   SIZEOFPOINTERWINFUNCTYPEr>   r   r(   r$   byrefc_char	TypeErrorpointerWIN32_VERBOSE_MODEr/   r*   r1   r8   rY   r[   r^   r`   r   r   r   LPVOIDCHARc_wcharWCHARc_ubyter   c_byteSBYTEc_uint16r   c_int16SWORDc_uint32r   c_int32SDWORDc_uint64r   c_int64SQWORDSHORTr   INTUINTLONGULONGr   r   c_char_pLPSTR	c_wchar_pLPWSTRc_int8INT8INT16INT32INT64c_uint8UINT8UINT16UINT32UINT64LONG32LONG64ULONG32ULONG64DWORD32DWORD64BOOLc_floatFLOATc_doubleDOUBLEc_size_tSIZE_T	c_ssize_tSSIZE_TrD   PSIZE_T	DWORD_PTR	ULONG_PTRLONG_PTRr   PPVOIDPSTRPWSTRPCHARPWCHARLPBYTELPSBYTELPWORDLPSWORDLPDWORDLPSDWORDLPULONGLPLONGPDWORD
PDWORD_PTRPULONGPLONGCCHARBOOLEANPBOOLLPBOOLTCHARUCHAR	DWORDLONG	LPDWORD32	LPULONG32	LPDWORD64	LPULONG64PDWORD32PULONG32PDWORD64PULONG64ATOMHANDLEPHANDLELPHANDLEHMODULE	HINSTANCEHTASKHKEYPHKEYHDESKHRSRCHSTRHWINSTAHKLHDWPHFILEHRESULTHGLOBALHLOCALHGDIOBJHDCHRGNHBITMAPHPALETTEHPENHBRUSHHMFHEMFHENHMETAFILE	HMETAFILEHMETAFILEPICTHWNDNTSTATUS	PNTSTATUS	KAFFINITYRVARVA64WPARAMLPARAMLRESULTACCESS_MASKREGSAMPACCESS_MASKPREGSAMPSIDr   	PFLOAT128r   PM128ANULLINFINITETRUEFALSEANYSIZE_ARRAYr   INVALID_HANDLE_VALUEMAX_MODULE_NAME32MAX_PATHr]   ERROR_INVALID_FUNCTIONERROR_FILE_NOT_FOUNDERROR_PATH_NOT_FOUNDERROR_ACCESS_DENIEDERROR_INVALID_HANDLEERROR_NOT_ENOUGH_MEMORYERROR_INVALID_DRIVEERROR_NO_MORE_FILESERROR_BAD_LENGTHERROR_HANDLE_EOFERROR_HANDLE_DISK_FULLERROR_NOT_SUPPORTEDERROR_FILE_EXISTSERROR_INVALID_PARAMETERERROR_BUFFER_OVERFLOWERROR_DISK_FULLERROR_CALL_NOT_IMPLEMENTEDERROR_SEM_TIMEOUTERROR_INSUFFICIENT_BUFFERERROR_INVALID_NAMEERROR_MOD_NOT_FOUNDERROR_PROC_NOT_FOUNDERROR_DIR_NOT_EMPTYERROR_BAD_THREADID_ADDRERROR_BAD_ARGUMENTSERROR_BAD_PATHNAMEERROR_ALREADY_EXISTSERROR_INVALID_FLAG_NUMBERERROR_ENVVAR_NOT_FOUNDERROR_FILENAME_EXCED_RANGEERROR_MORE_DATAWAIT_TIMEOUTERROR_NO_MORE_ITEMSERROR_PARTIAL_COPYERROR_INVALID_ADDRESSERROR_THREAD_NOT_IN_PROCESSERROR_CONTROL_C_EXITERROR_UNHANDLED_EXCEPTIONERROR_ASSERTION_FAILUREERROR_WOW_ASSERTIONERROR_DBG_EXCEPTION_NOT_HANDLEDERROR_DBG_REPLY_LATER"ERROR_DBG_UNABLE_TO_PROVIDE_HANDLEERROR_DBG_TERMINATE_THREADERROR_DBG_TERMINATE_PROCESSERROR_DBG_CONTROL_CERROR_DBG_PRINTEXCEPTION_CERROR_DBG_RIPEXCEPTIONERROR_DBG_CONTROL_BREAKERROR_DBG_COMMAND_EXCEPTIONERROR_DBG_EXCEPTION_HANDLEDERROR_DBG_CONTINUEERROR_ELEVATION_REQUIREDERROR_NOACCESSERROR_CIRCULAR_DEPENDENCYERROR_SERVICE_DOES_NOT_EXIST ERROR_SERVICE_CANNOT_ACCEPT_CTRLERROR_SERVICE_NOT_ACTIVE'ERROR_FAILED_SERVICE_CONTROLLER_CONNECTERROR_EXCEPTION_IN_SERVICEERROR_DATABASE_DOES_NOT_EXISTERROR_SERVICE_SPECIFIC_ERRORERROR_PROCESS_ABORTEDERROR_SERVICE_DEPENDENCY_FAILERROR_SERVICE_LOGON_FAILEDERROR_SERVICE_START_HANGERROR_INVALID_SERVICE_LOCKERROR_SERVICE_MARKED_FOR_DELETEERROR_SERVICE_EXISTSERROR_ALREADY_RUNNING_LKG ERROR_SERVICE_DEPENDENCY_DELETEDERROR_BOOT_ALREADY_ACCEPTEDERROR_SERVICE_NEVER_STARTEDERROR_DUPLICATE_SERVICE_NAMEERROR_DIFFERENT_SERVICE_ACCOUNT"ERROR_CANNOT_DETECT_DRIVER_FAILURE!ERROR_CANNOT_DETECT_PROCESS_ABORTERROR_NO_RECOVERY_PROGRAMERROR_SERVICE_NOT_IN_EXEERROR_NOT_SAFEBOOT_SERVICEERROR_DEBUGGER_INACTIVEERROR_PRIVILEGE_NOT_HELDERROR_NONE_MAPPEDRPC_S_SERVER_UNAVAILABLEDELETEREAD_CONTROL	WRITE_DACWRITE_OWNERSYNCHRONIZESTANDARD_RIGHTS_REQUIREDSTANDARD_RIGHTS_READSTANDARD_RIGHTS_WRITESTANDARD_RIGHTS_EXECUTESTANDARD_RIGHTS_ALLSPECIFIC_RIGHTS_ALLr   r   r   
differencer   r   r   <module>r     s
  <       
s4466;;==LL   D# # # # #w # # # *)))))     ( 	mmn m            FL   FOLFL11222LEE   NEEE   +% % % % %V % % %2 2 2 2 2f 2 2 2    f   4 Z\\F	 	 	 	   	 	 	 	_! _! _! _! _!f _! _! _!B.! .! .! .! .! .! .! .!`  0  8 omnnmonononnononono	omnnnnooonnoooonnoEoFGG E E E%00@F%6V44VVF^^DGGGE gfoo 		 genngdmmgenngdmmgenngenngfoogenngdmmgi  
gdmm	gg	gg	gg	gg	gfoo	gdmm	gh		w{##gfoo *    	   
 GH	    I   
 
  *6?2..4   vfo!##)		 	 A	%	%1   '(&' &' &' &' &' &' &( &( &( &( &( &( &( &( &) &)&) &) &) &) &) &) &) &) &) &) &) &) &) &) &)&)&) &) &) &) &) &) &) &) &) &) &) "&) &) &) &) &) &) &) &) &) &) &)&* &* &*  &* *. '&* &* &* &* &* &* &* &* &* &* &* &*  &* &* &* &* &* "&* !&* &* &* &* &* &* &*  $.#-#-	#-#-#- #/ #/ #/ #- #- N N N N NY N N N     9           s4466;;==$$T**sE   6 AA,2C C.-C."I1 11J%$J%Q 4RR