o
    j                     @   sz   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d	d
 ZdddZdd Zdd Zedkr;e  dS dS )    )RC4)hmac)md5)tqdmc                 C   s
  t d |D ]|}z.d }|d}|d }|d d\}}|d }	t|}t|	}	d}
|
jddd	d
}
W n tyN } zt d|  W Y d }~qd }~ww | D ]%\}}t||t	 }t
||	}t||t	 }||krv|} nqQqt d|| f  qd S )NzCracking ASREP tickets$      :      littleF	byteordersignedError parsing ticket: %s%s: %s)printsplitbytesfromhexto_bytes	ExceptionHMACnewMD5digestARC4decrypthex)hashlistticketstotalasrepresulttestetypeuserchecksumedatakeyusageepwhashkikebasic_plaintext	exp_cksum r0   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/examples/kerb23hashdecrypt.pycrack_asrep   s8   


r2   c                 C   h   t d g }d}|jdddd}| D ]}| }t|}t||t }|	||f qt d |S )Nz,Preprocessing hashlist for ASREP cracking...r   r
   r   Fr   Preprocessing done!
r   r   stripr   r   r   r   r   r   appendr   resr)   r+   r,   r0   r0   r1   preprocess_hashlist_asrep+      
r:   c                 C   r3   )Nz*Preprocessing hashlist for TGS cracking...r   r
   r   Fr   r4   r5   r8   r0   r0   r1   preprocess_hashlist_tgs8   r;   r<   c                 C   s(  |D ]}z1d }| d}|d }|d }|d }|d }	|d }
t|	}	t|
}
d}|jdddd	}W n tyM } ztd
|  W Y d }~qd }~ww td||f  | D ]%\}}t||	t	 }t
||
}t||t	 }|	|kr}|} n
qXtd||f  qtd|| f  qd S )Nr   r   r   r
         r   Fr   r   zCracking TGS for %s\%szNo password found for %s\%sr   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r    r!   tgsr#   r$   r%   r&   realmr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r0   r1   	crack_tgsE   s>   


rA   c                 C   s  g }g }|  ddkrV|  ddkrVt|d2}|D ]'}| }|dkr)q|  ddkr7|| |  ddkrE|| qW d    n1 sPw   Y  n|  ddkrd|| |  ddkrr|| t|t| }|dkrtd d S td|  d}t| d}|D ]}| }|dkrq|d	7 }qW d    n1 sw   Y  t|dkrt|dkrtd d S t| d8}t|dkrt|} t| ||d
 t|dkr|	d t
|} t| ||d
 W d    d S W d    d S 1 sw   Y  d S )Nz$krb5tgs$23$z$krb5asrep$23$r r   zNo tickets loaded! Exiting!zLoaded %s tickets   )r!   )lowerfindopenr6   r7   lenr   r<   rA   seekr:   r2   )r   r    
spnticketsasrepticketsflinettr!   r0   r0   r1   crackn   s`   $





$rP   c                  C   sJ   dd l } | jdd}|jddd |jddd | }t|j|j d S )	Nr   z[Tries to decrypt RC4 TGS or ASREP ($krb5tgs$23$ / $krb5asrep$23$) using a list of NT hashes)descriptionr   zFile containing NT hashes)helpr    zKKerberoasted ticket in hashcat format. $krb5tgs$23$... or $krb5asrep$23$...)argparseArgumentParseradd_argument
parse_argsrP   r   r    )rS   parserargsr0   r0   r1   main   s   rY   __main__N)r   )unicrypto.symmetricr   r   	unicryptor   r   unicrypto.hashlibr   r   r   r2   r:   r<   rA   rP   rY   __name__r0   r0   r0   r1   <module>   s    
%
)0
