o
    �õ±j  ã                   @   sh   d dl Z d dlmZmZmZmZmZ d dlZddd„Ze j ddde j	j
d�Zd	d
„ Zdd„ Zdd„ ZdS )é    N)ÚKRB_CREDÚKrbCredInfoÚEncKrbCredPartÚEncryptedDataÚKRBCREDTc                 C   s  g }| D ]+}t dd„ |D ƒƒD ]\}}|t|ƒkr$| d¡ |t|ƒks||| kr.|||< qqd}t |ƒD ]\}}|dt|ƒ d t|ƒ d 7 }q6t|ƒdkrSdS |dd	… }t | ƒD ]!\}}t|j|Ž ƒ |dkr~|r~td
t|ƒdt|ƒd    ƒ q]dS )z4Prints a formatted table given a 2 dimensional arrayc                 S   s   g | ]}t |ƒ‘qS © )Úlen)Ú.0Úxr   r   úŒ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/common/utils.pyÚ
<listcomp>   s    zprint_table.<locals>.<listcomp>r   Ú Ú{ú:z} | Néýÿÿÿú-é   é   )Ú	enumerater   ÚappendÚstrÚprintÚformatÚsum)ÚlinesÚseparate_headÚwidthsÚlineÚiÚsizeÚprint_stringÚwidthr   r   r   Úprint_table   s,   
ÿ€ü" €ýr"   i²  r   )Útzinfoc                 C   s.   | t  }t|j|j|jd d  d  d ƒS )Né   i  i@B g    €„.A)Úwindows_epochÚintÚmicrosecondsÚsecondsÚdays)ÚdtÚtdr   r   r   Údt_to_kerbtime#   s   &r,   c                 C   sâ   t | d d d ƒ}d | d d d ¡}| d d }|dkrD| d d d	 d d
… }| d d d	 d
d … }d|||| ¡ | ¡ f S |dv rm| d d d	 dd … }| d d d	 d d… }d|||| ¡ | ¡ f S d| S )NÚticketúenc-partÚetypeú@Úsnameúname-stringÚrealmé   Úcipheré   z$krb5tgs$%s$*%s$%s$spn*$%s$%s)é   é   iôÿÿÿz$krb5tgs$%s$%s$%s$%s$%szunknown$enctype$%s)r&   ÚjoinÚhex)ÚresÚtgs_encryption_typeÚtgs_name_stringÚ	tgs_realmÚtgs_checksumÚtgs_encrypted_data2r   r   r   ÚTGSTicket2hashcat'   s   rA   c                 C   sj   t | d d ƒ}| d d d }| d }| d d d d… }| d d dd … }d	|||| ¡ | ¡ f S )
Nr.   r/   Úcnamer2   r   Úcrealmr5   r6   z$krb5asrep$%s$%s@%s:%s$%s)r&   r:   )r;   Útgt_encryption_typeÚtgt_name_stringÚ	tgt_realmÚtgt_checksumÚtgt_encrypted_data2r   r   r   ÚTGTTicket2hashcat=   s   rI   )T)ÚdatetimeÚ"minikerberos.protocol.asn1_structsr   r   r   r   r   Úbase64r"   ÚtimezoneÚutcr%   r,   rA   rI   r   r   r   r   Ú<module>   s   
