a
    kÄ#dp=  ã                (   @   s  d Z ddlmZmZ ddlmZ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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mZ dd	lmZ eZ eZ!e Z"e Z#e Z$eZ%e Z&G d
d„ deƒZ'G dd„ deƒZ(ee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/d0d1d2œ#ƒe"d3d4ƒe d5d4ƒeed6g e(d7d8�ƒƒZ)G d9d:„ d:eƒZ*G d;d<„ d<eƒZ+G d=d>„ d>e	ƒZ,G d?d@„ d@eƒZ-G dAdB„ dBeƒZ.G dCdD„ dDe	ƒZ/G dEdF„ dFeƒZ0G dGdH„ dHeƒZ1G dIdJ„ dJe	ƒZ2G dKdL„ dLeƒZ3G dMdN„ dNeƒZ4G dOdP„ dPeƒZ5G dQdR„ dReƒZ6G dSdT„ dTeƒZ7G dUdV„ dVeƒZ8G dWdX„ dXeƒZ9G dYdZ„ dZeƒZ:G d[d\„ d\eƒZ;G d]d^„ d^eƒZ<d_d`„ Z=G dadb„ dbeƒZ>G dcdd„ ddeƒZ?G dedf„ dfeƒZ@G dgdh„ dheƒZAG didj„ djeƒZBG dkdl„ dleƒZCG dmdn„ dneƒZDG dodp„ dpeƒZEG dqdr„ dreƒZFG dsdt„ dteƒZGG dudv„ dveƒZHG dwdx„ dxeƒZIG dydz„ dzeƒZJeeJeJƒ eeeJd{d|� eeeJd{d}� eeeJd~d|� eeeJd~d}� eeeJd{d{d� G d€d�„ d�eƒZKeeKeKƒ eeeKd{d|� eeeKd{d}� eeeKd{d{d� G d‚dƒ„ dƒeeƒZLG d„d…„ d…eLƒZMd†S )‡z-
LDAP

RFC 1777 - LDAP v2
RFC 4511 - LDAP v3
é    )Ú	AutomatonÚATMT)ÚASN1_STRINGÚASN1_Class_UNIVERSALÚASN1_Codecs)ÚBERcodec_SEQUENCE)ÚASN1F_BOOLEANÚASN1F_CHOICEÚASN1F_ENUMERATEDÚASN1F_INTEGERÚ
ASN1F_NULLÚASN1F_PACKETÚASN1F_SEQUENCEÚASN1F_SEQUENCE_OFÚASN1F_SET_OFÚASN1F_STRINGÚASN1F_optional)ÚASN1_Packet)Úbind_bottom_upÚbind_layers)ÚTCPÚUDP)ÚNTLM_Clientc                   @   s(   e Zd ZejZeeddƒeddƒƒZ	dS )ÚAttributeValueAssertionZattributeTypeZorganizationNameZattributeValueÚ N)
Ú__name__Ú
__module__Ú__qualname__r   ÚBERÚ
ASN1_codecr   ÚAttributeTypeÚAttributeValueÚ	ASN1_root© r#   r#   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/layers/ldap.pyr   /   s
   þr   c                   @   s   e Zd ZejZeddƒZdS )ÚLDAPReferralÚurir   N©r   r   r   r   r   r   Ú
LDAPStringr"   r#   r#   r#   r$   r%   7   s   r%   Ú
resultCodeÚsuccessZoperationsErrorZprotocolErrorZtimeLimitExceededZsizeLimitExceededZcompareFalseZcompareTrueZauthMethodNotSupportedZstrongAuthRequiredZnoSuchAttributeZundefinedAttributeTypeZinappropriateMatchingZconstraintViolationZattributeOrValueExistsZinvalidAttributeSyntaxZnoSuchObjectZaliasProblemZinvalidDNSyntaxZisLeafZaliasDereferencingProblemZinappropriateAuthenticationZinvalidCredentialsZinsufficientAccessRightsÚbusyÚunavailableZunwillingToPerformZ
loopDetectZnamingViolationZobjectClassViolationZnotAllowedOnNonLeafZnotAllowedOnRDNZentryAlreadyExistsZobjectClassModsProhibitedZresultsTooLargeÚother)#r   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é    é!   é"   é#   é$   é0   é1   é2   é3   é4   é5   é6   é@   éA   éB   éC   éD   éE   éF   éP   Z	matchedDNr   ZdiagnosticMessageZreferralé£   ©Zimplicit_tagc                   @   s    e Zd ZdZdZdZdZdZdS )ÚASN1_Class_LDAP_AuthenticationzLDAP Authenticationé    é¡   é¢   rP   N)r   r   r   ÚnameÚsimpleÚ
krbv42LDAPÚ	krbv42DSAÚsaslr#   r#   r#   r$   rR   o   s
   rR   c                   @   s   e Zd ZejZdS )ÚASN1_LDAP_Authentication_simpleN©r   r   r   rR   rW   Útagr#   r#   r#   r$   r[   w   s   r[   c                   @   s   e Zd ZejZdS )Ú#BERcodec_LDAP_Authentication_simpleNr\   r#   r#   r#   r$   r^   {   s   r^   c                   @   s   e Zd ZejZdS )Ú ASN1F_LDAP_Authentication_simpleN)r   r   r   rR   rW   ÚASN1_tagr#   r#   r#   r$   r_      s   r_   c                   @   s   e Zd ZejZdS )Ú#ASN1_LDAP_Authentication_krbv42LDAPN©r   r   r   rR   rX   r]   r#   r#   r#   r$   ra   ƒ   s   ra   c                   @   s   e Zd ZejZdS )Ú'BERcodec_LDAP_Authentication_krbv42LDAPNrb   r#   r#   r#   r$   rc   ‡   s   rc   c                   @   s   e Zd ZejZdS )Ú$ASN1F_LDAP_Authentication_krbv42LDAPN)r   r   r   rR   rX   r`   r#   r#   r#   r$   rd   ‹   s   rd   c                   @   s   e Zd ZejZdS )Ú"ASN1_LDAP_Authentication_krbv42DSAN©r   r   r   rR   rY   r]   r#   r#   r#   r$   re   �   s   re   c                   @   s   e Zd ZejZdS )Ú&BERcodec_LDAP_Authentication_krbv42DSANrf   r#   r#   r#   r$   rg   “   s   rg   c                   @   s   e Zd ZejZdS )Ú#ASN1F_LDAP_Authentication_krbv42DSAN)r   r   r   rR   rY   r`   r#   r#   r#   r$   rh   —   s   rh   c                   @   s(   e Zd ZejZeeddƒeddƒƒZ	dS )ÚLDAP_SaslCredentialsÚ	mechanismr   ÚcredentialsN)
r   r   r   r   r   r   r   r(   r   r"   r#   r#   r#   r$   ri   ›   s
   þri   c                   @   sF   e Zd ZejZeeddƒeddƒe	dde
eeedeƒ edd	�ƒƒZdS )
ÚLDAP_BindRequestÚversionr/   Z	bind_namer   ÚauthenticationNrZ   rP   rQ   )r   r   r   r   r   r   r   r   ÚLDAPDNr	   r_   rd   rh   r   ri   r"   r#   r#   r#   r$   rl   £   s    üüýrl   c                   @   s0   e Zd ZejZeeje	e
dddd�ƒf Ž ZdS )ÚLDAP_BindResponseÚserverSaslCredsr   é‡   rQ   N)r   r   r   r   r   r   r   Ú
LDAPResultÚseqr   r   r"   r#   r#   r#   r$   rp   µ   s   ÿÿÿÿrp   c                   @   s   e Zd ZejZeddƒZdS )ÚLDAP_UnbindRequestÚinfor   N)r   r   r   r   r   r   r   r"   r#   r#   r#   r$   ru   Â   s   ru   c                   @   s   e Zd ZejZeddƒZdS )ÚLDAP_SubstringFilterInitialÚinitialr   Nr'   r#   r#   r#   r$   rw   Ë   s   rw   c                   @   s   e Zd ZejZeddƒZdS )ÚLDAP_SubstringFilterAnyÚanyr   Nr'   r#   r#   r#   r$   ry   Ð   s   ry   c                   @   s   e Zd ZejZeddƒZdS )ÚLDAP_SubstringFilterFinalÚfinalr   Nr'   r#   r#   r#   r$   r{   Õ   s   r{   c                   @   sP   e Zd ZejZededƒede	ƒ e	dd�ede
ƒ e
dd�edeƒ ed	d�ƒZd
S )ÚLDAP_SubstringFilterStrÚstrr   rx   r   rQ   rz   r.   r|   r/   N)r   r   r   r   r   r   r	   r   r   rw   ry   r{   r"   r#   r#   r#   r$   r}   Ú   s&   ýýýör}   c                   @   s*   e Zd ZejZeeddƒedg e	ƒƒZ
dS )ÚLDAP_SubstringFilterÚtyper   ÚfiltersN)r   r   r   r   r   r   r   r    r   r}   r"   r#   r#   r#   r$   r   í   s
   
þr   c                  O   s   t | i |¤ŽS ©N)ÚLDAP_Filter)ÚargsÚkwargsr#   r#   r$   Ú<lambda>õ   ó    r†   c                   @   s   e Zd ZejZedg eƒZdS )ÚLDAP_FilterAndÚand_N©	r   r   r   r   r   r   r   Ú_LDAP_Filterr"   r#   r#   r#   r$   rˆ   ø   s   rˆ   c                   @   s   e Zd ZejZedg eƒZdS )ÚLDAP_FilterOrÚor_NrŠ   r#   r#   r#   r$   rŒ   ý   s   rŒ   c                   @   s   e Zd ZejZeddƒZdS )ÚLDAP_FilterPresentÚpresentr   N©r   r   r   r   r   r   r    r"   r#   r#   r#   r$   rŽ     s   rŽ   c                   @   s¦   e Zd ZejZedeƒ edde	dd�edde
dd�edded	d�ed
eƒ edd�edeƒ edd�edeƒ edd�edeƒ edd�edeƒ edd�eddedd�ƒZdS )rƒ   Úfilterr‰   Né€   rQ   r�   é�   Únot_é‚   ZequalityMatchéƒ   Z
substringsé„   ZgreaterOrEqualé…   ZlessOrEqualé†   r�   rr   ZapproxMatchéˆ   )r   r   r   r   r   r   r	   rŽ   r   rˆ   rŒ   r‹   r   r   r"   r#   r#   r#   r$   rƒ     sR   ÿÿþýýýýþÿärƒ   c                   @   s   e Zd ZejZeddƒZdS )ÚLDAP_SearchRequestAttributer€   r   Nr�   r#   r#   r#   r$   r›   *  s   r›   c                   @   st   e Zd ZejZeeddƒeddddddœƒeddd	d
dddœƒe	ddƒe	ddƒe
ddƒedeƒ eƒedg eƒƒZdS )ÚLDAP_SearchRequestZ
baseObjectr   Úscoper   ZsingleLevelZwholeSubtree)r   r.   r/   ZderefAliasesZneverDerefAliasesZderefInSearchingZderefFindingBaseObjZderefAlways)r   r.   r/   r0   Z	sizeLimitZ	timeLimitZ	attrsOnlyFr‘   Ú
attributesN)r   r   r   r   r   r   r   ro   r
   r   r   r   rƒ   r   r›   r"   r#   r#   r#   r$   rœ   /  s,   þýÿÿòrœ   c                   @   s   e Zd ZejZeddƒZdS )Ú&LDAP_SearchResponseEntryAttributeValueÚvaluer   N)r   r   r   r   r   r   r!   r"   r#   r#   r#   r$   rŸ   D  s   rŸ   c                   @   s*   e Zd ZejZeeddƒedg e	ƒƒZ
dS )Ú!LDAP_SearchResponseEntryAttributer€   r   ÚvaluesN)r   r   r   r   r   r   r   r    r   rŸ   r"   r#   r#   r#   r$   r¡   I  s   ÿþr¡   c                   @   s,   e Zd ZejZeeddƒede	ƒ e	ƒƒZ
dS )ÚLDAP_SearchResponseEntryZ
objectNamer   rž   N)r   r   r   r   r   r   r   ro   r   r¡   r"   r#   r#   r#   r$   r£   R  s   þþr£   c                   @   s   e Zd ZejZeZdS )ÚLDAP_SearchResponseResultCodeN)r   r   r   r   r   r   rs   r"   r#   r#   r#   r$   r¤   \  s   r¤   c                   @   s   e Zd ZejZeddƒZdS )ÚLDAP_AbandonRequestÚ	messageIDr   N)r   r   r   r   r   r   r   r"   r#   r#   r#   r$   r¥   a  s   r¥   c                   @   s8   e Zd ZejZeeddƒee	ddƒƒee
ddƒƒƒZdS )ÚLDAP_ControlZcontrolTyper   ZcriticalityFZcontrolValueN)r   r   r   r   r   r   r   ÚLDAPOIDr   r   r   r"   r#   r#   r#   r$   r§   i  s   ÿÿûr§   c                   @   s´   e Zd ZejZeeddƒede	ƒ e
deƒ edd�e
deƒ edd�e
d	eƒ ed
d�e
de	ƒ e	dd�e
deƒ edd�e
deƒ edd�e
deƒ edd�ƒ	eedg edd�ƒƒZdd„ ZdS )ÚLDAPr¦   r   Ú
protocolOpZbindRequesté`   rQ   ZbindResponseéa   ZunbindRequestrJ   ZsearchRequestéc   ZsearchResponseéd   ée   ZabandonRequestép   ZControlsc                 C   s   | j jj dd¡tgfS )NÚ_ú )rª   Ú	__class__r   Úreplacer©   ©Úselfr#   r#   r$   Ú	mysummary¢  s    zLDAP.mysummaryN)r   r   r   r   r   r   r   r   r	   rœ   r   rl   rp   ru   r£   r¤   r¥   r   r   r§   r"   r·   r#   r#   r#   r$   r©   y  s^   ýýýýýýýçÿÿß'r©   é…  )Údport)ÚsportiÄ  )rº   r¹   c                   @   s8   e Zd ZejZeejj	d e
eddƒƒejj	d ƒZdS )ÚCLDAPr   Úuserr   r.   N)r   r   r   r   r   r   r   r©   r"   rt   r   ro   r#   r#   r#   r$   r»   ±  s   
ÿ
ûr»   c                       sÈ   e Zd ZdZeZ‡ fdd„Zejdd�dd„ ƒZ	e 
e	¡dd	„ ƒZe ¡ d
d„ ƒZe 
e¡dd„ ƒZe e¡dd„ ƒZe ¡ dd„ ƒZe e¡dd„ ƒZejdd�dd„ ƒZejdd�dd„ ƒZ‡  ZS )ÚNTLM_LDAP_Clientr¸   c                    s&   d| _ d| _tt| ƒj|i |¤Ž d S )Nr.   F)r¦   ÚauthenticatedÚsuperr½   Ú__init__)r¶   r„   r…   ©r³   r#   r$   rÀ   Ê  s    zNTLM_LDAP_Client.__init__r.   )rx   c                 C   s   |   ¡  d S r‚   )Zwait_serverrµ   r#   r#   r$   ÚBEGINÏ  s    zNTLM_LDAP_Client.BEGINc                 C   s   |   ¡ ‚d S r‚   )ÚWAIT_FOR_TOKENrµ   r#   r#   r$   ÚbeginÓ  s    zNTLM_LDAP_Client.beginc                 C   s   d S r‚   r#   rµ   r#   r#   r$   rÃ   ×  s    zNTLM_LDAP_Client.WAIT_FOR_TOKENc                 C   s   |   ¡ }|  ¡  |¡‚d S r‚   )Ú	get_tokenÚ	SENT_BINDZaction_parameters)r¶   Ú
ntlm_tupler#   r#   r$   Úshould_send_bindÛ  s    z!NTLM_LDAP_Client.should_send_bindc                 C   sD   |\}}}t | jtdtd|d�d�d�}|  |¡ |  jd7  _d S )Nr/   z
GSS-SPNEGO)rj   rk   )rm   rn   )r¦   rª   r.   )r©   r¦   rl   ri   Úsend)r¶   rÇ   Z
ntlm_tokenr±   Úpktr#   r#   r$   Ú	send_bindà  s    
þþþ

zNTLM_LDAP_Client.send_bindc                 C   s   d S r‚   r#   rµ   r#   r#   r$   rÆ   ð  s    zNTLM_LDAP_Client.SENT_BINDc                 C   s’   t |jtƒrŽ|jjdkrd}nN|jjdkr6d}d| _n6|jjdkr\tdƒ | ¡  |  ¡ ‚n|  |jj	j
¡}|  |¡ | jr†|  ¡ ‚n|  ¡ ‚d S )NrB   )NNNr   )Nr   NTrF   zError:)Ú
isinstancerª   rp   r)   r¾   ÚprintÚshowÚERROREDZ
_get_tokenrq   ÚvalZreceived_ntlm_tokenÚAUTHENTICATEDrÃ   )r¶   rÊ   rÇ   r#   r#   r$   Úreceive_bind_responseô  s"    
ÿ

z&NTLM_LDAP_Client.receive_bind_response)r|   c                 C   s   d S r‚   r#   rµ   r#   r#   r$   rÏ   
  s    zNTLM_LDAP_Client.ERROREDc                 C   s   d S r‚   r#   rµ   r#   r#   r$   rÑ     s    zNTLM_LDAP_Client.AUTHENTICATED)r   r   r   Úportr©   ÚclsrÀ   r   ÚstaterÂ   Ú	conditionrÄ   rÃ   rÈ   ÚactionrË   rÆ   Zreceive_conditionrÒ   rÏ   rÑ   Ú__classcell__r#   r#   rÁ   r$   r½   Æ  s*   










r½   c                   @   s   e Zd ZdZdZdS )ÚNTLM_LDAPS_Clienti|  TN)r   r   r   rÓ   Ússlr#   r#   r#   r$   rÙ     s   rÙ   N)NÚ__doc__Zscapy.automatonr   r   Zscapy.asn1.asn1r   r   r   Zscapy.asn1.berr   Zscapy.asn1fieldsr   r	   r
   r   r   r   r   r   r   r   r   Zscapy.asn1packetr   Zscapy.packetr   r   Zscapy.layers.inetr   r   Zscapy.layers.ntlmr   r(   r¨   ro   ZRelativeLDAPDNr    r!   ÚURIr   r%   rs   rR   r[   r^   r_   ra   rc   rd   re   rg   rh   ri   rl   rp   ru   rw   ry   r{   r}   r   r‹   rˆ   rŒ   rŽ   rƒ   r›   rœ   rŸ   r¡   r£   r¤   r¥   r§   r©   r»   r½   rÙ   r#   r#   r#   r$   Ú<module>   sÚ   4Ý%ÿÿ×3	#	
-

M