o
    àý°j>  ã                
   @   sš  d dl mZ d dl mZ d dlZ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
 d dlmZ d dl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mZ d dlmZ G dd„ dƒZG dd„ dƒZ e!dk�rKej"j#du r„e $d¡ej"ƒe_"e%ej&ƒ ej'ddd�Z(e(j)dddd� e(j)dddd� e(j)dddd� e(j*dd d!�Z+e+j,d"d#d$�Z-e-j)d%ddd&d'� e-j)d(dd)d*d+d,� e-j)d-dd*d*d.d/� e-j)d0dd*d1d2� e+j,d3d4d$�Z,e,j)d%ddd&d'� e,j)d(dd)d*d5d,� e,j)d6dd7d*d8d9d:� e,j)d;d<d=d*d>g d:� e,j)d?dd*d@d'� e+j,dAdBd$�Z.e.j)d%ddd&d'� e.j)d(dd)d*dCd,� e.j)dDdd*dEd'� e.j)d-dd*dFd'� e+j,dGdHd$�Z/e/j)d%ddd&d'� e/j)dIdJddKddLdM� e+j,dNdOd$�Z0e0j)dIdJddKddLdM� e( 1dP¡Z2e2j)dQddRdSdT� e2j)dUddVd� e2j)dWddXd� e2j)dYddZd[dT� e( 1d\¡Z2e2j)d]dd^d_dT� e2j)d`dd^dadT� e2j)dbdcddgdedddfdgdh� e3ej4ƒdik�rÊe( 5¡  e 6di¡ e( 7¡ Z8e 9e8j:e8j;¡ ee8j<ƒ\Z=Z>Z?Z@e8jAdu �rèe@e8_Ae=du �rïdjZ=e8jBdu�røde8_Ce?djk�re>djk�re8jDdu �re8jEd*u �re8jBdu �rd dklFmFZF eFdlƒZ?e e>e?e=e8ƒZGz
eG He@e8jA¡ W dS  eI�yJ ZJ ze KeLeJƒ¡ W Y dZJ[JdS dZJ[Jww dS )mé    )Údivision)Úprint_functionN)Úunpack)Úversion)Ú	transportÚrrpÚscmrÚrpcrt)Úlogger)Úparse_target)ÚERROR_NO_MORE_ITEMS)Úhexdump)ÚSMBConnectionÚSessionError)ÚREAD_CONTROLc                   @   sN   e Zd Zd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 )ÚRemoteOperationsNc                 C   sX   || _ | j  d¡ d| _d| _d | _d | _|| _|| _d| _d| _	d| _
d| _d | _d S )Ni,  ÚRemoteRegistryzncacn_np:445[\pipe\winreg]Fzncacn_np:445[\pipe\svcctl])Ú _RemoteOperations__smbConnectionÚ
setTimeoutÚ_RemoteOperations__serviceNameÚ&_RemoteOperations__stringBindingWinRegÚ_RemoteOperations__rrpÚ_RemoteOperations__regHandleÚ_RemoteOperations__doKerberosÚ_RemoteOperations__kdcHostÚ_RemoteOperations__disabledÚ_RemoteOperations__shouldStopÚ_RemoteOperations__startedÚ&_RemoteOperations__stringBindingSvcCtlÚ_RemoteOperations__scmr)ÚselfÚsmbConnectionÚ
doKerberosÚkdcHost© r$   úƒ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/../../../bin/reg.pyÚ__init__4   s   
zRemoteOperations.__init__c                 C   s   | j S ©N)r   ©r    r$   r$   r%   ÚgetRRPF   s   zRemoteOperations.getRRPc                 C   ó>   t  | j¡}| | j¡ | ¡ | _| j ¡  | j t	j
¡ d S r'   )r   ÚDCERPCTransportFactoryr   Úset_smb_connectionr   Úget_dce_rpcr   ÚconnectÚbindr   ÚMSRPC_UUID_SCMR©r    Úrpcr$   r$   r%   Ú__connectSvcCtlI   ó
   

z RemoteOperations.__connectSvcCtlc                 C   r*   r'   )r   r+   r   r,   r   r-   r   r.   r/   r   ÚMSRPC_UUID_RRPr1   r$   r$   r%   ÚconnectWinRegP   r4   zRemoteOperations.connectWinRegc                 C   s:  t  | j¡}|d | _t  | j| j| j¡}|d | _t  | j| j¡}|d d t jkr:t	 
d| j ¡ d| _d| _n |d d t jkrRt	 d| j ¡ d| _d| _ntd	|d
  ƒ‚| jdu r›t  | j| j¡}|d d dkr„t	 
d| j ¡ d| _t j| j| jdd� t	 
d| j ¡ t  | j| j¡ t d¡ d S d S )NÚ
lpScHandleÚlpServiceHandleÚlpServiceStatusÚdwCurrentStatezService %s is in stopped stateTFzService %s is already runningz%Unknown service state 0x%x - AbortingÚCurrentStateÚlpServiceConfigÚdwStartTypeé   z#Service %s is disabled, enabling ité   ©r=   zStarting service %sé   )r   ÚhROpenSCManagerWr   Ú"_RemoteOperations__scManagerHandleÚhROpenServiceWr   Ú _RemoteOperations__serviceHandleÚhRQueryServiceStatusÚSERVICE_STOPPEDÚloggingÚinfor   r   ÚSERVICE_RUNNINGÚdebugÚ	ExceptionÚhRQueryServiceConfigWr   ÚhRChangeServiceConfigWÚhRStartServiceWÚtimeÚsleep)r    Úansr$   r$   r%   Ú__checkServiceStatusW   s0   


øz%RemoteOperations.__checkServiceStatusc                 C   s   |   ¡  |  ¡  |  ¡  d S r'   )Ú _RemoteOperations__connectSvcCtlÚ%_RemoteOperations__checkServiceStatusr6   r(   r$   r$   r%   ÚenableRegistryv   s   zRemoteOperations.enableRegistryc                 C   sd   | j du rt d| j ¡ t | j| jtj¡ | j	du r0t d| j ¡ tj
| j| jdd� d S d S )NTzStopping service %sz+Restoring the disabled state for service %sr>   r@   )r   rH   rI   r   r   ÚhRControlServicer   rE   ÚSERVICE_CONTROL_STOPr   rN   r(   r$   r$   r%   Ú	__restore{   s   

þzRemoteOperations.__restorec                 C   s8   |   ¡  | jd ur| j ¡  | jd ur| j ¡  d S d S r'   )Ú_RemoteOperations__restorer   Ú
disconnectr   r(   r$   r$   r%   Úfinish„   s   


ÿzRemoteOperations.finishr'   )Ú__name__Ú
__module__Ú__qualname__r&   r)   rT   r6   rU   rV   rZ   r\   r$   r$   r$   r%   r   3   s    
	r   c                   @   sp   e Z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edd„ ƒZdS )Ú
RegHandlerc              
   C   s”   || _ || _|| _|| _|j ¡ | _d| _d| _|j	| _
|j| _|j| _d | _d | _dddddddd	d
dœ	| _|jd urH|j d¡\| _| _d S d S )NÚ ÚREG_NONEÚREG_SZÚREG_EXPAND_SZÚ
REG_BINARYÚ	REG_DWORDÚREG_DWORD_BIG_ENDIANÚREG_LINKÚREG_MULTI_SZÚ	REG_QWORD)	r   rA   é   r?   r>   é   é   é   é   ú:)Ú_RegHandler__usernameÚ_RegHandler__passwordÚ_RegHandler__domainÚ_RegHandler__optionsÚactionÚupperÚ_RegHandler__actionÚ_RegHandler__lmhashÚ_RegHandler__nthashÚaesKeyÚ_RegHandler__aesKeyÚkÚ_RegHandler__doKerberosÚdc_ipÚ_RegHandler__kdcHostÚ_RegHandler__smbConnectionÚ_RegHandler__remoteOpsÚ_RegHandler__regValuesÚhashesÚsplit)r    ÚusernameÚpasswordÚdomainÚoptionsr$   r$   r%   r&   �   s$   
ÿ
ÿzRegHandler.__init__c              	   C   sj   t ||t| jjƒd�| _| jr$| j | j| j| j	| j
| j| j| j¡ d S | j | j| j| j	| j
| j¡ d S )N)Ú	sess_port)r   Úintrt   Úportr€   r}   ÚkerberosLoginrq   rr   rs   rx   ry   r{   r   Úlogin)r    Ú
remoteNameÚ
remoteHostr$   r$   r%   r.   ¢   s   ÿ"zRegHandler.connectc              
   C   sœ  |   ||¡ t| j| j| jƒ| _z| j ¡  W n' ty> } zt 	t
|ƒ¡ t d¡ |  ¡  | j ¡  W Y d }~nd }~ww z„z[| j ¡ }| jdkrT|  || jj¡ nF| jdkre|  || jj| jj¡ n5| jdkrs|  || jj¡ n'| jdkr�|  || jj¡ n| jdkr’dD ]}|  ||¡ qˆnt d| j ¡ W n ttfy¶ } zt t
|ƒ¡ W Y d }~nd }~ww W | jrÂ| j ¡  d S d S | jrÍ| j ¡  w w )	NzICannot check RemoteRegistry status. Triggering start trough named pipe...ÚQUERYÚADDÚDELETEÚSAVEÚBACKUP)zHKLM\SAMzHKLM\SYSTEMzHKLM\SECURITYzMethod %s not implemented yet!)r.   r   r€   r}   r   r�   rV   rL   rH   rK   ÚstrÚwarningÚtriggerWinRegr6   r)   rw   Úqueryrt   ÚkeyNameÚaddÚ
persistentÚdeleteÚsaveÚerrorÚKeyboardInterruptÚcriticalr\   )r    rŽ   r�   ÚeÚdceÚhiver$   r$   r%   Úrun«   sJ   
€ü





ÿ€€ý€
ÿÿzRegHandler.runc                 C   sH   | j  d¡}z| j j|ddddd� W n	 ty   Y nw t d¡ d S )NzIPC$z\winregiŸ é@   é€   )ÚcreationOptionÚfileAttributesrA   )r€   ÚconnectTreeÚopenFiler   rP   rQ   )r    Útidr$   r$   r%   r—   Ï   s   þzRegHandler.triggerWinRegc              
   C   s°   |   ||¡\}}d| jj|f }t d| ¡ z$tj|||tjtjB tj	d�}t 
||d |¡ t d||f ¡ W d S  tyW } zt d||f ¡ W Y d }~d S d }~ww )Nz
%s\%s.savezMDumping %s, be patient it can take a while for large hives (e.g. HKLM\SYSTEM)©Ú	dwOptionsÚ
samDesiredÚ	phkResultzSaved %s to %szCouldn't save %s: %s)Ú_RegHandler__strip_root_keyrt   Ú
outputPathrH   rK   r   ÚhBaseRegOpenKeyÚREG_OPTION_BACKUP_RESTOREÚREG_OPTION_OPEN_LINKÚKEY_READÚhBaseRegSaveKeyrI   rL   rž   )r    r¢   r™   ÚhRootKeyÚsubKeyÚoutputFileNameÚans2r¡   r$   r$   r%   r�   Ú   s    €ÿzRegHandler.savec           	      C   sp  |   ||¡\}}tj|||tjtjB tjB d�}| jjrGt|ƒ t 	||d | jj¡}td| jj d | j
 |d d¡ d t|d ƒƒ d S | jjrnt|ƒ t 	||d d¡}td| j
 |d d¡ d t|d ƒƒ d S | jjr€|  ||d	 |d d¡ d S t|ƒ |  ||d ¡ d}	 zt ||d |¡}t|d	 |d d d…  ƒ |d7 }W n
 ty¶   Y d S w q�)N©r®   r¯   ú	r   ÚKEY_NOT_FOUNDrA   ra   z	(Default)	ú\TÚ	lpNameOutéÿÿÿÿ)r°   r   r²   ÚMAXIMUM_ALLOWEDÚKEY_ENUMERATE_SUB_KEYSÚKEY_QUERY_VALUErt   ÚvÚprintÚhBaseRegQueryValuer‚   Úgetr•   ÚveÚsÚ*_RegHandler__print_all_subkeys_and_entriesÚ_RegHandler__print_key_valuesÚhBaseRegEnumKeyrL   )	r    r¢   r™   r·   r¸   rº   ÚvalueÚiÚkeyr$   r$   r%   r˜   å   s4   
ÿ8,ÿûzRegHandler.queryc                 C   s8  |   ||¡\}}| jjd u rb|}d | d¡d d… ¡}tj|||ttjB tj	B d�}d}|du r4d}nt
dƒ tj||||ttjB tj	B d�}	|	d	 dkrVt
d
| ƒ d S t
d|	d	 |f ƒ d S tj|||ttjB tj	B d�}tt| jjd ƒ}
|
d u s„| jj d¡sŒtd| jj ƒ‚|
tjkr£d | jj¡}|d }| dd¡}nBt| jjƒdkr±| jjd nd}|
tjtjtjtjtjfv rÆt|ƒ}n|
tjkrßt|ƒ}||d@ 7 }t | |d¡¡}n|d }|}t ||d | jj|
|¡}	|	d	 dk�r	t
d|| jj| jj|f ƒ d S t
d|	d	 || jj| jj|f ƒ d S )Nr¾   rÀ   r»   rA   Tr   zD[!] The created key is volatile and will not remain after a reboot. r¬   Ú	ErrorCodezSuccessfully set subkey %sz%Error 0x%08x while creating subkey %sÚREG_zError parsing value type %sú z  z
		ra   Ú0r¯   z.Successfully set
	key	%s\%s
	type	%s
	value	%sz8Error 0x%08x while setting
	key	%s\%s
	type	%s
	value	%s)r°   rt   rÄ   Újoinr„   r   r²   r   ÚKEY_SET_VALUEÚKEY_CREATE_SUB_KEYrÅ   ÚhBaseRegCreateKeyÚgetattrÚvtÚ
startswithrL   ri   ÚvdÚreplaceÚlenrf   rg   ÚREG_DWORD_LITTLE_ENDIANrj   ÚREG_QWORD_LITTLE_ENDIANrŠ   re   ÚbinasciiÚa2b_hexÚljustÚhBaseRegSetValue)r    r¢   r™   r›   r·   r¸   ÚsubKeyCreaterº   ÚdwOptionÚans3ÚdwTyperÛ   Ú	valueDataÚvalueDataToPrintÚbin_value_lenr$   r$   r%   rš     sl   
ÿþ
ÿÿ
ÿ
 þ

ÿÿÿzRegHandler.addc                 C   sx  |   ||¡\}}| jjd u rŽ| jjsŽ| jjsŽ|}d | d¡d d… ¡}tj|||t	tj
B tjB d�}z	t |||¡}W n7 tjy\ } z|jdkrWtd| ƒ W Y d }~d S ‚ d }~w tys } zt d¡ W Y d }~d S d }~ww |d dkr‚td	| ƒ d S td
|d |f ƒ d S | jjrÍtj|||t	tj
B tjB d�}t ||d | jj¡}|d dkr¾td|| jjf ƒ d S td|d || jjf ƒ d S | jj�r	tj|||t	tj
B tjB d�}t ||d d¡}|d dkrútd|df ƒ d S td|d || jjf ƒ d S | jj�r¸tj|||tjtjB d�}d}	g }
	 zt ||d |	¡}|d d d… }|
 |¡ |	d7 }	W n! tj�y] } z| ¡ tk�rSW Y d }~nW Y d }~nd }~ww �q tj|||tjtjB d�}|
D ]J}z't ||d |¡}|d dk�r‹td||f ƒ ntd|d ||f ƒ W �qo t�y· } ztdt|ƒ||f ƒ W Y d }~�qod }~ww d S d S )Nr¾   rÀ   r»   rl   zMCannot delete key %s. Possibly it contains subkeys or insufficient privilegesz+Unhandled exception while hBaseRegDeleteKeyrÐ   r   zSuccessfully deleted subkey %sz%Error 0x%08x while deleting subkey %sr¯   zSuccessfully deleted key %s\%sz%Error 0x%08x while deleting key %s\%sra   z Successfully deleted value %s\%sÚDefaultz'Error 0x%08x while deleting value %s\%sTÚlpValueNameOutrA   z'Error 0x%08x in deletion of value %s\%sz-Unhandled error %s in deletion of value %s\%s)r°   rt   rÄ   ÚvarÈ   rÔ   r„   r   r²   r   rÕ   rÖ   ÚhBaseRegDeleteKeyr	   ÚDCERPCExceptionÚ
error_coderÅ   rL   rH   rž   ÚhBaseRegDeleteValuerÁ   rÂ   ÚhBaseRegEnumValueÚappendÚDCERPCSessionErrorÚget_error_coder   r•   )r    r¢   r™   r·   r¸   ÚsubKeyDeleterº   ræ   r¡   rÎ   Ú
allSubKeysÚlp_value_nameÚans4Úans5r$   r$   r%   rœ   R  sÈ   
ÿÿ
€
€þ
ÿÿ
ÿÿÿÿ

ÿ
ÿÿÿ


ÿ
ÿ€ÿú


ÿ
ÿ
ÿ
ÿ€
ÿ€ÿâzRegHandler.deletec                 C   sÂ   z|  d¡d }d |  d¡dd … ¡}W n ty"   td| ƒ‚w | ¡ dkr/t |¡}n*| ¡ dkr;t |¡}n| ¡ dkrGt |¡}n| ¡ dkrSt |¡}ntd	| ƒ‚|d
 }||fS )Nr¾   r   rA   zError parsing keyName %sÚHKLMÚHKCUÚHKUÚHKCRzInvalid root key %s ÚphKey)	r„   rÔ   rL   rv   r   ÚhOpenLocalMachineÚhOpenCurrentUserÚ
hOpenUsersÚhOpenClassesRoot)r    r¢   r™   ÚrootKeyr¸   rR   r·   r$   r$   r%   Ú__strip_root_key»  s"   ÿzRegHandler.__strip_root_keyc           	   
   C   sÌ   d}	 zAt  |||¡}|d d d… }t|ƒdkrd}|d }d |d ¡}td	| d	 | j |d
¡ d	 dd� |  ||¡ |d7 }W n  t jyd } z| 	¡ t
krZW Y d }~d S W Y d }~nd }~ww q)Nr   Trì   rÀ   z	(Default)ÚlpTypeó    ÚlpDatar¼   r½   ú )ÚendrA   )r   rò   rÝ   rÔ   rÅ   r‚   rÇ   Ú_RegHandler__parse_lp_datarô   rõ   r   )	r    r2   Ú
keyHandlerrÎ   rù   rø   Úlp_typeÚlp_datar¡   r$   r$   r%   Ú__print_key_valuesÏ  s&   &ÿ€ÿõzRegHandler.__print_key_valuesc           	   
   C   sR  d}	 z>t  |||¡}|d7 }t j|||d t jt jB d�}||d d d…  d }t|ƒ |  ||d ¡ |  |||d d¡ W nf t jya } z| 	¡ t
krWW Y d }~d S W Y d }~nKd }~w tjy§ } z:t|ƒ d	¡dkr…t d
|d d d…  ¡ W Y d }~qt|ƒ d¡dkr¢t d|d d d…  ¡ W Y d }~d S ‚ d }~ww q)Nr   TrA   r¿   r»   rÀ   r¾   r¯   Úaccess_deniedz%Cannot access subkey %s, bypassing itÚrpc_x_bad_stub_dataz6Fault call, cannot retrieve value for %s, bypassing it)r   rÌ   r²   rÁ   rÂ   rÅ   rË   rÊ   rô   rõ   r   r	   rï   r•   ÚfindrH   rž   )	r    r2   r™   r  ÚindexÚsubkeyrR   Ú
newKeyNamer¡   r$   r$   r%   Ú__print_all_subkeys_and_entriesà  s8   
ÿÿ€€ùóz*RegHandler.__print_all_subkeys_and_entriesc              
   C   sœ  z­| t jks| t jkr(t|ƒtu rtdƒ W d S td| d¡d d…  ƒ W d S | t jkr9tdƒ t|dƒ W d S | t j	krLtdt
d|ƒd	  ƒ W d S | t jkr_tdt
d
|ƒd	  ƒ W d S | t jkrŒzt|ƒdkrutdƒ t|dƒ ntdƒ W W d S W W d S    tdƒ Y W d S | t jkr¡td| d¡d d…  ƒ W d S td|  ƒ t|ƒ W d S  tyÍ } zt dt|ƒ ¡ tdƒ W Y d }~d S d }~ww )NÚNULLz%szutf-16lerÀ   ra   r¼   z0x%xz<Lr   z<QrA   z NULLéþÿÿÿzUnknown Type 0x%x!z+Exception thrown when printing reg value %szInvalid data)r   rc   rd   ÚtyperŠ   rÅ   Údecodere   r   rf   r   rj   rb   rÝ   ri   rL   rH   rK   r•   )Ú	valueTyperè   r¡   r$   r$   r%   Ú__parse_lp_dataø  s>    



þ
 €ýzRegHandler.__parse_lp_dataN)r]   r^   r_   r&   r.   r¤   r—   r�   r˜   rš   rœ   r°   rË   rÊ   Ústaticmethodr  r$   r$   r$   r%   r`   Œ   s    	$Oir`   Ú__main__Úutf8Tz%Windows Register manipulation script.)Úadd_helpÚdescriptionÚtargetÚstorez6[[domain/]username[:password]@]<targetName or address>)ru   Úhelpz-debugÚ
store_truezTurn DEBUG output ONz-tsz&Adds timestamp to every logging outputÚactionsru   )r$  Údestr˜   zqReturns a list of the next tier of subkeys and entries that are located under a specified subkey in the registry.)r$  z-keyNamez”Specifies the full path of the subkey. The keyName must include a valid root key. Valid root keys for the local computer are: HKLM, HKU, HKCU, HKCR.)ru   Úrequiredr$  z-vÚ	VALUENAMEFzoSpecifies the registry value name that is to be queried. If omitted, all value names for keyName are returned. )ru   Úmetavarr(  r$  z-vez1Queries for the default value or empty value name)ru   Údefaultr(  r$  z-sz;Specifies to query all subkeys and value names recursively.)ru   r+  r$  rš   z*Adds a new subkey or entry to the registryz[Specifies the registry value name that is to be set. Set to "" to write the (Default) valuez-vtÚ	VALUETYPEzÇSpecifies the registry type name that is to be set. Default is REG_SZ. Valid types are: REG_NONE, REG_SZ, REG_EXPAND_SZ, REG_BINARY, REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_LINK, REG_MULTI_SZ, REG_QWORDrc   )ru   r*  r(  r$  r+  z-vdró   Ú	VALUEDATAz�Specifies the registry value data that is to be set. In case of adding a REG_MULTI_SZ value, set this option once for each line you want to add.z--persistentzjSpecify that the created key is intended to be persistent through reboot. Default is volatile key creationrœ   z-Deletes a subkey or entries from the registryz8Specifies the registry value name that is to be deleted.z-vaz!Delete all values under this key.z/Delete the value of empty value name (Default).r�   z[Saves a copy of specified subkeys, entries, and values of the registry in a specified file.z-or±   z\\192.168.0.2\sharezCOutput UNC path the target system must export the registry saves to)r'  ru   r*  r(  r$  ÚbackupzW(special command) Backs up HKLM\SAM, HKLM\SYSTEM and HKLM\SECURITY to a specified file.Úauthenticationz-hasheszLMHASH:NTHASHz$NTLM hashes, format is LMHASH:NTHASH)ru   r*  r$  z-no-passz&don't ask for password (useful for -k)z-kzÁUse Kerberos authentication. Grabs credentials from ccache file (KRB5CCNAME) based on target parameters. If valid credentials cannot be found, it will use the ones specified in the command linez-aesKeyzhex keyz<AES key to use for Kerberos Authentication (128 or 256 bits)Ú
connectionz-dc-ipz
ip addressztIP Address of the domain controller. If omitted it will use the domain part (FQDN) specified in the target parameterz
-target-ipz£IP Address of the target machine. If omitted it will use whatever was specified as target. This is useful when target is the NetBIOS name and you cannot resolve itz-portÚ139Ú445ú?zdestination portz)Destination port to connect to SMB Server)ÚchoicesÚnargsr+  r*  r$  rA   ra   )Úgetpassz	Password:)MÚ
__future__r   r   ÚargparseÚcodecsrH   ÚsysrP   rà   Ústructr   Úimpacketr   Úimpacket.dcerpc.v5r   r   r   r	   Úimpacket.examplesr
   Úimpacket.examples.utilsr   Úimpacket.system_errorsr   Úimpacket.structurer   Úimpacket.smbconnectionr   r   Úimpacket.dcerpc.v5.dtypesr   r   r`   r]   ÚstdoutÚencodingÚ	getwriterrÅ   ÚBANNERÚArgumentParserÚparserÚadd_argumentÚadd_subparsersÚ
subparsersÚ
add_parserÚquery_parserÚdelete_parserÚsave_parserÚbackup_parserÚadd_argument_groupÚgrouprÝ   ÚargvÚ
print_helpÚexitÚ
parse_argsrˆ   ÚinitÚtsrK   r"  r‡   r…   r†   rŽ   Ú	target_iprz   r|   rƒ   Úno_passr6  Ú
regHandlerr¤   rL   r¡   rž   r•   r$   r$   r$   r%   Ú<module>   sÚ   Y   


ÿ
ÿýþ
ÿ
ÿÿ
ÿ
ÿ

ÿ
ÿÿ

8€ý �î