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)      iz$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   
