o
    àý°jp  ã                   @   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	Z	d dl
mZ d dlmZ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mZ d d	lmZmZmZm Z 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/m0Z0m1Z1m2Z2 d dl3m4Z4 de5e	 	¡ ƒdd…  Z6ej7j8Z9G dd„ dƒZ:G dd„ dej;ƒZ<G dd„ de<ƒZ=G dd„ de>ƒZ?dd„ Z@eAdk�rÕeBejCƒ ejDddd�ZEeEjFdd d!d"� eEjFd#d d$d%d&� eEjFd'd(d)d*d&� eEjFd+d(d,d"� eEjFd-d(d.d"� eEjFd/d d0e9 d"� eEjFd1g d2¢d3d4d5d6� eEjFd7d d8d9d:� eEjFd;d d<d<d=gd>d?� eEjFd@dAdBdCdD� eEjFdEd(d)dFd&� eE GdG¡ZHeHjFdHd dIdJd:� eHjFdKd(dLd"� eHjFdMd(dNd"� eHjFdOd dPdQd:� eHjFdRd dSdTd:� eHjFdUd dVdWd:� eHjFdXd dYd"� eIejJƒdZk�r”eE K¡  e LdZ¡ eE M¡ ZNe+ OeNjPeNjQ¡ eNjRdu�rªeNjRZ9ne9du �r±d[Z9dB SeNjT¡dBk�rÊeNjUdu �rÊe Vd\¡ e LdZ¡ eNjW�rÞeNjTdBk�rÞe Vd]¡ e LdZ¡ eNjXdu�rzeNjX Yd^¡\ZZZ[e \e]eZƒe]e[ƒ¡ W n e>�y   e Vd_¡ e LdZ¡ Y nw e-eNj^ƒ\Z_Z`ZaZbzŠeNjcdu�r5e@eNjcƒ\Z_Z`Zae Qd`ede_ƒede`ƒedeaƒf ¡ e_du �r<daZ_eNjedu�rNe4 feNjee`e_eN¡ deN_geadak�rte`dak�rteNjhdu �rteNjid)u �rteNjjdu �rtd dblkmkZk ekdcƒZaeNjjdu�r}deN_ge:dB SeNjT¡e`eae_eNjheNjjeNjleNjUeNjgeNjmeNjneNjoƒZpep qebeNjW¡ W n- e>erf�yÍ Zs ze t¡ juejvk�r¼d dlwZwew x¡  e Ve5esƒ¡ W Y dZs[sndZs[sww e Ld ¡ dS dS )dé    )Údivision)Úprint_functionN)Ú	b64encode)ÚPY2ÚPY3)Úversion)ÚIID_IDispatchÚstring_to_binÚ	IDispatchÚ
DISPPARAMSÚDISPATCH_PROPERTYGETÚVARIANTÚVARENUMÚDISPATCH_METHOD)ÚDCOMConnectionÚ
COMVERSION)ÚOBJREFÚFLAGS_OBJREF_CUSTOMÚOBJREF_CUSTOMÚOBJREF_HANDLERÚOBJREF_EXTENDEDÚOBJREF_STANDARDÚFLAGS_OBJREF_HANDLERÚFLAGS_OBJREF_STANDARDÚFLAGS_OBJREF_EXTENDEDÚIRemUnknown2Ú	INTERFACE)ÚNULL)Úlogger)Úparse_target)ÚSMBConnectionÚSMB_DIALECTÚSMB2_DIALECT_002ÚSMB2_DIALECT_21)ÚKeytabÚ__é   c                   @   s,   e Zd Z		d
dd„Zdd„ Zddd	„ZdS )ÚDCOMEXECÚ NFc                 C   sv   || _ || _|| _|| _d| _d| _|| _|| _|| _|	| _	|
| _
|| _|| _d | _|d ur9| d¡\| _| _d S d S )Nr(   ú:)Ú_DCOMEXEC__commandÚ_DCOMEXEC__usernameÚ_DCOMEXEC__passwordÚ_DCOMEXEC__domainÚ_DCOMEXEC__lmhashÚ_DCOMEXEC__nthashÚ_DCOMEXEC__aesKeyÚ_DCOMEXEC__shareÚ_DCOMEXEC__noOutputÚ_DCOMEXEC__doKerberosÚ_DCOMEXEC__kdcHostÚ_DCOMEXEC__dcomObjectÚ_DCOMEXEC__shell_typeÚshellÚsplit)ÚselfÚcommandÚusernameÚpasswordÚdomainÚhashesÚaesKeyÚshareÚnoOutputÚ
doKerberosÚkdcHostÚ
dcomObjectÚ
shell_type© rF   úˆ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/../../../bin/dcomexec.pyÚ__init__D   s"   ÿzDCOMEXEC.__init__c              
   C   sÂ   t d |¡ƒd }d }|tkrtd |¡ƒ}n+|tkr#td |¡ƒ}n|tkr/td |¡ƒ}n|tkr;t	d |¡ƒ}nt
 d| ¡ tt| ¡ d | ¡ |d d |d d |d d | ¡ d�ƒS )Nó    ÚflagszUnknown OBJREF Type! 0x%xÚstdÚipidÚoxid)rM   ÚoidÚtarget)r   Újoinr   r   r   r   r   r   r   r   ÚloggingÚerrorr   r   Úget_cinstanceÚget_ipidRemUnknownÚ
get_target)r9   Ú	interfaceÚrespÚ
objRefTypeÚobjRefrF   rF   rG   ÚgetInterfaceW   s"   þÿzDCOMEXEC.getInterfacec                 C   s   | j du r]|du r]t||ƒ}| jdu r"| | j| j| j| j| j¡ n|j	| j| j| j| j| j| j
| jd� | ¡ }|tkrCt d¡ n|tkrMt d¡ n|tkrWt d¡ nt d¡ nd }t|| j| j| j| j| j| j
d| j| jd�
}�zztd dƒ}t|d	< t|d
< d|d< d|d< | jdkrÔ| tdƒt¡}t|ƒ}| d¡}	| |	d dt|dg g ¡}	t|  ||	d d d d ¡ƒ}
|
 d¡}	|
 |	d dt|dg g ¡}	d }nb| jdkrÿ| tdƒt¡}t|ƒ}| d¡}	| |	d dt|dg g ¡}	| d¡d }n7| jdk�r+| tdƒt¡}t|ƒ}| d¡}	| |	d dt|dg g ¡}	| d¡d }nt d| j ¡ W d S t|  ||	d d d d ¡ƒ}| jdk�r†| d¡}	| |	d dt|dg g ¡}	t|  ||	d d d d ¡ƒ}| d¡d }t | j!||f||f|| j"|ƒ| _#n9| d¡}	| |	d dt|dg g ¡}	t|  ||	d d d d ¡ƒ}| d ¡d }t$| j!||f||f|| j"|ƒ| _#| j%d!k�rêz	| j# &| j%¡ W n t'�yÜ   |�sÚ‚ Y nw | j#d u�ré| j# (d"¡ n| j# )¡  W nP t*t+f�y@ } zAt ,¡ j-tj.k�rdd l/}| 0¡  | j#d u�r| j# (d"¡ t 1t2|ƒ¡ |d u�r(| 3¡  | 4¡  t5j6 7¡  t5 8d#¡ W Y d }~nd }~ww |d u�rJ| 3¡  | 4¡  d S )$NF)rC   zSMBv1 dialect usedzSMBv2.0 dialect usedzSMBv2.1 dialect usedzSMBv3.0 dialect usedT)ÚoxidResolverrB   rC   ÚrgvargÚrgdispidNamedArgsr   ÚcArgsÚ
cNamedArgsÚShellWindowsz$9BA05972-F6A8-11CF-A442-00A0C90A8F39)ÚItemé	  Ú
pVarResultÚ	_varUnionÚpdispValÚabData)ÚDocumentÚShellBrowserWindowz$C08AFD90-F2A1-11D1-8455-00A0C91F3880)ÚQuitÚMMC20z$49B2791A-B1AE-4C90-9B8E-E860BA07F889zInvalid object %s)Ú
ActiveView)ÚExecuteShellCommand)ÚApplication)ÚShellExecuteú r(   é   )9r2   r    r3   Úloginr+   r,   r-   r.   r/   ÚkerberosLoginr0   r4   Ú
getDialectr!   rQ   Úinfor"   r#   r   r   r   r5   ÚCoCreateInstanceExr	   r   r
   ÚGetIDsOfNamesÚInvoker   rZ   r   ÚfatalÚRemoteShellMMC20r1   r6   r7   ÚRemoteShellr*   ÚonecmdÚ	TypeErrorÚdo_exitÚcmdloopÚ	ExceptionÚKeyboardInterruptÚ	getLoggerÚlevelÚDEBUGÚ	tracebackÚ	print_excrR   ÚstrÚlogoffÚ
disconnectÚsysÚstdoutÚflushÚexit)r9   ÚaddrÚsilentCommandÚsmbConnectionÚdialectÚdcomÚ
dispParamsÚ
iInterfaceÚiMMCrW   ÚiItemÚpQuitÚ	iDocumentÚiActiveViewÚpExecuteShellCommandÚer„   rF   rF   rG   Úrunk   s´   

ÿÿ


 



 
 "
  ÿÿ€
€

€õ
zDCOMEXEC.run)r(   r(   r(   r(   NNNFFNNN©F)Ú__name__Ú
__module__Ú__qualname__rH   rZ   r›   rF   rF   rF   rG   r'   C   s    
ÿr'   c                   @   s€   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d„ Zdd„ Zdd„ Zdd„ Zd!dd„Zdd„ ZdS )"rz   Fc                 C   sŒ   t j | ¡ || _dt | _d| _d| _|| _d| _	|| _
|| _|| _|| _d| _d| _d| _| jd urA| j d¡ |  d¡ d S d	| _d S )
Nú\r(   zcmd.exez@powershell.exe -NoP -NoL -sta -NonI -W Hidden -Exec Bypass -Enc zC:\windows\system32Fzg[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commandsi † T)ÚcmdÚCmdrH   Ú_shareÚOUTPUT_FILENAMEÚ_outputÚ_RemoteShell__outputBufferÚ_shellÚ_RemoteShell__shell_typeÚ_RemoteShell__pwshÚ_RemoteShell__quitÚ_executeShellCommandÚ_RemoteShell__transferClientÚ_silentCommandÚ_pwdÚ	_noOutputÚintroÚ
setTimeoutÚdo_cd)r9   r@   ÚquitÚexecuteShellCommandr�   rE   rŽ   rF   rF   rG   rH   Ñ   s$   


zRemoteShell.__init__c                 C   s   t  |¡ d S ©N)ÚosÚsystem©r9   ÚsrF   rF   rG   Údo_shellè   s   zRemoteShell.do_shellc                 C   s   t dƒ d S )Na‹  
 lcd {path}                 - changes the current local directory to {path}
 exit                       - terminates the server process (and this session)
 lput {src_file, dst_path}   - uploads a local file to the dst_path (dst_path = default current directory)
 lget {file}                 - downloads pathname to the current local dir
 ! {cmd}                    - executes a local shell cmd
)Úprint©r9   ÚlinerF   rF   rG   Údo_helpë   s   zRemoteShell.do_helpc              
   C   s^   |dkrt t ¡ ƒ d S zt |¡ W d S  ty. } zt t|ƒ¡ W Y d }~d S d }~ww ©Nr(   )r»   r¶   ÚgetcwdÚchdirr   rQ   rR   r†   )r9   r¹   rš   rF   rF   rG   Údo_lcdô   s   €ÿzRemoteShell.do_lcdc           	   
   C   s¼   z>dd l }| | | j|¡¡}| |¡\}}| |¡}t|dƒ}t d||f ¡ | j	 
|d d… d ||j¡ | ¡  W d S  ty] } zt t|ƒ¡ t |¡ W Y d }~d S d }~ww )Nr   ÚwbzDownloading %s\%séÿÿÿÿú$)ÚntpathÚnormpathrP   r®   Ú
splitdriveÚbasenameÚopenrQ   rt   r¬   ÚgetFileÚwriteÚcloser   rR   r†   r¶   Úremove)	r9   Úsrc_pathrÆ   ÚnewPathÚdriveÚtailÚfilenameÚfhrš   rF   rF   rG   Údo_lgetý   s   


€ýzRemoteShell.do_lgetc              
   C   s  zf|  d¡}t|ƒdkr|d }|d }nt|ƒdkr!|d }d}tj |¡}t|dƒ}| dd¡}dd l}| | | j	|¡|¡}| 
|¡\}	}
t d||f ¡ | j |	d d	… d
 |
|j¡ | ¡  W d S  ty€ } zt t|ƒ¡ W Y d }~d S d }~ww )Nro   rp   r   r(   Úrbú/r    zUploading %s to %srÄ   rÅ   )r8   Úlenr¶   ÚpathrÉ   rÊ   ÚreplacerÆ   rP   r®   rÈ   rQ   rt   r¬   ÚputFileÚreadrÍ   r   Úcriticalr†   )r9   r¹   ÚparamsrÏ   Údst_pathÚsrc_filerÔ   rÆ   ÚpathnamerÑ   rÒ   rš   rF   rF   rG   Údo_lput  s,   


€þzRemoteShell.do_lputc              	   C   sP   t d dƒ}t|d< t|d< d|d< d|d< | jd  | jd dt|dg g ¡ d	S )
NFr\   r]   r   r^   r_   rp   rb   T)r   r   rª   rw   r   )r9   r¹   r’   rF   rF   rG   r}   #  s   
ÿzRemoteShell.do_exitc                 C   s   t ƒ  |  |¡S rµ   )r»   r}   r¸   rF   rF   rG   Údo_EOF.  s   
zRemoteShell.do_EOFc                 C   s   dS )NFrF   ©r9   rF   rF   rG   Ú	emptyline2  s   zRemoteShell.emptylinec                 C   sº   |   d| ¡ t| j d¡ƒdkrt| jƒ d| _d S tr.t t | j	| 
tjj¡¡¡| _	nt t | j	|¡¡| _	|   d¡ | j d¡| _	| j	d | _| jdkrXd| j d | _d| _d S )	Núcd ú
r   r(   ú>Ú
powershellúPS ro   )Úexecute_remoterØ   r¦   Ústripr»   r   rÆ   rÇ   rP   r®   Údecoder‰   ÚstdinÚencodingÚpromptr¨   r¸   rF   rF   rG   r²   5  s   

"


zRemoteShell.do_cdc                 C   s²   t |ƒdkrL|d dkrL|  |¡ t | j d¡ƒdkr%t| jƒ d| _d S || _|  d¡ | j d¡| _| jd | _| jd	krGd
| j d | _d| _d S |dkrW|  |¡ d S d S )Né   rp   r)   rç   r   r(   ræ   rè   ré   rê   ro   )	rØ   rë   r¦   rì   r»   r®   rð   r¨   Ú	send_datar¼   rF   rF   rG   ÚdefaultF  s   





ÿzRemoteShell.defaultc              
      sÐ   ‡ fdd„}ˆ j du rdˆ _d S 	 zˆ j ˆ jˆ j|¡ W n? ty[ } z2t|ƒ d¡dkr4t	 
d¡ nt|ƒ d¡dkrQt d	¡ ˆ j ¡  ˆ  ¡ W  Y d }~S W Y d }~nd }~ww qˆ j ˆ jˆ j¡ d S )
Nc              	      sR   zˆ  j |  t¡7  _ W d S  ty(   t d¡ ˆ  j | jtdd�7  _ Y d S w )NzáDecoding error detected, consider running chcp.com at the target,
map the result with https://docs.python.org/3/library/codecs.html#standard-encodings
and then execute dcomexec.py again with -codec and the corresponding codecrÚ   )Úerrors)r¦   rí   ÚCODECÚUnicodeDecodeErrorrQ   rR   )Údatarä   rF   rG   Úoutput_callback]  s   
üz/RemoteShell.get_output.<locals>.output_callbackTr(   ÚSTATUS_SHARING_VIOLATIONr   rp   ÚBrokenz(Connection broken, trying to recreate it)r¯   r¦   r¬   rË   r£   r¥   r   r†   ÚfindÚtimeÚsleeprQ   ÚdebugÚ	reconnectÚ
get_outputÚ
deleteFile)r9   rø   rš   rF   rä   rG   r   \  s(   
	


€÷üzRemoteShell.get_outputr¡   c           
   	   C   sp  | j du r| ¡ d | _d | ¡ dd … ¡}n|dkr,d| }| jt| d¡ƒ ¡  }d| }| jd	u rC|d
d| j	  | j
 d 7 }t d| ¡ td d	ƒ}t|d< d|d< d|d< td d	ƒ}d|d< tj|d< tj|d d< | j|d d d< td d	ƒ}d|d< tj|d< tj|d d< tr™||d d d< n| tjj¡|d d d< td d	ƒ}d|d< tj|d< tj|d d< | j|d d d< td d	ƒ}d|d< tj|d< tj|d d< d|d d d< td d	ƒ}	d|	d< tj|	d< tj|	d d< d|	d d d< |d  |	¡ |d  |¡ |d  |¡ |d  |¡ |d  |¡ | jd  | jd dt|dg g ¡ |  ¡  d S )NTr   ro   rp   ré   ú'$ProgressPreference="SilentlyContinue";úutf-16leú/Q /c Fú 1> ú\\127.0.0.1\%sú 2>&1zExecuting: %sr]   r&   r^   r_   ÚclSizeÚvtrd   ÚtagÚbstrValÚasDatar(   Ú0r\   rb   )r­   r8   r§   rP   r©   r   Úencoderí   r¯   r£   r¥   rQ   rþ   r   r   r   r   ÚVT_BSTRr   r‰   rî   rï   r®   Úappendr«   rw   r   r   )
r9   r÷   rE   r:   r’   Úarg0Úarg1Úarg2Úarg3Úarg4rF   rF   rG   rë   z  sd   












ÿzRemoteShell.execute_remotec                 C   s"   |   || j¡ t| jƒ d| _d S r¿   )rë   r¨   r»   r¦   )r9   r÷   rF   rF   rG   rò   ¹  s   

zRemoteShell.send_dataNrœ   ©r¡   )r�   rž   rŸ   rH   rº   r¾   rÂ   rÕ   râ   r}   rã   rå   r²   ró   r   rë   rò   rF   rF   rF   rG   rz   Ð   s    
		
?rz   c                   @   s   e Zd Zddd„ZdS )ry   r¡   c           	   	   C   s  | j du r| ¡ d | _d | ¡ dd … ¡}n|dkr,d| }| jt| d¡ƒ ¡  }d| }| jd	u rC|d
d| j	  | j
 d 7 }td d	ƒ}t|d< d|d< d|d< td d	ƒ}d|d< tj|d< tj|d d< | j|d d d< td d	ƒ}d|d< tj|d< tj|d d< | j|d d d< td d	ƒ}d|d< tj|d< tj|d d< tr°||d d d< n| tjj¡|d d d< td d	ƒ}d|d< tj|d< tj|d d< d|d d d< |d  |¡ |d  |¡ |d  |¡ |d  |¡ | jd  | jd dt|dg g ¡ |  ¡  d S )NTr   ro   rp   ré   r  r  r  Fr  r  r  r]   é   r^   r_   r&   r  r	  rd   r
  r  r  Ú7r\   rb   )r­   r8   r§   rP   r©   r   r  rí   r¯   r£   r¥   r   r   r   r   r  r®   r   r‰   rî   rï   r  r«   rw   r   r   )	r9   r÷   rE   r:   r’   r  r  r  r  rF   rF   rG   rë   ¿  sV   










ÿzRemoteShellMMC20.execute_remoteNr  )r�   rž   rŸ   rë   rF   rF   rF   rG   ry   ¾  s    ry   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚAuthFileSyntaxErrorz}raised by load_smbclient_auth_file if it encounters a syntax error
    while loading the smbclient-style authentication file.c                 C   s   || _ || _|| _d S rµ   ©rÙ   ÚlinenoÚreason)r9   rÙ   r  r  rF   rF   rG   rH   ø  s   
zAuthFileSyntaxError.__init__c                 C   s   d| j | j| jf S )Nz(Syntax error in auth file %s line %d: %sr  rä   rF   rF   rG   Ú__str__ý  s   ÿzAuthFileSyntaxError.__str__N)r�   rž   rŸ   Ú__doc__rH   r  rF   rF   rF   rG   r  ó  s    r  c           	      C   sÆ   d}d}d}d}t | ƒD ]Q}|d7 }| ¡ }| d¡s|dkr q| dd¡}t|ƒdkr2t| |dƒ‚|d  ¡ |d  ¡ }}|d	krF|}q|d
krM|}q|dkrT|}qt| |dt|ƒ ƒ‚|||fS )zËLoad credentials from an smbclient-style authentication file (used by
    smbclient, mount.cifs and others).  returns (domain, username, password)
    or raises AuthFileSyntaxError or any I/O exceptions.r   Nrp   ú#r(   ú=rñ   zNo "=" present in liner;   r<   r=   zUnknown option %s)rÊ   rì   Ú
startswithr8   rØ   r  Úrepr)	rÙ   r  r=   r;   r<   r½   ÚpartsÚkÚvrF   rF   rG   Úload_smbclient_auth_file  s*   
r&  Ú__main__TzKExecutes a semi-interactive shell using the ShellBrowserWindow DCOM object.)Úadd_helpÚdescriptionrO   Ústorez6[[domain/]username[:password]@]<targetName or address>)ÚactionÚhelpz-sharezADMIN$z<share where the output will be grabbed from (default ADMIN$))r+  ró   r,  z	-nooutputÚ
store_trueFz>whether or not to print the output (no SMB connection created)z-tsz&Adds timestamp to every logging outputz-debugzTurn DEBUG output ONz-codeca  Sets encoding used (codec) from the target's output (default "%s"). If errors are detected, run chcp.com at the target, map the result with https://docs.python.org/3/library/codecs.html#standard-encodings and then execute wmiexec.py again with -codec and the corresponding codec z-object)r`   rh   rj   ú?r`   zJDCOM object to be used to execute the shell command (default=ShellWindows))ÚchoicesÚnargsró   r,  z-com-versionzMAJOR_VERSION:MINOR_VERSIONz<DCOM version, format is MAJOR_VERSION:MINOR_VERSION e.g. 5.7)r+  Úmetavarr,  z-shell-typer¡   ré   z9choose a command processor for the semi-interactive shell)r+  ró   r/  r,  r:   Ú*ro   zRcommand to execute at the target. If empty it will launch a semi-interactive shell)r0  ró   r,  z-silentcommandzQdoes not execute cmd.exe to run given command (no output, cannot run dir/cd/etc.)Úauthenticationz-hasheszLMHASH:NTHASHz$NTLM hashes, format is LMHASH:NTHASHz-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)z-dc-ipz
ip addresszoIP Address of the domain controller. If ommited it use the domain part (FQDN) specified in the target parameterz-AÚauthfilezSsmbclient/mount.cifs-style authentication file. See smbclient man page's -A option.z-keytabz"Read keys for SPN from keytab filerp   zutf-8z4-nooutput switch and interactive shell not supportedz9-silentcommand switch and interactive shell not supportedÚ.z>Wrong COMVERSION format, use dot separated integers e.g. "5.7"z?loaded smbclient auth file: domain=%s, username=%s, password=%sr(   )Úgetpassz	Password:)yÚ
__future__r   r   Úargparser¡   rQ   rÆ   r¶   r‰   rü   Úbase64r   Úsixr   r   Úimpacketr   Úimpacket.dcerpc.v5.dcom.oautr   r	   r
   r   r   r   r   r   Úimpacket.dcerpc.v5.dcomrtr   r   r   r   r   r   r   r   r   r   r   r   r   Úimpacket.dcerpc.v5.dtypesr   Úimpacket.examplesr   Úimpacket.examples.utilsr   Úimpacket.smbconnectionr    r!   r"   r#   Úimpacket.krb5.keytabr$   r†   r¤   rŠ   rï   rõ   r'   r¢   rz   ry   r   r  r&  r�   r»   ÚBANNERÚArgumentParserÚparserÚadd_argumentÚadd_argument_groupÚgrouprØ   ÚargvÚ
print_helprŒ   Ú
parse_argsÚoptionsÚinitÚtsrþ   ÚcodecrP   r:   ÚnooutputrR   ÚsilentcommandÚcom_versionr8   Úmajor_versionÚminor_versionÚset_default_versionÚintrO   r=   r;   r<   ÚaddressÚAr"  ÚkeytabÚloadKeysFromKeytabr$  r>   Úno_passr?   r6  r@   Údc_ipÚobjectrE   Úexecuterr›   r€   rš   r�   r‚   rƒ   r„   r…   rF   rF   rF   rG   Ú<module>   sØ   &(4  o5
$

üÿ
ÿ







þ 
8ÿ€üš