o
    �õ±j3  ã                   @   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                 Ã   sl  �t  | ¡}| ¡ }t |¡}t |¡}|jtjkr8t	 
d¡ | ¡ I d H  t	 
d¡ | ||¡I d H \}	}
}nRt	 
d¡ |jj ¡ D ]F}z+t	 d| ¡  ¡ tj| ¡ dd�}| |¡}| ||¡I d H \}	}
}t	 d¡ W  n ty‰ } zt	 
d| ¡ W Y d }~qCd }~ww |d urš|j |¡ td	| ƒ t |	|
¡}tt|ƒƒ |d ur¯| |¡ t d
¡ d S )NzGetting TGTzGetting S4Uselfz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_spnÚfrom_upnÚsecret_typer   ÚCCACHEr   ÚdebugÚget_TGTÚS4U2selfÚ
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ÚspnÚ
targetuserÚ	kirbifileÚ
ccachefileÚcuÚclientÚservice_spnÚtarget_userÚtgsÚencTGSRepPartÚkeyÚkirbiÚ
ccred_testÚe© r1   ú”/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/examples/getS4U2self.pyÚgetS4U2self   s@   €







€ý
r3   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dd� | ¡ }|jdkrIt t	j
¡ n|jdkrUt t	j¡ nt d¡ t t|j|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#   zêthe service principal in format <service>/<server-hostname>@<domain> Example: cifs/fileserver.test.corp@TEST.corp for a TGS ticket to be used for file access on server "fileserver". IMPORTANT: SERVER'S HOSTNAME MUST BE USED, NOT IP!!!r$   Ú é   )ÚargparseÚArgumentParserÚRawDescriptionHelpFormatterr   Úadd_argumentÚ
parse_argsÚverboser   ÚsetLevelr!   ÚWARNINGÚINFOÚasyncioÚrunr3   r"   r#   r$   r.   r   )r=   ÚparserÚargsr1   r1   r2   Úmain2   s   


$rJ   Ú__main__)NN)r!   rF   Úminikerberosr   Úminikerberos.common.factoryr   r   Úminikerberos.common.constantsr   Úminikerberos.common.spnr   Úminikerberos.common.credsr   Úminikerberos.common.kirbir   r3   rJ   Ú__name__r1   r1   r1   r2   Ú<module>   s    
&
ÿ