o
    àý°jŽ–  ã                   @   sÆ
  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Zd dl	m
Z
mZ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 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- d dl.m/Z/ d dlm0Z0m1Z1mZ e1dƒZ2G dd„ de/ƒZ3G dd„ de)ƒZ4dZ5dZ6d Z7d Z8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCd ZDd!ZEdZFdZGdZHd"ZId#ZJd$ZKe0d%ƒZLd ZMdZNdZOd ZPdZQdZRd ZSdZTd&ZUd'ZVd(ZWdZXdZYdZZdZ[d)Z\dZ]dZ^dZ_d*Z`d(Zad+ZbdZceZdeZeG d,d-„ d-e+ƒZfG d.d/„ d/e)ƒZgG d0d1„ d1e(ƒZhG d2d3„ d3e,ƒZiG d4d5„ d5e(ƒZjG d6d7„ d7e)ƒZkG d8d9„ d9e,ƒZlG d:d;„ d;e(ƒZmG d<d=„ d=e)ƒZnG d>d?„ d?e,ƒZoG d@dA„ dAe(ƒZpG dBdC„ dCe)ƒZqG dDdE„ dEe,ƒZrG dFdG„ dGe(ƒZsG dHdI„ dIe)ƒZtG dJdK„ dKe,ƒZuG dLdM„ dMe(ƒZvG dNdO„ dOe)ƒZwG dPdQ„ dQe,ƒZxG dRdS„ dSe(ƒZyG dTdU„ dUe)ƒZzG dVdW„ dWe,ƒZ{G dXdY„ dYe(ƒZ|G dZd[„ d[e)ƒZ}G d\d]„ d]e,ƒZ~G d^d_„ d_e(ƒZG d`da„ dae)ƒZ€G dbdc„ dce*ƒZ�G ddde„ dee)ƒZ‚G dfdg„ dge(ƒZƒG dhdi„ die,ƒZ„G djdk„ dke(ƒZ…G dldm„ dme)ƒZ†G dndo„ doe(ƒZ‡G dpdq„ dqe,ƒZˆG drds„ dse)ƒZ‰G dtdu„ due(ƒZŠG dvdw„ dwe)ƒZ‹G dxdy„ dye(ƒZŒG dzd{„ d{e,ƒZ�G d|d}„ d}e(ƒZŽG d~d„ de)ƒZ�e�Z�G d€d�„ d�e)ƒZ‘G d‚dƒ„ dƒe)ƒZ’G d„d…„ d…e)ƒZ“G d†d‡„ d‡e)ƒZ”G dˆd‰„ d‰e)ƒZ•G dŠd‹„ d‹e)ƒZ–G dŒd�„ d�e)ƒZ—G dŽd�„ d�e)ƒZ˜G d�d‘„ d‘e*ƒZ™d’efd“e™ffe‹_šG d”d•„ d•e)ƒZ›G d–d—„ d—e(ƒZœG d˜d™„ d™e,ƒZ�G dšd›„ d›e)ƒZžG dœd�„ d�e(ƒZŸG dždŸ„ dŸe,ƒZ G d d¡„ d¡e)ƒZ¡G d¢d£„ d£e,ƒZ¢G d¤d¥„ d¥e)ƒZ£G d¦d§„ d§e)ƒZ¤G d¨d©„ d©e(ƒZ¥dªZ¦G d«d¬„ d¬eƒZ§G d­d®„ d®eƒZ¨G d¯d°„ d°e'ƒZ©G d±d²„ d²e'ƒZªG d³d´„ d´e'ƒZ«G dµd¶„ d¶e'ƒZ¬G d·d¸„ d¸e'ƒZ­G d¹dº„ dºe'ƒZ®G d»d¼„ d¼e,ƒZ"G d½d¾„ d¾e(ƒZ¯G d¿dÀ„ dÀe'ƒZ°G dÁdÂ„ dÂe'ƒZ±G dÃdÄ„ dÄe'ƒZ²G dÅdÆ„ dÆe'ƒZ³G dÇdÈ„ dÈe'ƒZ´G dÉdÊ„ dÊe'ƒZµG dËdÌ„ dÌe'ƒZ¶G dÍdÎ„ dÎe'ƒZ·G dÏdÐ„ dÐe'ƒZ¸G dÑdÒ„ dÒe'ƒZ¹G dÓdÔ„ dÔe'ƒZºG dÕdÖ„ dÖe'ƒZ»G d×dØ„ dØe'ƒZ¼G dÙdÚ„ dÚe'ƒZ½G dÛdÜ„ dÜe'ƒZ¾G dÝdÞ„ dÞe'ƒZ¿G dßdà„ dàe'ƒZÀG dádâ„ dâe'ƒZÁG dãdä„ däe'ƒZÂG dådæ„ dæe'ƒZÃG dçdè„ dèe'ƒZÄG dédê„ dêe'ƒZÅG dëdì„ dìe+ƒZÆG dídî„ dîe'ƒZÇG dïdð„ dðe'ƒZÈG dñdò„ dòe'ƒZÉG dódô„ dôe'ƒZÊG dõdö„ döe'ƒZËG d÷dø„ døe'ƒZÌi d e©eªf“de«e¬f“de­e®f“de°e±f“de²e³f“dùe´eµf“dúe¶e·f“dûe¸e¹f“düeºe»f“dýe¼e½f“de¾e¿f“dþeÀeÁf“d*eÂeÃf“dÿeÄeÅf“�d eÇeÈf“�deÉeÊf“�deËeÌf“ZÍ�d�d„ ZÎ�d�d„ ZÏ�d4�d�d	„ZÐG �d
�d„ �de$ƒZÑG �d�d„ �deÒƒZÓ�d�d„ ZÔ�d�d„ ZÕ�d�d„ ZÖ�d5�d�d„Z×�d�d„ ZØef�d�d„ZÙeXdd �dg eg f�d�d„ZÚd d g eg ef�d�d„ZÛg f�d�d „ZÜd eXeDf�d!�d"„ZÝd d eXeDg f�d#�d$„ZÞe[e¤ƒ ef�d%�d&„Zßed d d �d'f�d(�d)„Zà�d*�d+„ Záe\f�d,�d-„Zâeg ef�d.�d/„Zãd g eg f�d0�d1„Zäd g eg f�d2�d3„ZådS (6  é    )Údivision)Úprint_function)Úunpack)Údatetime)ÚPY2N)Úhresult_errorsÚmapi_constantsÚuuid)Ú
EMPTY_UUID)Ú	Structure)ÚNULLÚSTRÚDWORDÚLPDWORDÚUUIDÚPUUIDÚLONGÚULONGÚFILETIMEÚ	PFILETIMEÚBYTEÚSHORTÚLPSTRÚLPWSTRÚUSHORTÚLPLONGÚDWORD_ARRAY)ÚLDAP_SID)ÚNDRÚNDRCALLÚ
NDRPOINTERÚ	NDRSTRUCTÚNDRUNIONÚNDRUniConformantVaryingArrayÚNDRUniConformantArrayÚNDRUniVaryingArray)ÚDCERPCException)Ústring_to_binÚuuidtup_to_binr
   )z$F5CC5A18-4264-101A-8C59-08002B2F8426z56.0c                   @   ó   e Zd Zdd„ ZdS )ÚDCERPCSessionErrorc                 C   sh   | j }|tjv rtj| }d| j |f S |tjv r/tj| d }tj| d }d| j ||f S d| j  S )Nz"NSPI SessionError: code: 0x%x - %sr   é   z'NSPI SessionError: code: 0x%x - %s - %sz+NSPI SessionError: unknown error code: 0x%x)Ú
error_coder   ÚERROR_MESSAGESr   )ÚselfÚkeyÚerror_msg_shortÚerror_msg_verbose© r2   úŠ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/nspi.pyÚ__str__.   s   



zDCERPCSessionError.__str__N©Ú__name__Ú
__module__Ú__qualname__r4   r2   r2   r2   r3   r*   -   ó    r*   c                   @   s.   e Zd ZdefdeffZd	dd„Zdd„ ZdS )
Úhandle_tÚcontext_handle_attributesÚcontext_handle_uuidNFc                 C   s   t  | ||¡ d| d< d S )Nó                   r<   )r!   Ú__init__)r.   ÚdataÚisNDR64r2   r2   r3   r>   C   s   zhandle_t.__init__c                 C   s   | d dkS )Nr<   r=   r2   ©r.   r2   r2   r3   ÚisNullG   s   zhandle_t.isNull)NF)r6   r7   r8   r   r   Ú	structurer>   rB   r2   r2   r2   r3   r:   =   s    þ
r:   é   r+   é   é   é   é   é   é   i  é  i   i	  i%O  i°  i   i   i   z$C840A7DC-42C0-1A10-B4B9-08002B2FE182iè  ié  é    l        é   é@   c                   @   ó   e Zd ZeZdS )ÚPropertyTagArrayN©r6   r7   r8   r   Úitemr2   r2   r2   r3   rP   ž   ó    rP   c                   @   ó   e Zd ZdefdeffZdS )ÚPropertyTagArray_rÚcValuesÚ
aulPropTagN)r6   r7   r8   r   rP   rC   r2   r2   r2   r3   rU   ¡   ó    þrU   c                   @   ó   e Zd ZdeffZdS )ÚPPropertyTagArray_rÚDataN)r6   r7   r8   rU   Úreferentr2   r2   r2   r3   rZ   §   ó    ÿrZ   c                   @   s   e Zd ZdZdS )ÚBinaryÚcN)r6   r7   r8   rR   r2   r2   r2   r3   r^   ­   rS   r^   c                   @   rY   )ÚPBinaryr[   N)r6   r7   r8   r^   r\   r2   r2   r2   r3   r`   °   r]   r`   c                   @   rT   )ÚBinary_rrV   ÚlpbN)r6   r7   r8   r   r`   rC   r2   r2   r2   r3   ra   µ   rX   ra   c                   @   rO   )Ú
ShortArrayN)r6   r7   r8   r   rR   r2   r2   r2   r3   rc   ¼   rS   rc   c                   @   rY   )ÚPShortArrayr[   N)r6   r7   r8   rc   r\   r2   r2   r2   r3   rd   ¿   r]   rd   c                   @   rT   )ÚShortArray_rrV   ÚlpiN)r6   r7   r8   r   rd   rC   r2   r2   r2   r3   re   Ä   rX   re   c                   @   rO   )Ú	LongArrayN)r6   r7   r8   r   rR   r2   r2   r2   r3   rg   Ë   rS   rg   c                   @   rY   )Ú
PLongArrayr[   N)r6   r7   r8   rg   r\   r2   r2   r2   r3   rh   Î   r]   rh   c                   @   rT   )ÚLongArray_rrV   ÚlplN)r6   r7   r8   r   rh   rC   r2   r2   r2   r3   ri   Ó   rX   ri   c                   @   rO   )ÚStringArrayN©r6   r7   r8   r   rR   r2   r2   r2   r3   rk   Ú   rS   rk   c                   @   rY   )ÚPStringArrayr[   N)r6   r7   r8   rk   r\   r2   r2   r2   r3   rm   Ý   r]   rm   c                   @   rT   )ÚStringArray_rrV   ÚlppszAN)r6   r7   r8   r   rm   rC   r2   r2   r2   r3   rn   â   rX   rn   c                   @   rO   )ÚBinaryArrayN)r6   r7   r8   ra   rR   r2   r2   r2   r3   rp   é   rS   rp   c                   @   rY   )ÚPBinaryArrayr[   N)r6   r7   r8   rp   r\   r2   r2   r2   r3   rq   ì   r]   rq   c                   @   rT   )ÚBinaryArray_rrV   ÚlpbinN)r6   r7   r8   r   rq   rC   r2   r2   r2   r3   rr   ñ   rX   rr   c                   @   rO   )ÚFlatUIDArrayN)r6   r7   r8   Ú
PFlatUID_rrR   r2   r2   r2   r3   rt   ø   rS   rt   c                   @   rY   )ÚPFlatUIDArrayr[   N)r6   r7   r8   rt   r\   r2   r2   r2   r3   rv   û   r]   rv   c                   @   rT   )ÚFlatUIDArray_rrV   ÚlpguidN)r6   r7   r8   r   rv   rC   r2   r2   r2   r3   rw      rX   rw   c                   @   rO   )ÚWStringArrayN©r6   r7   r8   r   rR   r2   r2   r2   r3   ry     rS   ry   c                   @   rY   )ÚPWStringArrayr[   N)r6   r7   r8   ry   r\   r2   r2   r2   r3   r{   
  r]   r{   c                   @   rT   )ÚWStringArray_rrV   ÚlppszWN)r6   r7   r8   r   r{   rC   r2   r2   r2   r3   r|     rX   r|   c                   @   rO   )ÚDateTimeArrayN)r6   r7   r8   r   rR   r2   r2   r2   r3   r~     rS   r~   c                   @   rY   )ÚPDateTimeArrayr[   N)r6   r7   r8   r~   r\   r2   r2   r2   r3   r     r]   r   c                   @   rT   )ÚDateTimeArray_rrV   ÚlpftN)r6   r7   r8   r   r   rC   r2   r2   r2   r3   r€     rX   r€   c                   @   sÖ   e Zd ZdeffZi ddef“ddef“ddef“dd	ef“d
de	f“dde
f“ddef“ddef“ddef“ddef“ddef“ddef“ddef“ddef“ddef“d d!ef“d"d#ef“d#efd#efd$œ¥Zd%S )&ÚPROP_VAL_UNIONÚtagrE   ÚirF   Úlé   Úbé   ÚlpszArK   Úbiné   ÚlpszWéH   rx   rN   Úfté
   Úerri  ÚMVii  ÚMVli  ÚMVszAi  ÚMVbiniH  ÚMVguidi  ÚMVszWi@  ÚMVftr+   Ú	lReserved)rD   r   N)r6   r7   r8   r   Ú	commonHdrr   r   r   r   ra   r   ru   r   r   re   ri   rn   rr   rw   r|   r€   Úunionr2   r2   r2   r3   r‚   %  sR    ÿÿþýüûúùø	÷
öõôóòñðïír‚   c                   @   ó"   e Zd ZdefdefdeffZdS )ÚPropertyValue_rÚ	ulPropTagÚ
ulReservedÚValueN)r6   r7   r8   r   r‚   rC   r2   r2   r2   r3   rœ   A  ó
    ýrœ   c                   @   rY   )ÚPPropertyValue_rr[   N)r6   r7   r8   rœ   r\   r2   r2   r2   r3   r¡   H  r]   r¡   c                   @   rO   )ÚPropertyValueN)r6   r7   r8   rœ   rR   r2   r2   r2   r3   r¢   N  rS   r¢   c                   @   rY   )ÚPPropertyValuer[   N)r6   r7   r8   r¢   r\   r2   r2   r2   r3   r£   Q  r]   r£   c                   @   r›   )ÚPropertyRow_rÚReservedrV   ÚlpPropsN)r6   r7   r8   r   r£   rC   r2   r2   r2   r3   r¤   V  r    r¤   c                   @   rY   )ÚPPropertyRow_rr[   N)r6   r7   r8   r¤   r\   r2   r2   r2   r3   r§   ]  r]   r§   c                   @   rO   )ÚPropertyRowSetN)r6   r7   r8   r¤   rR   r2   r2   r2   r3   r¨   c  rS   r¨   c                   @   rT   )ÚPropertyRowSet_rÚcRowsÚaRowN)r6   r7   r8   r   r¨   rC   r2   r2   r2   r3   r©   f  rX   r©   c                   @   rY   )ÚPPropertyRowSet_rr[   N)r6   r7   r8   r©   r\   r2   r2   r2   r3   r¬   l  r]   r¬   c                   @   ó   e Zd ZdS )ÚRestriction_rN©r6   r7   r8   r2   r2   r2   r3   r®   r  ó    r®   c                   @   rY   )ÚPRestriction_rr[   N)r6   r7   r8   r®   r\   r2   r2   r2   r3   r±   u  r]   r±   c                   @   rO   )ÚAndRestrictionN)r6   r7   r8   r®   rR   r2   r2   r2   r3   r²   {  rS   r²   c                   @   rY   )ÚPAndRestrictionr[   N)r6   r7   r8   r²   r\   r2   r2   r2   r3   r³   ~  r]   r³   c                   @   rT   )ÚAndRestriction_rÚcResÚlpResN)r6   r7   r8   r   r³   rC   r2   r2   r2   r3   r´   ƒ  rX   r´   c                   @   rY   )ÚNotRestriction_rr¶   N)r6   r7   r8   r±   rC   r2   r2   r2   r3   r·   Œ  r]   r·   c                   @   r›   )ÚContentRestriction_rÚulFuzzyLevelr�   ÚlpPropN©r6   r7   r8   r   r¡   rC   r2   r2   r2   r3   r¸   ’  r    r¸   c                   @   ó"   e Zd ZdefdefdeffZdS )ÚBitMaskRestriction_rÚrelBMRr�   ÚulMaskN©r6   r7   r8   r   rC   r2   r2   r2   r3   r½   š  r    r½   c                   @   r›   )ÚPropertyRestriction_rÚrelopr�   rº   Nr»   r2   r2   r2   r3   rÁ   ¢  r    rÁ   c                   @   r¼   )ÚComparePropsRestriction_rrÂ   Ú
ulPropTag1Ú
ulPropTag2NrÀ   r2   r2   r2   r3   rÃ   ª  r    rÃ   c                   @   rT   )ÚSubRestriction_rÚulSubObjectr¶   N)r6   r7   r8   r   r±   rC   r2   r2   r2   r3   rÆ   ²  rX   rÆ   c                   @   r¼   )ÚSizeRestriction_rrÂ   r�   ÚcbNrÀ   r2   r2   r2   r3   rÈ   ¹  r    rÈ   c                   @   r¼   )ÚExistRestriction_rÚulReserved1r�   ÚulReserved2NrÀ   r2   r2   r2   r3   rÊ   Á  r    rÊ   c                   @   sX   e Zd ZdeffZdefdefdefdefde	fde
fdefd	efd
efdefdœ
ZdS )ÚRestrictionUnion_rrƒ   ÚresAndÚresOrÚresNotÚ
resContentÚresPropertyÚresComparePropsÚ
resBitMaskÚresSizeÚresExistÚresSubRestriction)
r   r+   rE   rF   rG   rH   rI   é   é   é	   N)r6   r7   r8   r   r™   r´   ÚOrRestriction_rr·   r¸   rÁ   rÃ   r½   rÈ   rÊ   rÆ   rš   r2   r2   r2   r3   rÍ   É  s    ÿ
örÍ   ÚrtÚresc                   @   ó"   e Zd ZdefdefdeffZdS )ÚPropertyName_rrx   rž   ÚlIDN)r6   r7   r8   ru   r   r   rC   r2   r2   r2   r3   rß   â  r    rß   c                   @   rY   )ÚPPropertyName_rr[   N)r6   r7   r8   rß   r\   r2   r2   r2   r3   rá   é  r]   rá   c                   @   rO   )ÚPropertyNameSetN©r6   r7   r8   rß   rR   r2   r2   r2   r3   râ   ï  rS   râ   c                   @   rT   )ÚPropertyNameSet_rÚcNamesrW   N)r6   r7   r8   r   râ   rC   r2   r2   r2   r3   rä   ò  rX   rä   c                   @   rY   )ÚPPropertyNameSet_rr[   N)r6   r7   r8   rä   r\   r2   r2   r2   r3   ræ   ø  r]   ræ   c                   @   rO   )ÚStringsArrayNrl   r2   r2   r2   r3   rç   þ  rS   rç   c                   @   rT   )ÚStringsArray_rÚCountÚStringsN)r6   r7   r8   r   rç   rC   r2   r2   r2   r3   rè     rX   rè   c                   @   rO   )ÚWStringsArrayNrz   r2   r2   r2   r3   rë     rS   rë   c                   @   rT   )ÚWStringsArray_rré   rê   N)r6   r7   r8   r   rë   rC   r2   r2   r2   r3   rì     rX   rì   c                
   @   sF   e Zd Zdefdefdefdefdefdefdefdefd	eff	Zd
S )ÚSTATÚSortTypeÚContainerIDÚ
CurrentRecÚDeltaÚNumPosÚ	TotalRecsÚCodePageÚTemplateLocaleÚ
SortLocaleN)r6   r7   r8   r   r   rC   r2   r2   r2   r3   rí     s    ÷rí   c                   @   rY   )ÚPSTATr[   N)r6   r7   r8   rí   r\   r2   r2   r2   r3   r÷     r]   r÷   z<L=0c                	   @   s$   e Zd ZddddddddeffZd	S )
ÚEphemeralEntryID)ÚIDTypez<B=0x87©ÚR1ú<B=0©ÚR2rü   ©ÚR3rü   )ÚProviderUIDz16s=b"\x00"*16©ÚR4z<L=0x0000001©ÚDisplayTypez<LÚMIdN)r6   r7   r8   Ú
MinEntryIDrC   r2   r2   r2   r3   rø   (  s    ørø   c                   @   s   e Zd ZeZdZdd„ ZdS )ÚPermanentEntryID))rù   rü   rú   rý   rÿ   )r  z16s=self["default_guid"]r  r  )ÚDistinguishedNameÚzc                 C   s   | d S )Nr	  r2   rA   r2   r2   r3   r4   B  ó   zPermanentEntryID.__str__N)r6   r7   r8   Ú	GUID_NSPIÚdefault_guidrC   r4   r2   r2   r2   r3   r  5  s    r  c                   @   ó&   e Zd ZdZdefdefdeffZdS )ÚNspiBindr   ÚdwFlagsÚpStatÚpServerGuidN)r6   r7   r8   Úopnumr   rí   ru   rC   r2   r2   r2   r3   r  J  ó    ýr  c                   @   rÞ   )ÚNspiBindResponser  ÚcontextHandleÚ	ErrorCodeN)r6   r7   r8   ru   r:   r   rC   r2   r2   r2   r3   r  R  r    r  c                   @   s    e Zd ZdZdefdeffZdS )Ú
NspiUnbindr+   r  r¥   N©r6   r7   r8   r  r:   r   rC   r2   r2   r2   r3   r  Z  s
    þr  c                   @   rT   )ÚNspiUnbindResponser  r  N)r6   r7   r8   r:   r   rC   r2   r2   r2   r3   r  a  rX   r  c                   @   ó,   e Zd ZdZdefdefdefdeffZdS )ÚNspiUpdateStatrE   ÚhRpcr¥   r  ÚplDeltaN)	r6   r7   r8   r  r:   r   rí   r   rC   r2   r2   r2   r3   r  h  ó    ür  c                   @   rÞ   )ÚNspiUpdateStatResponser  r  r  N)r6   r7   r8   rí   r   r   rC   r2   r2   r2   r3   r   q  r    r   c                   @   rO   )r   NrQ   r2   r2   r2   r3   r   y  rS   r   c                   @   rY   )ÚPDWORD_ARRAYr[   N)r6   r7   r8   r   r\   r2   r2   r2   r3   r!  |  r]   r!  c                   @   s>   e Zd ZdZdefdefdefdefdefdefdeffZ	d	S )
ÚNspiQueryRowsrF   r  r  r  ÚdwETableCountÚlpETableré   Ú	pPropTagsN)
r6   r7   r8   r  r:   r   rí   r!  rZ   rC   r2   r2   r2   r3   r"  �  s    ùr"  c                   @   rÞ   )ÚNspiQueryRowsResponser  ÚppRowsr  N©r6   r7   r8   rí   r¬   r   rC   r2   r2   r2   r3   r&  �  r    r&  c                   @   s8   e Zd ZdZdefdefdefdefdefdeffZ	dS )	ÚNspiSeekEntriesrG   r  r¥   r  ÚpTargetr$  r%  N)
r6   r7   r8   r  r:   r   rí   rœ   rU   rC   r2   r2   r2   r3   r)  •  ó    úr)  c                   @   rÞ   )ÚNspiSeekEntriesResponser  r'  r  Nr(  r2   r2   r2   r3   r,     r    r,  c                   @   r  )ÚNspiDNToMIdrØ   r  r¥   ÚpNamesN)r6   r7   r8   r  r:   r   rè   rC   r2   r2   r2   r3   r-  Ñ  r  r-  c                   @   rT   )ÚNspiDNToMIdResponseÚ	ppOutMIdsr  N©r6   r7   r8   rZ   r   rC   r2   r2   r2   r3   r/  Ù  rX   r/  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )ÚNspiGetPropListrÙ   r  r  ÚdwMIdrô   Nr  r2   r2   r2   r3   r2  à  r  r2  c                   @   rT   )ÚNspiGetPropListResponser0  r  Nr1  r2   r2   r2   r3   r4  é  rX   r4  c                   @   r  )ÚNspiGetPropsrÚ   r  r  r  r%  N)	r6   r7   r8   r  r:   r   r÷   rZ   rC   r2   r2   r2   r3   r5  ð  r  r5  c                   @   rT   )ÚNspiGetPropsResponser'  r  N©r6   r7   r8   r§   r   rC   r2   r2   r2   r3   r6  ù  rX   r6  c                   @   s2   e Zd ZdZdefdefdefdefdeffZdS )ÚNspiCompareMIdsr�   r  r¥   r  ÚMId1ÚMId2N)r6   r7   r8   r  r:   r   rí   rC   r2   r2   r2   r3   r8     ó    ûr8  c                   @   rT   )ÚNspiCompareMIdsResponseÚplResultr  N)r6   r7   r8   r   r   rC   r2   r2   r2   r3   r<  
  rX   r<  c                   @   r  )ÚNspiGetSpecialTableé   r  r  r  Ú	lpVersionN)	r6   r7   r8   r  r:   r   r÷   r   rC   r2   r2   r2   r3   r>  "  r  r>  c                   @   s"   e Zd ZdefdefdeffZdS )ÚNspiGetSpecialTableResponser@  r'  r  N)r6   r7   r8   r   r¬   rC   r2   r2   r2   r3   rA  +  s
    úrA  c                   @   s8   e Zd ZdZdefdefdefdefdefdeffZdS )	ÚNspiGetTemplateInforD   r  r  ÚulTypeÚpDNÚ
dwCodePageÚ
dwLocaleIDN)r6   r7   r8   r  r:   r   r   rC   r2   r2   r2   r3   rB  6  r+  rB  c                   @   rT   )ÚNspiGetTemplateInfoResponseÚppDatar  Nr7  r2   r2   r2   r3   rG  A  rX   rG  c                   @   ó2   e Zd ZdZdefdefdefdefdeffZdS )ÚNspiModLinkAtté   r  r  r�   r3  Ú
lpEntryIdsN)r6   r7   r8   r  r:   r   rr   rC   r2   r2   r2   r3   rJ  H  r;  rJ  c                   @   rY   )ÚNspiModLinkAttResponser  N)r6   r7   r8   r   rC   r2   r2   r2   r3   rM  R  r]   rM  c                   @   s&   e Zd ZdZdefdefdeffZdS )ÚNspiQueryColumnsrM   r  r¥   r  Nr  r2   r2   r2   r3   rN  g  r  rN  c                   @   rT   )ÚNspiQueryColumnsResponseÚ	ppColumnsr  Nr1  r2   r2   r2   r3   rO  o  rX   rO  c                   @   r  )ÚNspiGetNamesFromIDsé   r  r¥   rx   r%  N)	r6   r7   r8   r  r:   r   ru   rZ   rC   r2   r2   r2   r3   rQ  v  r  rQ  c                   @   rÞ   )ÚNspiGetNamesFromIDsResponseÚppReturnedPropTagsÚppNamesr  N)r6   r7   r8   rZ   ræ   r   rC   r2   r2   r2   r3   rS    r    rS  c                   @   rO   )ÚPropertyName_r_ARRAYNrã   r2   r2   r2   r3   rV  ‡  rS   rV  c                   @   rI  )ÚNspiGetIDsFromNamesé   r  r¥   r  Ú
cPropNamesr.  N)r6   r7   r8   r  r:   r   rV  rC   r2   r2   r2   r3   rW  Š  r;  rW  c                   @   rT   )ÚNspiGetIDsFromNamesResponseÚ
ppPropTagsr  Nr1  r2   r2   r2   r3   rZ  ”  rX   rZ  c                   @   ó2   e Zd ZdZdefdefdefdefdeffZ	dS )ÚNspiResolveNamesé   r  r¥   r  r%  ÚpaStrN)
r6   r7   r8   r  r:   r   rí   rZ   rè   rC   r2   r2   r2   r3   r]  ›  r;  r]  c                   @   rÞ   )ÚNspiResolveNamesResponseÚppMIdsr'  r  N©r6   r7   r8   rZ   r¬   r   rC   r2   r2   r2   r3   r`  ¥  r    r`  c                   @   r\  )ÚNspiResolveNamesWé   r  r¥   r  r%  r_  N)
r6   r7   r8   r  r:   r   rí   rZ   rì   rC   r2   r2   r2   r3   rc  ­  r;  rc  c                   @   rÞ   )ÚNspiResolveNamesWResponsera  r'  r  Nrb  r2   r2   r2   r3   re  ·  r    re  rØ   rÙ   rÚ   r�   r?  rK  rR  rX  r^  rd  c                 C   s(   | t kr| S | dd … dkr| d S | S )Néÿÿÿÿú )r   )Ústringr2   r2   r3   ÚcheckNullStringÜ  s
   ri  c                 C   s(   t | ƒ} | |  d¡d d … }t |¡S )Nú=r+   )ÚstrÚrfindr	   r'   )ÚlegacyDNÚguidr2   r2   r3   Úget_guid_from_dnå  s   
ro  Fc                 C   sD   |rd}nd}t | ƒ}trd|t |¡f S d|tt |¡dƒf S )Nz/guid=z./o=NT5/ou=00000000000000000000000000000000/cn=z%s%sÚascii)r'   r   ÚbinasciiÚhexlifyrk  )rn  ÚminimizeÚdn_templateÚguid_binr2   r2   r3   Úget_dn_from_guidë  s   rv  c                   @   r)   )ÚEXCH_SIDc                 C   s   |   ¡ S ©N)ÚformatCanonicalrA   r2   r2   r3   r4   û  r  zEXCH_SID.__str__Nr5   r2   r2   r2   r3   rw  ú  r9   rw  c                   @   r­   )ÚExchBinaryObjectNr¯   r2   r2   r2   r3   rz  þ  r°   rz  c                 C   s   | d8 } | d } | S )Nl     }*{Gíi€–˜ r2   )Útr2   r2   r3   ÚgetUnixTime  s   r|  c                 C   sÌ  i }| d D �]\}|d j d d }|d j| }|d }t|tƒs1t|tƒs1t|tƒs1t|tƒr:t|d ƒ||< qt|tƒr^|dv rSt	|d  
d¡d d… ƒ||< q|d d d	… ||< qt|tƒrn|d d d	… ||< qt|tƒrêd
 |d ¡}|dv rƒt|ƒ}nb|dkr‘|d d	…  d¡}nT|dd… tkr®|dd… dkr®|d d… dkr®t|ƒ}n7|d d… dkrÉ|dd… dkrÉt|ƒdkrÉt|ƒ}n|dv rÕt |¡ ¡ }n|dkrátd|ƒd }nt	|ƒ}|||< qt|tƒ�rg }|d D ]}| d
 |d ¡¡ qö|||< qt|tƒ�r(g }|d D ]}| |d d d	… ¡ �q|||< qt|tƒ�rHg }|d D ]}| |d d d	… ¡ �q4|||< qt|tƒ�r_t ttd|  ¡ ƒd ƒ¡||< q|||< q|S )Nr¦   rŸ   r   r�   r[   )l    p zutf-16leéþÿÿÿrf  ó    rb   )l   N  l   ê i0zutf-8rG   rd  é   s      s       s   ‡   rL   )l   Ú iÄhl   æ iøiöz<lrs   ro   r}   z<Q)!rC   ÚfieldsÚ
isinstancer   r   r   r   Úintr   rz  Úencoder   ra   Újoinrw  Údecoder  r  Úlenrø   r	   Úbin_to_stringÚlowerr   rr   Úappendrn   r|   r   r   Úfromtimestampr|  ÚgetData)Ú
rowSetElemÚrowÚpropÚprop_name_in_unionÚ
prop_valueÚPropTagÚvalueÚarrayr2   r2   r3   ÚsimplifyPropertyRow  sp   
ÿþý
 


0
,





ÿ
r”  c                 C   s$   g }| d D ]	}|  t|ƒ¡ q|S )Nr«   )r‰  r”  )ÚpropertyRowSetÚretÚrowSetr2   r2   r3   ÚsimplifyPropertyRowSetF  s   r˜  c                 C   s2   t ƒ }|d krt|d d< n||d< |  |¡}|S )Nr  rô   )r  Ú
CP_TELETEXÚrequest)Údcer  rš  Úrespr2   r2   r3   Ú	hNspiBindN  s   
r�  c                 C   s    t ƒ }||d< | j|dd�}|S )Nr  F©Ú
checkError)r  rš  )r›  Úhandlerrš  rœ  r2   r2   r3   ÚhNspiUnbindY  s   r¡  c                 C   s0   t ƒ }||d< ||d< ||d< | j|dd�}|S )Nr  r  r  Frž  )r  rš  )r›  r   r  r  rš  rœ  r2   r2   r3   ÚhNspiUpdateStat`  s   r¢  é2   c	                 C   s  t ƒ }	||	d< ||	d< ||	d< |d kr||	d d< n||	d< t|ƒdkrT|D ]}
tƒ }|
|d< |	d d	  |¡ q&t|ƒ|	d d
< t|ƒd |	jd jd jd	 jd< n||	d< t|ƒdkrx|D ]}tƒ }||d< |	d  |¡ q`t|ƒ|	d< nt|	d< d|	d< |  |	¡}|S )Nr  r  ré   r  rï   r   r[   r%  rW   rV   r+   ÚMaximumCountr$  r#  )r"  r†  r   r‰  r€  r   rš  )r›  r   r  r  rï   ré   r%  ÚpPropTagsRawr$  rš  rW   rŽ  ÚmIDÚelemrœ  r2   r2   r3   ÚhNspiQueryRowsi  s2   &
r¨  c	                 C   sþ   t ƒ }	||	d< ||	d d< t|	d d< d|	d d< d|	d d	 d
< t|ƒ|	d d	 d< t|ƒdkrE|D ]}
tƒ }|
|d< |	d  |¡ q3n||	d< t|ƒdkrt|D ]}tƒ }||d< |	d d  |¡ qQt|ƒd |	jd jd jd< n||	d< |  |	¡}|S )Nr  r  rï   rî   i 0r*  r�   r‹   rŸ   rƒ   rŒ   r   r[   r$  r%  rW   r+   r¤  )r)  ÚSortTypeDisplayNameri  r†  r   r‰  r€  rš  )r›  r   ÚdisplayNamerï   rî   r$  ÚlpETableRawr%  r¥  rš  r¦  r§  rW   rŽ  rœ  r2   r2   r3   ÚhNspiSeekEntriesŒ  s.   ý 
r¬  c                 C   sZ   t ƒ }||d< t|ƒ|d d< |D ]}tƒ }t|ƒ|d< |d d  |¡ q|  |¡}|S )Nr  r.  ré   r[   rê   )r-  r†  r   ri  r‰  rš  )r›  r   r.  rš  ÚnameÚlpstrrœ  r2   r2   r3   ÚhNspiDNToMId´  s   
r¯  c                 C   ó4   t ƒ }||d< ||d< ||d< ||d< |  |¡}|S )Nr  r3  r  rô   )r2  rš  )r›  r   r3  r  rô   rš  rœ  r2   r2   r3   ÚhNspiGetPropListÁ  s   
r±  c                 C   sª   t ƒ }||d< ||d< ||d d< ||d d< ||d d< |D ]}tƒ }	||	d< |d d	  |	¡ qt|ƒd
 |d d< t|ƒd
 |jd jd jd	 jd< |  |¡}
|
S )Nr  r  r  rð   rï   rô   r[   r%  rW   r+   rV   r¤  )r5  r   r‰  r†  r€  rš  )r›  r   rï   rð   r  rô   r%  rš  rW   rŽ  rœ  r2   r2   r3   ÚhNspiGetPropsË  s   $
r²  c                 C   r°  )Nr  r  r  r@  )r>  rš  )r›  r   r  r  r@  rš  rœ  r2   r2   r3   ÚhNspiGetSpecialTableÞ  s   
r³  l   ÿÿ c           	      C   sH   t ƒ }||d< ||d< ||d< t|ƒ|d< ||d< ||d< |  |¡}|S )Nr  r  rC  rD  rE  rF  )rB  ri  rš  )	r›  r   rD  rF  rC  rE  r  rš  rœ  r2   r2   r3   ÚhNspiGetTemplateInfoé  s   
r´  c           
      C   s‚   t ƒ }||d< ||d< ||d< ||d< |D ]}tƒ }| ¡ |d< t|d ƒ|d< |d d  |¡ qt|ƒ|d d< |  |¡}	|	S )	Nr  r  r�   r3  rb   rV   rL  rs   )rJ  ra   r‹  r†  r‰  rš  )
r›  r   r  r�   r3  rL  rš  Ú	lpEntryIdrŽ  rœ  r2   r2   r3   ÚhNspiModLinkAttõ  s   
r¶  c                 C   s$   t ƒ }||d< ||d< |  |¡}|S )Nr  r  )rN  rš  )r›  r   r  rš  rœ  r2   r2   r3   ÚhNspiQueryColumns  s
   
r·  c           	      C   s¬   t ƒ }||d< ||d< t|ƒdkrA|D ]}tƒ }||d< |d d  |¡ qt|ƒ|d d< t|ƒd |jd jd jd jd	< n|tkrKt|jd< n||d< |  |¡}|S )
Nr  rx   r   r[   r%  rW   rV   r+   r¤  )rQ  r†  r   r‰  r€  r   rš  )	r›  r   rx   r%  r¥  rš  rW   rŽ  rœ  r2   r2   r3   ÚhNspiGetNamesFromIDs  s   &
r¸  c                 C   óú   t ƒ }||d< ||d d< t|ƒdkrC|D ]}tƒ }||d< |d d  |¡ qt|ƒ|d d< t|ƒd	 |jd jd jd jd
< n|tkrMt|jd< n||d< t|ƒdkrv|D ]}	tƒ }
t|	ƒ|
d< |d d  |
¡ qYt|ƒ|d d< |  |¡}|S ©Nr  r  rï   r   r[   r%  rW   rV   r+   r¤  r_  rê   ré   )	r]  r†  r   r‰  r€  r   r   ri  rš  ©r›  r   rï   r%  r¥  r_  rš  rW   rŽ  Ú	paStrElemr’  rœ  r2   r2   r3   ÚhNspiResolveNames"  ó*   &
r½  c                 C   r¹  rº  )	rc  r†  r   r‰  r€  r   r   ri  rš  r»  r2   r2   r3   ÚhNspiResolveNamesW=  r¾  r¿  )Frx  )æÚ
__future__r   r   Ústructr   r   Úsixr   rq  Úimpacketr   r   r	   Úimpacket.uuidr
   Úimpacket.structurer   Úimpacket.dcerpc.v5.dtypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úimpacket.ldap.ldaptypesr   Úimpacket.dcerpc.v5.ndrr   r   r    r!   r"   r#   r$   r%   Úimpacket.dcerpc.v5.rpcrtr&   r'   r(   ÚMSRPC_UUID_NSPIr*   r:   ÚPtypEmbeddedTableÚPtypNullÚPtypUnspecifiedÚDT_MAILUSERÚDT_DISTLISTÚDT_FORUMÚDT_AGENTÚDT_ORGANIZATIONÚDT_PRIVATE_DISTLISTÚDT_REMOTE_MAILUSERÚDT_CONTAINERÚDT_TEMPLATEÚDT_ADDRESS_TEMPLATEÚ	DT_SEARCHÚNSPI_DEFAULT_LOCALEr™  ÚCP_WINUNICODEÚNORM_IGNORECASEÚNORM_IGNORENONSPACEÚNORM_IGNORESYMBOLSÚSORT_STRINGSORTÚNORM_IGNOREKANATYPEÚNORM_IGNOREWIDTHr  ÚMID_BEGINNING_OF_TABLEÚMID_END_OF_TABLEÚMID_CURRENTÚMID_UNRESOLVEDÚMID_AMBIGUOUSÚMID_RESOLVEDr©  ÚSortTypePhoneticDisplayNameÚSortTypeDisplayName_ROÚSortTypeDisplayName_WÚfAnonymousLoginÚfSkipObjectsÚfEphIDÚNspiAddressCreationTemplatesÚNspiUnicodeStringsÚNspiUnicodeProptypesÚNspiVerifyNamesÚTI_TEMPLATEÚ	TI_SCRIPTÚTI_EMTÚTI_HELPFILE_NAMEÚTI_HELPFILE_CONTENTSÚfDeleteÚ	FlatUID_rru   rP   rU   rZ   r^   r`   ra   rc   rd   re   rg   rh   ri   rk   rm   rn   rp   rq   rr   rt   rv   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½   rÁ   rÃ   rÆ   rÈ   rÊ   rÍ   rC   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/  r2  r4  r5  r6  r8  r<  r>  rA  rB  rG  rJ  rM  rN  rO  rQ  rS  rV  rW  rZ  r]  r`  rc  re  ÚOPNUMSri  ro  rv  rw  Úbytesrz  r|  r”  r˜  r�  r¡  r¢  r¨  r¬  r¯  r±  r²  r³  r´  r¶  r·  r¸  r½  r¿  r2   r2   r2   r3   Ú<module>   sÔ  L(þ	1		
	
	



ÿþýüûø	÷
öõóòñïî
í
ì
ë	@	
ÿ#ÿ(
