o
    j                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 dg dfdede
e ded	ed
e
e f
ddZdd Zdd ZedkrKe  dS dS )    N)KerberosTarget)
asreproast)List)         kerberos_serverusersdomainout_fileetypesc              
      sV  zg }g }t | d}t|tdu r|g}g }|D ]2}	t|	trLt|	 rGt|	d}
||
	 
  W d    n1 sAw   Y  q||	 qt|tdu rW|g}g }|D ]}t|tro|dd |dD  t|try|| q[|}|}|d u rtdg }|D ]}|dd	kr||dd
  q|| qd }t||||d2 z3 d H W \}}}|d ur|||f q|||f q6 |d urt|ddd}
|D ]\}}|
|d  qW d    n1 sw   Y  |D ]\}}td||f  q|D ]	\}}t| qW d S  ty* } zt  W Y d }~d S d }~ww )N)ipFrc                 S   s   g | ]}t |qS  )int).0xr   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/examples/asreproast.py
<listcomp>"   s    zasreproast.<locals>.<listcomp>,zNo domain specified@r   )override_etypew )newlinez
z%s error: %s)r   
isinstanceliststrpathlibPathexistsopenextendread
splitlinesappendsplitr   	Exceptionfindasreproast_secwriteprint	traceback	print_exc)r   r	   r
   r   r   
results_okresults_errcuusers_finaluserfetypes_finaletypeusers_nodomainusernamereserr_resulter   r   r   r   	   sr   





"r   c                     s   dd l } | jd| jd}|jddd |jddd |jd	d
dd |jddddd |jdddd |jddddd | }|jdkrNtjtjd n|jdkr[tjtj	d ntjdd t
|jdkrntd d S t|j|j|j|j|jI d H  d S )Nr   
Asreproast)descriptionformatter_classr   zKerberos server IP or hostname)helpr
   z6Realm. Use this if you specify username in "spn" fieldr	   *zPUser/username to kerberoast. Can be a file with usernames, or a single username.)nargsrA   z-ez--etypesz23,17,18z*Encryption types to use. Default: 23,17,18)defaultrA   z-oz
--out-filez3Write results to this file instead of printing themz-vz	--verbosecount)actionrD   )level   z"Please provide users to kerberoast)argparseArgumentParserRawDescriptionHelpFormatteradd_argument
parse_argsverboseloggingbasicConfigINFODEBUGlenr	   r,   r   r   r
   r   r   )rI   parserargsr   r   r   amainH   s&   

$rV   c                   C   s   t t  d S )N)asynciorunrV   r   r   r   r   maina   s   rY   __main__)rO   rW   r-   r   minikerberos.common.targetr   minikerberos.securityr   r*   typingr   r   r   rV   rY   __name__r   r   r   r   <module>   s    0?
