
    hC                     ^   d dl mZmZmZmZmZmZmZmZ d dl	m
Z
mZ d dlZ G d de
          Z G d de
          Z G d d	e
          Z G d
 de
          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Z eeed             eeed           dS )    )	XIntFieldIntFieldIntEnumFieldStrLenFieldFieldListFieldConditionalFieldPacketFieldFieldLenField)Packetbind_layersNc                   r    e Zd ZdZ edd           eddd            eddd	           gZddZd Zd
S )Object_NamezObject Namelengthr   _name c                     | j         S Nr   pkts    X/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/contrib/oncrpc.py<lambda>zObject_Name.<lambda>   s         length_fromfillc                     d| j         z
  dz  S )N   r   r   s    r   r   zObject_Name.<lambda>   s    SZ18L r   Nc                     |t          |          }|ddt          |          z
  dz  z  }|| _        || _        || _        d S )N    r   )lenr   r   r   )selfnamer   r   s       r   setzObject_Name.set   sI    >YYF<q3t99}12D
			r   c                 
    d|fS Nr    r"   ss     r   extract_paddingzObject_Name.extract_padding        1ur   )NN)	__name__
__module____qualname__r#   r   r   fields_descr$   r*   r'   r   r   r   r      s        D1GR-C-CDDDFB,L,LMMMK       r   r   c                   2    e Zd ZdZ edd          gZd ZdS )	RM_Headerz	RM HeaderrmNc                     | j         ,dt          | j                  z   }t          j        d|          }t          j        | ||          S )z;Override of post_build to set the rm header == len(payload)Nl        !I)r2   r!   payloadstructpackr   
post_build)r"   r   paynew_rms       r   r8   zRM_Header.post_build*   sC    7?#dl"3"33F+dF++C sC000r   )r,   r-   r.   r#   r   r/   r8   r'   r   r   r1   r1   $   s>        D	$K1 1 1 1 1r   r1   c                   J    e Zd Zd Z edd           eddddd          gZdS )RPCxidr   mtypeCALLREPLYr      N)r,   r-   r.   r#   r   r   r/   r'   r   r   r<   r<   2   sB        D	%WaV!8!899KKKr   r<   c                       e Zd ZdZ edd           ed e            e           edd           edd           edd           edg  ed	d
          d           gZ	d Z
d
S )	Auth_Unixz	AUTH Unixstampr   mnameuidgidnum_auxgidsauxgidsr   Nc                     | j         S r   )rI   r   s    r   r   zAuth_Unix.<lambda>D   s    3? r   )
count_fromc                 
    d|fS r&   r'   r(   s     r   r*   zAuth_Unix.extract_paddingH   r+   r   )r,   r-   r.   r#   r   r	   r   r   r   r/   r*   r'   r   r   rD   rD   :   s        D	'1G[[]]K88""r88B--22	
 	
 	

K    r   rD   c            	           e Zd ZdZ edd           edd           edd           edd           ed e            e          gZd Zd	S )
Auth_RPCSEC_GSSzAuth RPCSEC_GSSgss_versionr   gss_proceduregss_seq_numgss_servicegss_contextc                 
    d|fS r&   r'   r(   s     r   r*   zAuth_RPCSEC_GSS.extract_paddingV   r+   r   N)	r,   r-   r.   r#   r   r	   r   r/   r*   r'   r   r   rO   rO   L   s        D""!$$""""M;;==+>>K    r   rO   c                   R    e Zd ZdZ eddd           eddd           gZd	 ZdS )
Verifier_RPCSEC_GSSzVerifier RPCSEC_GSSr!   Ndata)	length_ofr   c                     | j         S r   )r!   r   s    r   r   zVerifier_RPCSEC_GSS.<lambda>^   s    sw r   r   c                 
    d|fS r&   r'   r(   s     r   r*   z#Verifier_RPCSEC_GSS.extract_paddinga   r+   r   )r,   r-   r.   r#   r
   r   r/   r*   r'   r   r   rW   rW   Z   s[         DeTV444FB,>,>???K
    r   rW   c                      e Zd ZdZ edd           edd           edd           edd	           ed
ddddd           edd           e ed e            e          d            e ed e	            e	          d            edd	dddd           e edd          d            e ed e            e          d            e ed e
            e
          d           gZd Zd ZdS )RPC_CallzRPC Callversion   programi pversion   	procedurer   aflavorrB   	AUTH_NULL	AUTH_UNIX
RPCSEC_GSS)r   rB      alengthNa_unixc                     | j         dk    S NrB   rd   r   s    r   r   zRPC_Call.<lambda>t       q( r   a_rpcsec_gssc                     | j         dk    S Nrh   rm   r   s    r   r   zRPC_Call.<lambda>x   rn   r   vflavorvlengthc                     | j         dk    S rq   rr   r   s    r   r   zRPC_Call.<lambda>   rn   r   v_unixc                     | j         dk    S rl   ru   r   s    r   r   zRPC_Call.<lambda>   rn   r   v_rpcsec_gssc                     | j         dk    S rq   ru   r   s    r   r   zRPC_Call.<lambda>   rn   r   c                    |dS d|v r(| j         j                            |d                    |d= |                                D ]0\  }}t	          | j         |          rt          | j         ||           1| j        dk    rdnt          | j                   | _        | j	        dk    rdnt          | j
                  | _        dS z1Used to easily set the fields in an a_unix packetNrF   r   )rj   rF   r$   itemshasattrsetattrrd   r!   ri   rr   rv   rs   r"   kwargsargvals       r   set_authzRPC_Call.set_auth   s    >FfK!!&/222w 	/ 	/HCt{C(( /S#... LA--qq3t{3C3C LA--qq3t{3C3Cr   c                 2   | j         dk    r!| j        dk    rt          j        | ||          S | j         dk    r|| j        u| j         dk    rt          | j                  }nt          | j                  }|dd         t          j	        d|          z   |dd         z   }t          j        | ||          S | j        dk    rD| j
        =|dd         t          j	        dt          | j                            z   |dd         z   }t          j        | ||          S )	z.Override of post_build to handle length fieldsr   Nrh      r4             )rd   rr   r   r8   ri   r!   ro   rj   r6   r7   rs   rv   )r"   r   r9   pack_lens       r   r8   zRPC_Call.post_build   s"   <1!2!2 $T3444<1!5|q  t011t{++crc(+dH--.bcc(C $T3444<1!5crc(+dC$4$4556bcc(C  sC000r   )r,   r-   r.   r#   r   r   r   r	   rD   rO   rW   r/   r   r8   r'   r   r   r]   r]   e   s       D 	AF##Qa  q==	
 	
 	D!!K))++y99((	
 	
 	K(9(9?KK((	
 	
 	q==	
 	
 	HY%%((	
 	
 	K))++y99((	
 	
 	K##%%# 
 )(	
 	
=&KPD D D 1 1 1 1 1r   r]   c            	           e Zd ZdZ edd           eddddd           e ed e            e          d	            ed
d           edd          gZ	d Z
dS )	RPC_ReplyzRPC Response
reply_statr   flavorre   rf   rA   rj   c                     | j         dk    S rl   )r   r   s    r   r   zRPC_Reply.<lambda>   s    
a r   r   accept_statc                 <   |dS d|v r(| j         j                            |d                    |d= |                                D ]0\  }}t	          | j         |          rt          | j         ||           1| j        dk    rdnt          | j                   | _        dS r{   )	rj   rF   r$   r|   r}   r~   r   r!   r   r   s       r   r   zRPC_Reply.set_auth   s    >FfK!!&/222w 	/ 	/HCt{C(( /S#...;!++aaT[1A1Ar   N)r,   r-   r.   r#   r   r   r   r	   rD   r/   r   r'   r   r   r   r      s        Dq!!Xqkk"B"BCCK))++y99''	
 	
 	1""	KB B B B Br   r   )r>   rB   )scapy.fieldsr   r   r   r   r   r   r	   r
   scapy.packetr   r   r6   r   r1   r<   rD   rO   rW   r]   r   r'   r   r   <module>r      s5  A A A A A A A A A A A A A A A A A A A A , , , , , , , ,     &   *1 1 1 1 1 1 1 1    &          $    f       &   O1 O1 O1 O1 O1v O1 O1 O1dB B B B B B B B: C # # # # C! $ $ $ $ $ $r   