o
    Žõ±j¸@  ã                   @   sh  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
 G dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG d d!„ d!ƒZG d"d#„ d#ƒZG d$d%„ d%ƒZG d&d'„ d'ƒZG d(d)„ d)ƒZG d*d+„ d+ƒZG d,d-„ d-ƒZG d.d/„ d/ƒZG d0d1„ d1ƒZ G d2d3„ d3ƒZ!G d4d5„ d5ƒZ"G d6d7„ d7ƒZ#G d8d9„ d9ƒZ$dXd;d<„Z%d=d>„ Z&dYd@dA„Z'dBdC„ Z(i dDe$“dEe“dFe“dGe!“dHe"“dIe#“dJe“dKe“dLe“dMe“dNe“dOe“dPe“dQe“dRe“dSe“dTe“eeeeedUœ¥Z)G dVdW„ dWej*ƒZ+dS )Zé    N)ÚparseString)ÚGUID)ÚSID)ÚFILETIMEc                   @   s4   e Zd Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZd	S )
ÚFragmentc                 C   s   g | _ g | _d S ©N)ÚFragmentHeadersÚvalues©Úself© r   ú—/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/common/even6/binxml.pyÚ__init__   ó   
zFragment.__init__c                 C   s    d}| j D ]}|| ¡ 7 }q|S )NÚ )r	   Úto_xml)r   ÚtÚvr   r   r   r      s   
zFragment.to_xmlc                 C   s   t  t | ¡¡S r   )r   Úfrom_bufferÚioÚBytesIO)Údatar   r   r   Ú
from_bytes   s   zFragment.from_bytesc                 C   sN   t ƒ }	 t| ttfƒ}t|tƒr	 |S |j |¡ t| ttfƒ}|j	 |¡ qr   )
r   Ú
parse_nextÚFragmentHeaderÚEOFÚ
isinstancer   ÚappendÚElementÚTemplateInstancer	   )ÚbuffÚtir   r   r   r   r      s   
ýúzFragment.from_bufferN)Ú__name__Ú
__module__Ú__qualname__r   r   Ústaticmethodr   r   r   r   r   r   r      s    
r   c                   @   ó    e Zd Zdd„ Zedd„ ƒZdS )r   c                 C   s   d | _ d | _d | _d | _d S r   )ÚFragmentHeaderTokenÚmajorÚminorÚflagsr
   r   r   r   r   )   s   
zFragmentHeader.__init__c                 C   sp   t ƒ }|  d¡|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_|jdkr6tdƒ‚|S )Né   ÚlittleF©Ú	byteorderÚsignedzFragmentHeader err)	r   Úreadr'   Úintr   r(   r)   r*   Ú	Exception)r    Úresr   r   r   r   /   s   
zFragmentHeader.from_bufferN©r"   r#   r$   r   r%   r   r   r   r   r   r   (   s    r   c                   @   s(   e Zd Zdd„ Zdd„ Zedd„ ƒZdS )r   c                 C   ó   d | _ d | _d | _d S r   )ÚTemplateInstanceTokenÚTemplateDefÚTemplateInstanceDatar
   r   r   r   r   <   ó   
zTemplateInstance.__init__c                 C   s  g }g }d}|t | jjƒk �r| jj| }t|tƒr[| |jj¡ t| jj|d  tƒr:| | 	| j
¡¡ |d7 }qt| jj|d  tƒrZ| d¡ | |j	| j
dd�¡ |d7 }qn›t|tƒrµ|jdkr«t| j
j|j tƒ}| j
jj|j jtjks}|r«| d¡ | d¡ d}	 t| jj||  tƒrš|d7 }q‰	 ||7 }|rª| | 	| j
¡¡ q| | 	| j
¡¡ nAt|tƒrÂ| | 	¡ ¡ n4t|tƒrÒ| d| d¡ ¡ n$t|tƒrît |ƒdkrí| d| d¡ ¡ t |ƒdksÝntd	| 	¡  ƒ‚|d7 }|t | jjƒk sd
 |¡S )Nr   r+   é   éÿÿÿÿT)Úis_emptyó   z</%s>zElement not processed! %sz
)Úlenr7   ÚElementsr   ÚStartElementr   ÚNameÚvalueÚCloseStartElementr   r8   ÚCloseEmptyElementÚpopÚSubstitutionÚtokenÚValuesÚSubstitutionIdÚlistÚ	ValueSpecÚValueSpecEntriesÚ	ValueTypeÚNullTypeÚ
EndElementÚ	ValueTextr   r2   Újoin)r   Úxml_elementsÚ	open_tagsÚiÚelÚlist_replacementÚnr   r   r   r   A   s^   

ü






ÿ€Ð
2zTemplateInstance.to_xmlc                 C   s6   t ƒ }|  d¡|_t | ¡|_t | ¡|_| ¡  |S ©Nr+   )r   r0   r6   r7   r   r8   r   )r    r!   r   r   r   r   {   s   zTemplateInstance.from_bufferN©r"   r#   r$   r   r   r%   r   r   r   r   r   r   ;   s
    :r   c                   @   r&   )r7   c                 C   s"   d | _ d | _d | _d | _g | _d S r   )ÚdunnoÚ
TemplateIdÚTemplateDefByteLengthr   r?   r
   r   r   r   r   †   ó
   
zTemplateDef.__init__c              
   C   s~   t ƒ }|  d¡|_t | ¡|_tj|  d¡ddd�|_t	| t
fƒ|_
	 t	| ttttttttfƒ}|j |¡ t|tƒr>	 |S q#)Nr+   é   r,   Fr-   )r7   r0   rZ   r   r   r[   r1   r   r\   r   r   r   r@   rC   rD   rF   rO   rP   r   r?   r   r   )r    Útdr   r   r   r   r   �   s   
úzTemplateDef.from_bufferNr4   r   r   r   r   r7   …   s    r7   c                   @   r&   )r8   c                 C   ó   d | _ g | _d S r   )rK   rH   r
   r   r   r   r   ž   r   zTemplateInstanceData.__init__c                 C   sD   t ƒ }t | ¡|_|jjD ]}t|  |j¡|jƒ}|j 	|¡ q|S r   )
r8   rK   r   rL   Ú
decode_valr0   ÚValueByteLengthrM   rH   r   )r    ÚtidÚvpÚvalr   r   r   r   ¢   s   z TemplateInstanceData.from_bufferNr4   r   r   r   r   r8   �   ó    r8   c                   @   r&   )rK   c                 C   r`   r   )Ú	NumValuesrL   r
   r   r   r   r   ®   r   zValueSpec.__init__c                 C   sD   t ƒ }tj|  d¡ddd�|_t|jƒD ]}|j t 	| ¡¡ q|S ©Nr^   r,   Fr-   )
rK   r1   r   r0   rg   ÚrangerL   r   ÚValueSpecEntryr   )r    ÚvsÚ_r   r   r   r   ²   s
   zValueSpec.from_bufferNr4   r   r   r   r   rK   ­   rf   rK   c                   @   r&   )rj   c                 C   ó   d | _ d | _d S r   )rb   rM   r
   r   r   r   r   »   r   zValueSpecEntry.__init__c                 C   s<   t ƒ }tj|  d¡ddd�|_t|  d¡ƒ|_|  d¡}|S )Nr:   r,   Fr-   r+   )rj   r1   r   r0   rb   rM   )r    rk   Úzeror   r   r   r   ¿   s
   
zValueSpecEntry.from_bufferNr4   r   r   r   r   rj   º   rf   rj   c                   @   r&   )r   c                 C   r`   r   )r@   ÚContentsr
   r   r   r   r   È   r   zElement.__init__c                 C   sh   t ƒ }t| tfƒ|_t| ttfƒ}|j |¡ t|tƒr|S 	 t| ttfƒ}|j |¡ t|tƒr3|S qr   )	r   r   r@   rC   rD   ro   r   r   rO   )r    rU   r   r   r   r   r   Ì   s   

üzElement.from_bufferNr4   r   r   r   r   r   Ç   rf   r   c                   @   r&   )ÚCharDatac                 C   s   d S r   r   r
   r   r   r   r   é   s   zCharData.__init__c                 C   s   t | ƒS r   )r   )r    r   r   r   r   ì   s   zCharData.from_bufferNr4   r   r   r   r   rp   è   ó    rp   c                   @   s*   e Zd Zdd„ Zd	dd„Zedd„ ƒZdS )
r@   c                 C   s"   d | _ d | _d | _d | _d | _d S r   )ÚOpenStartElementTokenÚDependencyIdÚElementByteLengthrA   ÚAttributeListr
   r   r   r   r   ñ   r]   zStartElement.__init__NFc                 C   sJ   | j d u rd| jj S d| jj }|| j  |¡7 }||du r dnd7 }|S )Nz<%s>z<%s Fú>z />)ru   rA   rB   r   )r   Úsubtabler<   r   r   r   r   r   ø   s   
zStartElement.to_xmlc                 C   sh   t ƒ }|  d¡|_tj|  d¡ddd�|_tj|  d¡ddd�|_t | ¡|_|jdkr2t	 | ¡|_	|S )Nr+   r:   r,   Fr-   r^   ó   A)
r@   r0   rr   r1   r   rs   rt   rA   r   ru   )r    Úser   r   r   r     s   
zStartElement.from_buffer)NFrY   r   r   r   r   r@   ð   s
    
	r@   c                   @   r&   )Ú	Attributec                 C   r5   r   )ÚAttributeTokenrA   ÚAttributeCharDatar
   r   r   r   r     r9   zAttribute.__init__c                 C   s.   t ƒ }|  d¡|_t | ¡|_t | ¡|_|S rX   )rz   r0   r{   rA   r   r|   ©r    Úvtr   r   r   r     s
   zAttribute.from_bufferNr4   r   r   r   r   rz     ó    rz   c                   @   ó*   e Zd Zdd„ Zddd„Zedd„ ƒZdS )	r|   c                 C   rm   r   )r{   rB   r
   r   r   r   r     r   zAttributeCharData.__init__Nc                 C   s   | j  |¡S r   )rB   r   ©r   rw   r   r   r   r     s   zAttributeCharData.to_xmlc                 C   s   t ƒ }t| ƒ|_|S r   )r|   r   rB   r}   r   r   r   r   "  s   
zAttributeCharData.from_bufferr   rY   r   r   r   r   r|     s
    
r|   c                   @   r€   )	ru   c                 C   r`   r   )ÚAttributeListByteLengthÚ
Attributesr
   r   r   r   r   )  r   zAttributeList.__init__Nc                 C   s8   g }| j D ]}| d|jj|j |¡f ¡ qd |¡S )Nz%s="%s"ú )rƒ   r   rA   rB   r|   r   rQ   )r   rw   r   Úattrr   r   r   r   -  s   
 
zAttributeList.to_xmlc                 C   sZ   t ƒ }tj|  d¡ddd�|_|  ¡ |j }|  ¡ |kr+|j t 	| ¡¡ |  ¡ |ks|S rh   )
ru   r1   r   r0   r‚   Útellrƒ   r   rz   r   )r    r~   Úposr   r   r   r   3  s   ÿzAttributeList.from_bufferr   rY   r   r   r   r   ru   (  s
    
ru   c                   @   r€   )	rP   c                 C   r5   r   )ÚValueTextTokenÚ
StringTyperB   r
   r   r   r   r   >  r9   zValueText.__init__Nc                 C   s   | j S r   )rB   r�   r   r   r   r   C  s   zValueText.to_xmlc                 C   s,   t ƒ }|  d¡|_|  d¡|_t| ƒ|_|S rX   )rP   r0   rˆ   r‰   Ú read_LengthPrefixedUnicodeStringrB   r}   r   r   r   r   F  s
   
zValueText.from_bufferr   rY   r   r   r   r   rP   =  s
    
rP   c                   @   r€   )	rF   c                 C   s   d | _ d | _d | _d| _d S )NÚsubstitution)rG   rI   rM   rB   r
   r   r   r   r   O  s   
zSubstitution.__init__Nc                 C   st   | j t jkr|j| j  ¡ S t|j| j tƒr2d}|j| j D ]}|dkr)|d7 }|d| 7 }q|S t|j| j ƒS )Nr   z<Data />z<Data>%s</Data>)rM   Ú
BinXmlTyperH   rI   r   r   rJ   Ústr)r   rw   r   Úxr   r   r   r   V  s   zSubstitution.to_xmlc                 C   s>   t ƒ }|  d¡|_tj|  d¡ddd�|_t|  d¡ƒ|_|S ©Nr+   r:   r,   Fr-   )rF   r0   rG   r1   r   rI   rM   )r    Úsr   r   r   r   f  s
   zSubstitution.from_bufferr   rY   r   r   r   r   rF   N  s
    
rF   c                   @   r&   )ÚCharRefc                 C   rm   r   )ÚCharRefTokenrB   r
   r   r   r   r   p  r   zCharRef.__init__c                 C   s.   t ƒ }|  d¡|_tj|  d¡ddd�|_|S r�   )r‘   r0   r’   r1   r   rB   ©r    Úerr   r   r   r   t  s   zCharRef.from_bufferNr4   r   r   r   r   r‘   o  rf   r‘   c                   @   r&   )Ú	EntityRefc                 C   rm   r   )ÚEntityRefTokenrA   r
   r   r   r   r   |  r   zEntityRef.__init__c                 C   ó"   t ƒ }|  d¡|_t | ¡|_|S rX   )r•   r0   r–   rA   r   r“   r   r   r   r   €  ó   zEntityRef.from_bufferNr4   r   r   r   r   r•   {  rf   r•   c                   @   r&   )ÚCDATASectionc                 C   rm   r   )ÚCDATASectionTokenrB   r
   r   r   r   r   ˆ  r   zCDATASection.__init__c                 C   ó    t ƒ }|  d¡|_t| ƒ|_|S rX   )r™   r0   rš   rŠ   rB   )r    Úcdr   r   r   r   Œ  ó   
zCDATASection.from_bufferNr4   r   r   r   r   r™   ‡  rf   r™   c                   @   r&   )ÚPIc                 C   rm   r   )ÚPITargetÚPIDatar
   r   r   r   r   ”  r   zPI.__init__c                 C   s"   t ƒ }t | ¡|_t | ¡|_|S r   )rž   rŸ   r   rA   r    )r    Úpir   r   r   r   ˜  r˜   zPI.from_bufferNr4   r   r   r   r   rž   “  rf   rž   c                   @   r&   )r    c                 C   rm   r   )ÚPIDataTokenrB   r
   r   r   r   r      r   zPIData.__init__c                 C   r›   rX   )r    r0   r¢   rŠ   rB   )r    Úpidr   r   r   r   ¤  r�   zPIData.from_bufferNr4   r   r   r   r   r    Ÿ  rf   r    c                   @   r&   )rŸ   c                 C   rm   r   )ÚPITargetTokenrA   r
   r   r   r   r   ¬  r   zPITarget.__init__c                 C   r—   rX   )rŸ   r0   r¤   rA   r   )r    Úpitr   r   r   r   °  r˜   zPITarget.from_bufferNr4   r   r   r   r   rŸ   «  rf   rŸ   c                   @   r&   )rA   c                 C   r5   r   )ÚNameHashÚNameNumCharsrB   r
   r   r   r   r   ¸  r9   zName.__init__c                 C   sb   t ƒ }tj|  d¡ddd�|_tj|  d¡ddd�|_|  |jd d ¡}| d¡d d… |_|S )Nr:   r,   Fr-   ú	utf-16-ler;   )rA   r1   r   r0   r¦   r§   ÚdecoderB   )r    rW   ÚName_valr   r   r   r   ½  s   zName.from_bufferNr4   r   r   r   r   rA   ·  r   rA   c                   @   r&   )rC   c                 C   ó
   d | _ d S r   ©rG   r
   r   r   r   r   Ç  ó   
zCloseStartElement.__init__c                 C   ó   t ƒ }|  d¡|_|S rX   )rC   r0   rG   ©r    Úcr   r   r   r   Ê  ó   zCloseStartElement.from_bufferNr4   r   r   r   r   rC   Æ  rq   rC   c                   @   r&   )rD   c                 C   r«   r   r¬   r
   r   r   r   r   Ñ  r­   zCloseEmptyElement.__init__c                 C   r®   rX   )rD   r0   rG   r¯   r   r   r   r   Ô  r±   zCloseEmptyElement.from_bufferNr4   r   r   r   r   rD   Ð  rq   rD   c                   @   r&   )rO   c                 C   r«   r   r¬   r
   r   r   r   r   Û  r­   zEndElement.__init__c                 C   r®   rX   )rO   r0   rG   r¯   r   r   r   r   Þ  r±   zEndElement.from_bufferNr4   r   r   r   r   rO   Ú  rq   rO   c                   @   r&   )r   c                 C   rm   r   )rG   rB   r
   r   r   r   r   å  r   zEOF.__init__c                 C   r®   rX   )r   r0   rG   r¯   r   r   r   r   é  r±   zEOF.from_bufferNr4   r   r   r   r   r   ä  rf   r   r+   c                 C   s"   |   ¡ }|  |¡}|  |d¡ |S )Nr   )r†   r0   Úseek)r    Úlengthr‡   r   r   r   r   Úpeek_bufferð  s   
r´   c                 C   s.   t j|  d¡ddd�}|  |d ¡}| d¡S )Nr:   r,   Fr-   r¨   )r1   r   r0   r©   )r    ÚNumUnicodeCharsÚStringValuer   r   r   rŠ   ö  s   
rŠ   r   c                 C   sD   t t| ƒ  | ¡}t|ƒdkr|S t||ƒr|S td|t|ƒf ƒ‚)Nr   z*parse_next error! %s expected but %s found)Útoken_node_lookupr´   r   r>   r   r2   Útype)r    Úexpectedr   r   r   r   r   û  s   
r   c                 C   sÈ  |t jkrdS |t jkr|  d¡S |t jkr|  ¡ S |t jkr'tj| ddd�S |t jkr4tj| ddd�S |t j	krAtj| ddd�S |t j
krNtj| ddd�S |t jkr[tj| ddd�S |t jkrhtj| ddd�S |t jkrutj| ddd�S |t jkr‚tj| ddd�S |t jkr�t d| ¡S |t jkr˜t d| ¡S |t jkr§ttj| ddd�ƒS |t jkr®| S |t jkr¸t | ¡S |t jkrÈd	| d d d
…  ¡  S |t jkrÕt | ¡j ¡ S |t jkrât | ¡j ¡ S |t jkrìt  | ¡S |t j!krüd	| d d d
…  ¡  S |t j"k�rd	| d d d
…  ¡  S |t j#k�rt$ | ¡S |t j%k�r^g }d}d}|t&| ƒk �r\|| ||d … 7 }|dd … dk�sC|dk�rQ| '| d¡d d
… ¡ d}|d7 }|t&| ƒk �s+|S t(d| ƒ‚)Nr   r¨   r,   Tr-   Fz<fz<dÚ0xr;   r   ó    r+   éýÿÿÿs      s     zUnknown format! %s))rM   rN   r‰   r©   ÚAnsiStringTypeÚInt8Typer1   r   Ú	UInt8TypeÚ	Int16TypeÚ
UInt16TypeÚ	Int32TypeÚ
UInt32TypeÚ	Int64TypeÚ
UInt64TypeÚ
Real32TypeÚstructÚunpackÚ
Real64TypeÚBoolTypeÚboolÚ
BinaryTypeÚGuidTyper   Ú	SizeTTypeÚhexÚFileTimeTyper   ÚdatetimeÚ	isoformatÚSysTimeTypeÚSidTyper   ÚHexInt32TypeÚHexInt64TyperŒ   r   ÚStringArrayTyper>   r   r2   )r   Ú	data_typeÚsarT   r   r   r   r   ra     sv   
























ûra   ó    ó   rx   ó   ó   ó   ó   ó   Eó   ó   Fó   ó   Gó   ó   Hó   	ó   Ió   
)ó   ó   ó   r=   ó   c                   @   s¸   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,S )-rM   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rá   rã   rå   rç   ré   rê   rë   rì   r=   rí   ó   ó   ó   ó   ó   ó   ó   !ó   �ó   ‚ó   ƒó   „ó   …ó   †ó   ‡ó   ˆó   ‰ó   Šó   ‹ó   Œó   �ó   �ó   �ó   ‘ó   ’ó   “ó   ”ó   •N).r"   r#   r$   rN   r‰   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÉ   rÊ   rÌ   rÍ   rÎ   rÐ   rÓ   rÔ   rÕ   rÖ   rŒ   r×   ÚAnsiStringArrayTypeÚInt8ArrayTypeÚUInt8ArrayTypeÚInt16ArrayTypeÚUInt16ArrayTypeÚInt32ArrayTypeÚUInt32ArrayTypeÚInt64ArrayTypeÚUInt64ArrayTypeÚReal32ArrayTypeÚReal64ArrayTypeÚBoolArrayTypeÚGuidArrayTypeÚSizeTArrayTypeÚFileTimeArrayTypeÚSysTimeArrayTypeÚSidArrayTypeÚHexInt32ArrayTypeÚHexInt64ArrayTyper   r   r   r   rM   ]  sX    rM   )r+   )r   ),r   ÚenumrÇ   Úxml.dom.minidomr   Ú.aiosmb.wintypes.dtyp.constrcuted_security.guidr   Ú-aiosmb.wintypes.dtyp.constrcuted_security.sidr   Ú(aiosmb.wintypes.dtyp.structures.filetimer   r   r   r   r7   r8   rK   rj   r   rp   r@   rz   r|   ru   rP   rF   r‘   r•   r™   rž   r    rŸ   rA   rC   rD   rO   r   r´   rŠ   r   ra   r·   ÚEnumrM   r   r   r   r   Ú<module>   sž   J!!




Aÿþýüûúùø	÷
öõôóòñðïê