o
    �õ±j´	  ã                   @   s„   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
 d dlmZ d dlmZ ddd	„Zd
d„ Zedkr@eƒ  dS dS )é    N)Úlogger)ÚKerberosClientFactoryÚkerberos_url_help_epilog)ÚKerberosSecretType)ÚKerberosSPN)ÚKerberosCredential)ÚKirbic                 Ã   s^  �t  | ¡}| ¡ }t |¡}|jtjkr2t 	d¡ | 
¡ I d H  t 	d¡ | |¡I d H \}}}	nQt 	d¡ |jj ¡ D ]E}
z*t d|
 ¡  ¡ tj|
 ¡ dd�}| |¡}| |¡I d H \}}}	t d¡ W  n ty‚ } zt 	d| ¡ W Y d }~q=d }~ww |d ur“|j |¡ td	| ƒ t ||¡}
tt|
ƒƒ |d ur¨|
 |¡ t d
¡ d S )NzGetting TGTzGetting DMSAzGetting TGS via TGT from CCACHEzTrying to get SPN with %sÚhex)ÚencodingzSucsess!z-This ticket is not usable it seems Reason: %szTicket stored in ccache file %szDone!)r   Úfrom_urlÚ
get_clientr   Úfrom_upnÚsecret_typer   ÚCCACHEr   ÚdebugÚget_TGTÚdmsaÚ
credentialÚccacheÚget_all_tgt_kirbisÚinfoÚget_usernamer   Ú
from_kirbiÚto_hexÚget_client_newcredÚ	ExceptionÚto_fileÚprintr   Úfrom_ticketdataÚstrÚlogging)Úkerberos_urlÚ
targetuserÚ	kirbifileÚ
ccachefileÚcuÚclientÚtarget_userÚtgsÚencTGSRepPartÚkeyÚkirbiÚ
ccred_testÚe© r.   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/examples/getDmsa.pyÚdMSA   s>   €






€ý
r0   c                  C   sÆ   dd l } | jd| jtd�}|jddd� |jddd� |jd	d
ddd� |jddd� |jddd� | ¡ }|jdkrBt t	j
¡ n|jdkrNt t	j¡ nt d¡ t t|j|j|j|jƒ¡ d S )Nr   z0Gets an S4U2self ticket impersonating given user)ÚdescriptionÚformatter_classÚepilogz--kirbizPkirbi file to store the TGS ticket in, otherwise kirbi will be printed to stdout)Úhelpz--ccachez&ccache file to store the TGT ticket inz-vz	--verboseÚcount)ÚactionÚdefaultr!   z3Machine account credentials in kerberos URL format.r"   Ú é   )ÚargparseÚArgumentParserÚRawDescriptionHelpFormatterr   Úadd_argumentÚ
parse_argsÚverboser   ÚsetLevelr    ÚWARNINGÚINFOÚasyncioÚrunr0   r!   r"   r+   r   )r:   ÚparserÚargsr.   r.   r/   Úmain/   s   


 rG   Ú__main__)NN)r    rC   Úminikerberosr   Úminikerberos.common.factoryr   r   Úminikerberos.common.constantsr   Úminikerberos.common.spnr   Úminikerberos.common.credsr   Úminikerberos.common.kirbir   r0   rG   Ú__name__r.   r.   r.   r/   Ú<module>   s    
$
ÿ