o
    jk                     @   s  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dl
mZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$ e$d+ddZ%G dd de j&Z'e'j(e'j(e'j)e'j)e'j*e'j*e'j+e'j+e'j,e'j,e'j-e'j,dZ.G dd de j/Z0G dd de j&Z1dd Z2G dd dZ3G dd dZ4G d d! d!Z5d"d# Z6d$d% Z7d&d' Z8d(d) Z9e:d*kre;<e9  dS dS ),    N)SMBDCEFactorySMBConnection)DCERPC5Connection)rrp)logger)system_errors)FILETIME)SECURITY_DESCRIPTOR)ACCESS_ALLOWED_ACEAceFlags)SID)SECURITY_INFORMATION)RPC_C_AUTHN_LEVEL_NONERPC_C_AUTHN_LEVEL_CONNECTRPC_C_AUTHN_LEVEL_CALLRPC_C_AUTHN_LEVEL_PKTRPC_C_AUTHN_LEVEL_PKT_INTEGRITYRPC_C_AUTHN_LEVEL_PKT_PRIVACYDCERPCExceptionRPC_C_AUTHN_GSS_NEGOTIATE)asynccontextmanagerTFc                 C  sR   t j| |||dI d H \}}|r|z|V  W | I d H  d S | I d H  w )N
auth_levelopenperform_dummy)RRPRPCfrom_smbconnectionclose)
connectionr   r   r   instanceerr r"   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/interfaces/remoteregistry.pyrrprpc_from_smb   s   "r$   c                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	HKEYr                     N)
__name__
__module____qualname__CLASSES_ROOTCURRENT_USERLOCAL_MACHINEUSERSPERFORMANCE_DATACURRENT_CONFIGDYN_DATAr"   r"   r"   r#   r%   (   s    r%   )HKEY_LOCAL_MACHINEHKLMHKEY_CURRENT_USERHKCUHKEY_CLASSES_ROOTHKCR
HKEY_USERSHKUHKEY_PERFORMANCE_DATAHKPDHKEY_CURRENT_CONFIGHKCCc                   @   s8   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdS )REG_ACCESS_MASKl        i   i    i   i   i   i   i   i   i   i   N)r,   r-   r.   GENERIC_READGENERIC_WRITEGENERIC_EXECUTEGENERIC_ALLMAXIMUM_ALLOWEDACCESS_SYSTEM_SECURITYSYNCHRONIZEWRITE_OWNER
WRITE_DACLREAD_CONTROLDELETEr"   r"   r"   r#   rB   @       rB   c                   @   s8   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZd	Zd
S )REG_VAL_TYPEr(   r)   r*   r'   r+      r      r&   N)r,   r-   r.   BINARYDWORDDWORD_LITTLE_ENDIANDWORD_BIG_ENDIAN	EXPAND_SZLINKMULTI_SZNONEQWORDQWORD_LITTLE_ENDIANSZr"   r"   r"   r#   rO   M   rN   rO   c                 C   sr   | t jkr
|dS | t jt jfv rtj|dddS | t jkr'tj|dddS | t jt j	fv r7tj|dddS |S )Nz	utf-16-lelittleF)	byteordersignedbig)
rO   r\   decoderS   rT   int
from_bytesrU   rZ   r[   )
value_type
value_datar"   r"   r#   reg_decode_valueZ   s   


rf   c                   @   sF  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	dBde
dedefddZe	dBdededefddZdd ZejfddZejfddZdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)ejfd*d+Zd,d- Zd.d/ Zejfd0d1Zejfd2d3Z dCd4d5Z!d6d7 Z"d8d9 Z#d:d; Z$d<d= Z%ejfd>d?Z&dDd@dAZ'dS )Er   c                 C   s$   d| _ tj| _d | _i | _d| _d S )Nz\winregr   )service_pipenamer   MSRPC_UUID_RRPservice_uuiddcehandles_RRPRPC__current_handle_idselfr"   r"   r#   __init__g   s
   
zRRPRPC.__init__c                 C   s"   | j }|  j d7  _ || j|< |S Nr&   )rl   rk   )rn   hkeyhidr"   r"   r#   __get_handlen   s   
zRRPRPC.__get_handlec                    s6   t |tr| |I d H \}}|d ur|| j| S N)
isinstancer%   ConnectRegistryrk   )rn   keyr!   r"   r"   r#   __get_rawhandlet   s   

zRRPRPC.__get_rawhandlec                    s   | S rt   r"   rm   r"   r"   r#   
__aenter__|   s   zRRPRPC.__aenter__c                    s   |   I d H  dS )NTN)r   )rn   exc_typeexc	tracebackr"   r"   r#   	__aexit__   s   zRRPRPC.__aexit__c              
      sb   z| j D ]
}| |I d H  q| j I d H  W d S  ty0 } z
d|fW  Y d }~S d }~ww NF)rk   CloseKeyrj   
disconnect	Exception)rn   rq   er"   r"   r#   r      s   
zRRPRPC.closeNTFr   r   r   c              
      s   z=t  }| |_|j| |d u r|jt |j I d H \}}|d ur(||j|jI d H \}}|d ur:||d fW S  tyT } z
d|fW  Y d }~S d }~ww r   )r   rj   set_auth_levelr   connectbindri   r   )r   r   r   r   service_r!   r   r"   r"   r#   from_rpcconnection   s$   
zRRPRPC.from_rpcconnectionc              
      s   z)|du rt }t| t jd}tj| |||dI dH \}}|dur&||dfW S  ty@ } z
d|fW  Y d}~S d}~ww )z
		Creates the connection to the service using an established SMBConnection.
		This connection will use the given SMBConnection as transport layer.
		N)filenamer   )r   r   r   rg   r   get_dce_rpcr   )r   r   r   r   rpctransportr   r!   r   r"   r"   r#   r      s    
zRRPRPC.from_smbconnectionc              
      s   z|  |I d H }t| j|I d H \}}|d ur|W dS  tyP } z&t|tjrBd t| t	j
|  d fW  Y d }~S d |fW  Y d }~S d }~ww Nrz   r&   )_RRPRPC__get_rawhandler   hBaseRegCloseKeyrj   r   ru   DCERPCSessionErrorOSErrorget_error_coder   ERROR_MESSAGESrn   rw   r   r!   r   r"   r"   r#   r      s   ,zRRPRPC.CloseKeyc              
      s  zd }d }|t jkrtj| j|jdI d H \}}nk|t jkr.tj| j|jdI d H \}}nW|t jkrBtj	| j|jdI d H \}}nC|t j
krVtj| j|jdI d H \}}n/|t jkrjtj| j|jdI d H \}}n|t jkr~tj| j|jdI d H \}}ntd|j |d urd |fW S | |d d fW S  ty } z&t|tjrd t| tj|  d fW  Y d }~S d |fW  Y d }~S d }~ww )N
samDesiredz'Not supported registry hive to open: %sphKeyr&   )r%   r/   r   hOpenClassesRootrj   valuer0   hOpenCurrentUserr1   hOpenLocalMachiner2   
hOpenUsersr3   hOpenPerformanceDatar4   hOpenCurrentConfigr   name_RRPRPC__get_handleru   r   r   r   r   r   )rn   rw   accessresr!   r   r"   r"   r#   rv      s4   






,zRRPRPC.ConnectRegistryc              
      s   z(|  |I d H }tj| j|||jdI d H \}}|d ur || |d d fW S  ty[ } z&t|tjrMd t	|
 tj|
  d fW  Y d }~S d |fW  Y d }~S d }~ww )Nr   	phkResultr&   )r   r   hBaseRegCreateKeyrj   r   r   r   ru   r   r   r   r   r   )rn   rw   sub_keyr   r   r!   r   r"   r"   r#   	CreateKey   s    ,zRRPRPC.CreateKeyc              
         z|  |I d H }t| j||I d H \}}|d ur|W dS  tyQ } z&t|tjrCd t| t	j
|  d fW  Y d }~S d |fW  Y d }~S d }~ww r   )r   r   hBaseRegDeleteKeyrj   r   ru   r   r   r   r   r   )rn   rw   r   r   r!   r   r"   r"   r#   	DeleteKey   s   ,zRRPRPC.DeleteKeyc              
      r   r   )r   r   hBaseRegDeleteValuerj   r   ru   r   r   r   r   r   )rn   rw   r   r   r!   r   r"   r"   r#   DeleteValue  s   ,zRRPRPC.DeleteValuec              
      s   z"|  |I d H }t| j||I d H \}}|d ur||d d fW S  tyU } z&t|tjrGd t| t	j
|  d fW  Y d }~S d |fW  Y d }~S d }~ww )N	lpNameOutr&   )r   r   hBaseRegEnumKeyrj   r   ru   r   r   r   r   r   )rn   rw   indexr   r!   r   r"   r"   r#   EnumKey  s   ,zRRPRPC.EnumKeyc           	         s   z6|  |I d H }t| j||I d H \}}|d ur||d }t|d }t|d|d }|||d fW S  tym } z*t|tj	r]d d d t
| tj|  d fW  Y d }~S d d d |fW  Y d }~S d }~ww )NlpValueNameOutlpType    lpDatar&   )r   r   hBaseRegEnumValuerj   rO   rf   joinr   ru   r   r   r   r   r   )	rn   rw   r   r   r!   
value_namerd   re   r   r"   r"   r#   	EnumValue  s    0zRRPRPC.EnumValuec              
      s   z|  |I d H }t| j|I d H \}}d|fW S  tyL } z&t|tjr>d t| t	j
|  d fW  Y d }~S d |fW  Y d }~S d }~ww )NTr&   )r   r   hBaseRegFlushKeyrj   r   ru   r   r   r   r   r   r   r"   r"   r#   FlushKey-  s   
,zRRPRPC.FlushKeyc              
      s   z|  |I d H }t| j|||I d H \}}|d ur|W dS  tyR } z&t|tjrDd t| t	j
|  d fW  Y d }~S d |fW  Y d }~S d }~ww r   )r   r   hBaseRegLoadKeyrj   r   ru   r   r   r   r   r   )rn   rw   r   	file_namer   r!   r   r"   r"   r#   LoadKey7  s   ,zRRPRPC.LoadKeyr   c              
      s   z'|  |I d H }t| j|||jI d H \}}|d ur|| |d d fW S  tyZ } z&t|tjrLd t	|
 tj|
  d fW  Y d }~S d |fW  Y d }~S d }~ww )Nr   r&   )r   r   hBaseRegOpenKeyrj   r   r   r   ru   r   r   r   r   r   )rn   rw   r   reservedr   r   r!   r   r"   r"   r#   OpenKeyD  s   ,zRRPRPC.OpenKeyc                    s   z1|  |I d H }t| j|I d H \}}|d ur||d }|d }t|d j}|||d fW S  tyh } z*t|tj	rXd d d t
| tj|  d fW  Y d }~S d d d |fW  Y d }~S d }~ww )N
lpcSubKeys	lpcValueslpftLastWriteTimer&   )r   r   hBaseRegQueryInfoKeyrj   r	   	from_dictdatetimer   ru   r   r   r   r   r   )rn   rw   r   r!   
subkey_cnt
values_cntlastwrite_timer   r"   r"   r#   QueryInfoKeyQ  s    0zRRPRPC.QueryInfoKeyc              
      s   z|  |I d H }t| j|I d H \}}|d ur||d fW S  tyR } z&t|tjrDd t| t	j
|  d fW  Y d }~S d |fW  Y d }~S d }~ww rp   )r   r   r   rj   r   ru   r   r   r   r   r   )rn   rw   r   r!   r   r"   r"   r#   QueryInfoKeySpecialc  s   
,zRRPRPC.QueryInfoKeySpecialc              
      s   z$|  |I d H }tj| j||dI d H \}}|d ur|t|d fW S  tyW } z&t|tjrId t	|
 tj|
  d fW  Y d }~S d |fW  Y d }~S d }~ww )NsecurityInformationr&   )r   r   hBaseRegGetKeySecurityrj   r
   rc   r   ru   r   r   r   r   r   )rn   rw   r   r   r!   r   r"   r"   r#   GetKeySecurityt  s   ,zRRPRPC.GetKeySecurityc              
      s   z"|  |I d H }tj| j|| |dI d H \}}|d ur!|W dS  tyU } z&t|tjrGd t|	 t
j|	  d fW  Y d }~S d |fW  Y d }~S d }~ww )Nr   rz   r&   )r   r   hBaseRegSetKeySecurityrj   to_bytesr   ru   r   r   r   r   r   )rn   rw   security_descriptorr   r   r!   r   r"   r"   r#   SetKeySecurity  s   ",zRRPRPC.SetKeySecurityc              
      s   z$|  |I d H }tj| j|||dI d H \}}}|d ur ||||fW S  tyY } z(t|tjrJd d t| t	j
|  d fW  Y d }~S d d |fW  Y d }~S d }~ww )Nunpack_valsr&   )r   r   hBaseRegQueryValuerj   r   ru   r   r   r   r   r   )rn   rw   r   r   val_typer   r!   r   r"   r"   r#   
QueryValue  s    .zRRPRPC.QueryValuec              
      s   z |  |I d H }t| j||I d H \}}|d ur||d fW S  tyS } z&t|tjrEd t| t	j
|  d fW  Y d }~S d |fW  Y d }~S d }~ww rp   )r   r   hBaseRegSaveKeyrj   r   ru   r   r   r   r   r   )rn   rw   r   r   r!   r   r"   r"   r#   SaveKey  s   
,zRRPRPC.SaveKeyc              
      s   z!|  |I d H }t| j|||j|I d H \}}|d ur |W dS  tyV } z(t|tjrGd d t|	 t
j|	  d fW  Y d }~S d d |fW  Y d }~S d }~ww r   )r   r   hBaseRegSetValuerj   r   r   ru   r   r   r   r   r   )rn   rw   r   r   val_datar   r!   r   r"   r"   r#   SetValue  s    .zRRPRPC.SetValuec              
         zt | jI d H \}}|d ur||d d fW S  tyM } z(t|t jr>d d t| tj	|  d fW  Y d }~S d d |fW  Y d }~S d }~ww Nr   r&   )
r   hOpenPerformanceTextrj   r   ru   r   r   r   r   r   rn   r   r!   r   r"   r"   r#   OpenPerformanceText     .zRRPRPC.OpenPerformanceTextc              
      r   r   )
r   hOpenPerformanceNlsTextrj   r   ru   r   r   r   r   r   r   r"   r"   r#   OpenPerformanceNlsText  r   zRRPRPC.OpenPerformanceNlsTextc           	   
      s   z-| dd\}}t| }| j||dI d H \}}|d ur#d |fW S | j|||dI d H W S  tya } z't|tjrSd d t|	 t
j|	  d fW  Y d }~S d |fW  Y d }~S d }~ww )N\r&   r   )splithkey_abbrevrv   r   r   ru   r   r   r   r   r   r   )	rn   fullpathr   reg_rootkey_pathroot_keyrw   r!   r   r"   r"   r#   OpenRegPath  s   
.zRRPRPC.OpenRegPathc              
      s   zK|d u r|  tjI d H \}}|d ur|g }tdD ]*}| ||I d H \}}|d ur7|jdkr5 n||ddu rG||d d  q|d fW S  tyb } z
d |fW  Y d }~S d }~ww )N     zS-1-5-T)	rv   r%   r2   ranger   errno
startswithappendr   )rn   users_handler!   usersir   r   r"   r"   r#   	ListUsers  s*   

zRRPRPC.ListUsersNTFTrt   )(r,   r-   r.   ro   r   r   ry   r~   r   staticmethodr   boolr   r   r   r   rB   rG   rv   r   r   r   r   r   r   r   r   r   r   r   OWNERr   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r   f   s@    	$

r   c                   @   s   e Zd ZdZd#dededefdd	Zd
d Zdd Zdd Z	dd Z
d$ddZd$ddZdd Zd%ddZd$ddZdd Zd&dd Zd'd!d"ZdS )(SMBWinRegHivez$
	Async version of the hive parser
	S-1-5-32-544TNrrprpc	hive_path
target_sidc                 C   sR   || _ || _|| _d | _|| _|| _d | _i | _i | _i | _	i | _
i | _i | _d S rt   )print_cbr   r  hive_handler  cache_enabledoriginal_sd_SMBWinRegHive__original_sd_SMBWinRegHive__key_lookup_SMBWinRegHive__names_lookup_SMBWinRegHive__classes_lookup_SMBWinRegHive__values_lookup_SMBWinRegHive__values_lookup_2)rn   r   r  r  r  r  r"   r"   r#   ro     s   
zSMBWinRegHive.__init__c                    s   | j D ]<}z| jj|| j | tjdI d H \}}|d ur|W q ty@ } z| jd ur6| d||f  W Y d }~qd }~ww | jD ]}| j|I d H  qDd S )Nr   z:[!] Failed to restore security descriptor for %s Reason %s)	r  r   r   r   DACLr   r  r  r   r   r"   r"   r#   r     s    
$

zSMBWinRegHive.closec                    sz   |  |I d H }t|}t }t| j|_d|_t	j
|_	|jj| | jj||tjdI d H \}}|d ur;||S )Nl   	    r   )get_sdcopydeepcopyr   r   from_stringr  SidMaskr   CONTAINER_INHERIT_ACEDaclacesr   r   r   r   r  )rn   
key_handleoriginal_key_sdsecdataacer   r!   r"   r"   r#   
add_access  s   
zSMBWinRegHive.add_accessc                    s2   | j j| jtjdI d H \| _}|d ur|d S )Nr   )r   r   r  rB   rC   r  )rn   r!   r"   r"   r#   setup)  s
    zSMBWinRegHive.setupc                       t  rt   NotImplementedError)rn   parentkey_namer"   r"   r#   find_subkey.  s   zSMBWinRegHive.find_subkeyc           	         s   || j v r| j | S |d}| j}|D ]}| jj||tjdI dH \}}|dur,|q| |I dH }| j|I dH \}}| j}|D ]}| jj||tjdI dH \}}|dur\|qE|| j |< || j	|< |S )z&Find and return a key by its full pathr   r   N)
r  r   r  r   r   rB   rC   r  r   r  )	rn   r   throwkeynamesr  keynamer!   r  r   r"   r"   r#   find_key2  s*   




zSMBWinRegHive.find_keyc                    s   || j v r| j | S | ||I dH }|du rdS i }tdD ]+}| j||I dH \}}|durC|jdkr9 n|du r?|g   S d||dd< q | jdu rZt|	 | j |< t|	 S )zReturn a list of subkey namesNr   r   T  )
r	  r&  r   r   r   r   replacer  listkeys)rn   r   r#  r  namesr   r   r!   r"   r"   r#   enum_keyQ  s&   



zSMBWinRegHive.enum_keyc                    s   || j v r| j | S g }tdD ]9}| j||I dH \}}}}|dur?t|tr1|jdkr1 nt|tr=|jdkr= n||	|
dd  q| jdu rU|| j |< |S )zReturn a list of value namesr   Nr   r'  r(  T)r  r   r   r   ru   r   r   r   
error_coder   r)  encoder  )rn   rw   valuesr   r   rd   re   r!   r"   r"   r#   list_valuesl  s    



zSMBWinRegHive.list_valuesc                    s   || j v r| j | S |d}|d }|dkr$d}d|dd }n	d|dd }| ||I dH }| jj||ddI dH \}}	}
|
durT|du rO|
dd|
fS | jdu ra||	df| j |< ||	dfS )zReturn a value by its full pathr   r   defaultr(  NTr   )r  r   r   r&  r   r   r  )rn   
value_pathr#  rw   r$  r   r   r  r   r   r!   r"   r"   r#   	get_value  s$   





zSMBWinRegHive.get_valuec                    s   || j v r| j | S | ||I dH }|du rd| j |< dS | j|I dH \}}|dur6|du r4|dS |d dd}| jdu rH|| j |< |S )zReturn the class value of a keyNT
lpClassOutr'  r(  )r
  r&  r   r   r)  r  )rn   r   r#  rw   datar!   resultr"   r"   r#   	get_class  s    




zSMBWinRegHive.get_classc                    s:   | j j|tjtjB tjB dI dH \}}|dur||S )z'Return the security descriptor of a keyr   N)r   r   r   r  r   GROUP)rn   r  sdr!   r"   r"   r#   r    s
   (zSMBWinRegHive.get_sdr   c                    r  )zWalk the registry treer  )rn   pathdepthr"   r"   r#   walk     zSMBWinRegHive.walkc                    r  )z&Search the registry tree for a patternr  )rn   patternin_keysin_valuenames	in_valuesr"   r"   r#   search  r>  zSMBWinRegHive.search)r   TNr   rz   )r   )TTT)r,   r-   r.   __doc__r   strro   r   r  r  r"  r&  r-  r1  r4  r8  r  r=  rC  r"   r"   r"   r#   r     s    




r   c                   @   s   e Zd Zdd ZdS )PERF_OBJECT_TYPEc                 C   sj   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d | _d | _d | _d | _ d | _ d | _ d S rt   )TotalByteLengthDefinitionLengthHeaderLengthObjectNameTitleIndexObjectNameTitleObjectHelpTitleIndexObjectHelpTitleDetailLevelNumCountersDefaultCounterNumInstancesCodePagePerfTimePerfFreqrm   r"   r"   r#   ro     s"   
zPERF_OBJECT_TYPE.__init__N)r,   r-   r.   ro   r"   r"   r"   r#   rF    s    rF  c                    s   |  tjI d H \}}|d urtd|  d S | j|dddI d H \}}}|d ur:tt|j td|  d S t|d d  d S )Nusers error! %szCounter 009Fr   d   )rv   r%   r3   printr   r}   	format_tb__traceback__)rspref_handler!   r   r   r"   r"   r#   preftest  s   r\  c                    s   |  dI d H \}}t| | |I d H \}}t|  tdD ]'}| ||I d H \}}}}|d urF|jdkr> d S tt|j	 t| q#d S )Nz?HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion   r   )
r   rW  r   dumpr   r   r   r}   rX  rY  )rZ  hkr!   r   r   r   rd   re   r"   r"   r#   OpenRegPathTest  s   

r`  c           	         s4  dd l }| tjI d H \}}|d urtd|  d S td|  tdD ](}| ||I d H \}}|d urJ|jdkr> nt| t||j	 t| q&| 
|dI d H \}}|d urdtd|  t| tdD ]+}| ||I d H \}}}}|d ur|jdkr d S t| t||j	 t| qld S )Nr   rU  zuser handle: %s
   r   z-S-1-5-21-3448413973-1765323015-1500960949-500zopenkey failed! %s)r}   rv   r%   r2   rW  r   r   r   rX  rY  r   r   )	rZ  r}   r   r!   r   r   r   rd   re   r"   r"   r#   ConnectRegistryTest  s8   



rb  c                     s6  ddl m}  ddlm} dd l}d}| |}| }| I d H \}}|d ur/t| d S td t	|}|
 I d H \}}|d urJt| d S td |tjI d H \}	}|d uretd|  d S td|	  td	D ])}
||	|
I d H \}}|d ur|jd
kr d S t| t||j t| qod S )Nr   )SMBConnectionFactoryr   z=smb2+ntlm-password://TEST\Administrator:Passw0rd!1@10.10.10.2zSMB Connected!zRRP Connected!rU  zusers_handle %sra  r   )!aiosmb.commons.connection.factoryrc  aiosmb.connectionr   r}   from_urlget_connectionloginrW  RRPr   rv   r%   r2   r   r   r   rX  rY  )rc  r   r}   urlsuconnr   r!   rZ  r   r   r   r"   r"   r#   amain  sB   


rm  __main__r   )=enumntpath	functoolsr  0aiosmb.dcerpc.v5.common.connection.smbdcefactoryr   re  r   aiosmb.dcerpc.v5.connectionr   aiosmb.dcerpc.v5r   aiosmbr   r   (aiosmb.wintypes.dtyp.structures.filetimer	   winacl.dtyp.security_descriptorr
   winacl.dtyp.acer   r   winacl.dtyp.sidr   >aiosmb.wintypes.dtyp.constrcuted_security.security_informationr   aiosmb.dcerpc.v5.rpcrtr   r   r   r   r   r   r   r   
contextlibr   r$   Enumr%   r1   r0   r/   r2   r3   r4   r   IntFlagrB   rO   rf   r   r   rF  r\  r`  rb  rm  r,   asynciorunr"   r"   r"   r#   <module>   sd   (

    TX