
    hO                         d Z ddl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 ddlmZ ddlmZmZmZ ddlT  G d d	e          Zd
 Zd Z G d de          Z G d de          ZdS )z
EPT map (EndPoinT mapper)
    N)conf)
ByteEnumFieldConditionalFieldFieldLenFieldIPFieldLEShortFieldMultipleTypeFieldPacketListField
ShortFieldStrLenFieldUUIDEnumField)Packet)DCE_RPC_INTERFACES_NAMESDCE_RPC_INTERFACES_NAMES_revDCE_RPC_TRANSFER_SYNTAXES)*c                   P    e Zd Z edddd           eddd           gZd	 ZdS )
octet_string_tcountN<Hvalue)fmt	length_of    c                     | j         S Nr   pkts    [/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/layers/msrpce/ept.py<lambda>zoctet_string_t.<lambda>-   s    #) r   length_fromc                     t           j        S r   r   padding_layerself_s     r    default_payload_classz$octet_string_t.default_payload_class0       !!r   )__name__
__module____qualname__r   r   fields_descr*    r   r    r   r   *   sX        gtAAAGS.C.CDDDK
" " " " "r   r   c                     t          j                    }|                    t                     |                    |           S r   )r   copyupdater   getxdcts     r    	_uuid_resr8   4   s3    
"
'
)
)CJJ()))771::r   c                     t          j                    }|                    d t          j                    D                        |                    |           S )Nc                     i | ]\  }}||	S r0   r0   ).0kvs      r    
<dictcomp>z!_uuid_res_rev.<locals>.<dictcomp>>   s    CCCA1CCCr   )r   r2   r3   r   itemsr4   r5   s     r    _uuid_res_revr@   ;   sK    
&
+
-
-CJJCC!:!@!B!BCCCDDD771::r   c                      e Zd Z edd           eddi 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(           e ed)d*d+ ,          d-            e ed. ej	        d/          e
efej        0          d1            e ed2d          d3            e ed4d*d5 ,          d6            ed7d8           e ed9d          d: d;f ed9d          d< d=f ed9d>          d? d@f ed9d*dA ,          dB dCf ed9d*dD ,          dE dFfg ed9d*dG ,                    gZdH Zd8S )Iprot_and_addr_t
lhs_lengthr   protocol_identifierzOSI OID   UUID   NCADG_OSI_CLSN   NCACN_IP_TCP   NCADG_IP_UDP	   IP
   zRPC connectionless protocol   z RPC connection-oriented protocol   NCALRPC   NCACN_NP   NCACN_NB   NCACN_NB_NB   	NCACN_SPX   	NCADG_IPX   NCACN_AT_DSP   NCADG_AT_DSP   NCADG_NBNCACN_VNS_SPPNCADG_VNS_IPC
NCACN_HTTP)         oid c                     | j         dz
  S N   rC   r   s    r    r!   zprot_and_addr_t.<lambda>k       3>A;M r   r"   c                     | j         dk    S )Nr   rD   r   s    r    r!   zprot_and_addr_t.<lambda>l       /36 r   uuidz$8a885d04-1ceb-11c9-9fe8-08002b104860)uuid_fmtc                     | j         dk    S NrE   rq   r   s    r    r!   zprot_and_addr_t.<lambda>z   rr   r   versionc                     | j         dk    S rv   rq   r   s    r    r!   zprot_and_addr_t.<lambda>}   s    C4Ks4R r   lhsc                     | j         dz
  S rl   rn   r   s    r    r!   zprot_and_addr_t.<lambda>   ro   r   c                     | j         dvS )N)r   rI   rE   rq   r   s    r    r!   zprot_and_addr_t.<lambda>   s    /F r   
rhs_lengthNrhsc                     | j         dv S )N)rI   rK   rh   rq   r   s    r    r!   zprot_and_addr_t.<lambda>   s     7;K K r   portc                     | j         dk    S )NrM   rq   r   s    r    r!   zprot_and_addr_t.<lambda>        73 > r   addr   c                     | j         dv S )N)rO   rP   rE   rq   r   s    r    r!   zprot_and_addr_t.<lambda>   s     7? J r   zminor versionc                     | j         S r   r|   r   s    r    r!   zprot_and_addr_t.<lambda>       3> r   c                     | j         dk    S )NrS   rq   r   s    r    r!   zprot_and_addr_t.<lambda>   r   r   z
named pipec                     | j         S r   r   r   s    r    r!   zprot_and_addr_t.<lambda>   r   r   c                     | j         dk    S )NrU   rq   r   s    r    r!   zprot_and_addr_t.<lambda>   s     74 ? r   znetbios namec                     | j         S r   r   r   s    r    r!   zprot_and_addr_t.<lambda>   s    3> r   c                     t           j        S r   r%   r'   s     r    r*   z%prot_and_addr_t.default_payload_class   r+   r   )r,   r-   r.   r   r   r   r   r   rs   rF   r8   r@   	FORMAT_LEr	   r   r   r/   r*   r0   r   r    rB   rB   B   s        		
 	

 	!Yf & n n d 3 8 i j  j!" m#$ k%& k'( n)* n+, j-. &%"3  	
 	
@ 	Kr/M/MNNN66	
 	

 	M	@AA !
 '0	 	 	 76	
 	
 	LA&&(R(R	
 	
 	Kr/M/MNNNFF	
 	

 		
 	
 	 Jua((KK	 GE1%%>>	 !L**JJ#  Kr7Q7QRRR>>   Kr7Q7QRRR??"/: Kr/I/IJJJ=	
 	
MfKP" " " " "r   rB   c                   j    e Zd Z edddd           ed e            ged           gZd Zd	 ZdS )
protocol_tower_tr   Nr   floors)r   count_ofc                     | j         S r   r   r   s    r    r!   zprotocol_tower_t.<lambda>   s    39 r   )
count_fromc           	         t          | j                  dk     rt          d          | j        d         j        dk    rt          d          | j        d         j        dk    rt          d          | j        d         j        d	v rY| j        d
                             d          dd                    d | j        d
d          d d d         D                       }n| j        d         j        dk    rH| j        d                             d          d| j        d
         j                                        }n"t          d| j        d         j        z            | j        d                             d          |fS )N   z.Malformed protocol_tower_t (not enough floors)r   rE   z(Malformed protocol_tower_t (bad floor 1)rm   z(Malformed protocol_tower_t (bad floor 2)   )rO   rP      z%protocol_identifier%:c              3      K   | ]K}t          |j        t                    r|j                                        nt	          |j                  V  Ld S r   )
isinstancer}   bytesdecodestr)r;   r6   s     r    	<genexpr>z,protocol_tower_t._summary.<locals>.<genexpr>   s]         '1&>&>NAELLNNNCJJ     r   rQ   zUnknown RPC transport: %sz%uuid% (%version%.%r,rhs%))lenr   
ValueErrorrD   sprintfjoinr}   r   )r(   endpoints     r    _summaryzprotocol_tower_t._summary   s   t{aMNNN;q>-44GHHH;q>-44GHHH;q>-;;A&&'>????  ![_TTrT2     HH [^/366A&&'>????A"))+++HH
 +dk!n.PP   KN""#?@@
 	
r   c                 ~    	 d|                                  z  S # t          $ r}t          |          cY d }~S d }~ww xY w)Nz%s %s)r   r   r   )r(   exs     r    	mysummaryzprotocol_tower_t.mysummary   sN    	T]]__,, 	 	 	r77NNNNNN	s    
<7<<)	r,   r-   r.   r   r
   rB   r/   r   r   r0   r   r    r   r      s}        gtAAA_,,		
 	
 	
K
 
 
:    r   r   )__doc__rs   scapy.configr   scapy.fieldsr   r   r   r   r   r	   r
   r   r   r   scapy.packetr   scapy.layers.dcerpcr   r   r   scapy.layers.msrpce.raw.eptr   r8   r@   rB   r   r0   r   r    <module>r      s                                                  * ) ) )" " " " "V " " "    j" j" j" j" j"f j" j" j"Z, , , , ,v , , , , ,r   