
    hPV              
       .   d Z ddlmZ ddlmZmZmZ ddlmZm	Z	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 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#  G d de$          Z% G d	 d
e          Z& G d de          Z' G d de'e          Z(dUdZ)d Z*dVdZ+dUdZ,d Z-d Z.	 	 	 	 	 dWdZ/dXdZ0 G d de1          Z2 e!d          Z3 G d dee3         e2           Z4ej5        6                    e4            G d! d"e4e7                   Z8 G d# d$e8          Z9 G d% d&e4e:                   Z; G d' d(e4e:                   Z< G d) d*e8          Z= G d+ d,e4e>                   Z? G d- d.e8          Z@ G d/ d0e<          ZA G d1 d2e<          ZB G d3 d4e<          ZC G d5 d6e<          ZD G d7 d8e<          ZE G d9 d:e<          ZF G d; d<e<          ZG G d= d>e<          ZH G d? d@e<          ZI G dA dBe<          ZJ G dC dDe<          ZK G dE dFe<          ZL G dG dHe4e"e>ee4e                  f                            ZM G dI dJeM          ZN G dK dLe<          ZO G dM dNe8          ZP G dO dPe8          ZQ G dQ dRe8          ZR G dS dTe8          ZSdS )Yz&
Basic Encoding Rules (BER) for ASN.1
    )warning)chborbbytes_encode)binrepr	inet_aton	inet_ntoa)ASN1TagASN1_BADTAGASN1_BadTag_Decoding_Error
ASN1_ClassASN1_Class_UNIVERSALASN1_CodecsASN1_DECODING_ERRORASN1_Decoding_ErrorASN1_Encoding_Error
ASN1_ErrorASN1_Object_ASN1_ERROR)AnyAnyStrDictGenericListOptionalTupleTypeTypeVarUnioncastc                       e Zd ZdS )BER_ExceptionN__name__
__module____qualname__     R/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/asn1/ber.pyr"   r"   6   s        Dr(   r"   c                        e Zd Z	 	 ddZd ZdS )BER_Encoding_ErrorNr(   c                 X    t                               | |           || _        || _        d S N)	Exception__init__	remainingencoded)selfmsgr1   r0   s       r)   r/   zBER_Encoding_Error.__init__;   ,     	4%%%"r(   c                     t                               |           }t          | j        t                    r |d| j                                        z  z  }n|d| j        z  z  }|d| j        z  z  }|S )Nz
### Already encoded ###
%sz
### Already encoded ###
%r
### Remaining ###
%r)r.   __str__
isinstancer1   r   strshowr0   r2   ss     r)   r7   zBER_Encoding_Error.__str__E   s    d##dlK00 	@04<3G3G3I3IIIAA04<??A	&77r(   Nr(   r$   r%   r&   r/   r7   r'   r(   r)   r+   r+   :   ?                r(   r+   c                        e Zd Z	 	 ddZd ZdS )BER_Decoding_ErrorNr(   c                 X    t                               | |           || _        || _        d S r-   )r.   r/   r0   decoded)r2   r3   rC   r0   s       r)   r/   zBER_Decoding_Error.__init__Q   r4   r(   c                     t                               |           }t          | j        t                    r |d| j                                        z  z  }n|d| j        z  z  }|d| j        z  z  }|S )Nz
### Already decoded ###
%sz
### Already decoded ###
%rr6   )r.   r7   r8   rC   r   r9   r0   r:   s     r)   r7   zBER_Decoding_Error.__str__[   r<   r(   r=   r>   r'   r(   r)   rA   rA   P   r?   r(   rA   c                       e Zd ZdS )BER_BadTag_Decoding_ErrorNr#   r'   r(   r)   rF   rF   f   s        Dr(   rF   c                 d   ddl m} ||j        }| dk    r|dk    rt          |           S d}| s|dk    r't          | dz            |z   }| dz  } |dz  }| !|dk    't	          |          dk    r!t          dt	          |          |fz            t          t	          |          d	z            |z   S )
Nr   )conf   r(            z4BER_len_enc: Length too long (%i) to be encoded [%r]   )scapy.configrH   ASN1_default_long_sizer   lenr"   )llsizerH   r;   s       r)   BER_len_encrS   k   s    !!!!!!|*	SyyTQYY2wwA
 qT	NNQ
q	  q 1vv||BVVQK
 
 	
 s1vv}!!r(   c                 :   t          | d                   }|dz  s|| dd          fS |dz  }t          |           |k    r&t          dt          |           dz
  |fz  |           d}| d|dz            D ]}|dz  }|t          |          z  }|| |dz   d          fS )Nr   rM   rL   rI   z,BER_len_dec: Got %i bytes while expecting %ir0   rK   )r   rP   rA   )r;   tmp_lenrQ   cs       r)   BER_len_decrX      s    !A$iiGT> !""~tOG
1vv :VVaZ!"
 
 
 	

 
Bq1}  
q
c!ffq1r(   rL   c                     g }| s|dk    rN|                     d| dz             t          |          dk    r|dxx         dz  cc<   | dz  } |dz  }| H|dk    Nd                    d |D                       S )Nr   rI   rL   rM      r(   c              3   4   K   | ]}t          |          V  d S r-   r   .0ks     r)   	<genexpr>zBER_num_enc.<locals>.<genexpr>   s(      &&qCFF&&&&&&r(   )insertrP   join)rQ   rR   xs      r)   BER_num_encrd      s    
A
 q	BIq66A::aDDDDLDDD
q	  q 88&&A&&&&&&r(   c                    t          |           dk    rt          d|           |}t          |           D ](\  }}t          |          }|dz  }||dz  z  }|dz  s n)|dz  rt          d|           || |dz   d          fS )	Nr   zBER_num_dec: got empty stringrU   rZ   rI   rM   z*BER_num_dec: unfinished number descriptionrL   )rP   rA   	enumerater   )r;   cls_idrc   irW   s        r)   BER_num_decri      s    
1vv{{ !@ANNNNA!  1FF	a	QX4x 	E	4x . !M+,. . . 	.aAi<r(   c                     t          | d                   }|dz  dk    r|| dd          fS t          | dd          |dz	            S )Nr      rL      )rg   )r   ri   )r;   rc   s     r)   
BER_id_decrm      sT    $ 	AaD		A4x4!ABB%x 1QRR5a0000r(   c                     | dk     rt          |           S t          |           }t          |d                   }|dz  }|dz  }|dz  }t          |          |dd          z   S )N   r   rZ   rl   rk   rL   )r   rd   r   )nr;   tags      r)   
BER_id_encrr      sf    3ww1vv NN!A$iit	t3xx!ABB%r(   NF c                 |   d }t          |           dk    rd}|Yt          |           \  }} ||k    r!|s||k    rt          ||||fz  |           |}t          t	          |                    | z   } nG|Et          |           \  }} ||k    r|st          ||||fz  |           |}t          |           \  }	} || fS )Nr   zNBER_tagging_dec: observed tag 0x%.02x does not match expected tag 0x%.02x (%s)rU   )rP   rm   rA   r   intrX   )
r;   
hidden_tagimplicit_tagexplicit_tagsafe_fnamereal_tagerr_msgber_idls
             r)   BER_tagging_decr      s    H
1vvzz. 	 #"1IFA%% &, 6 6,Wf86 .6"#% % % %  &HC
OO$$q(AA%"1IFA%% &,6<"@@"#% % % %  &Hq>>DAqQ;r(   c                     t          |           dk    rN|t          |          | dd          z   } n1|/t          |          t          t          |                     z   | z   } | S )Nr   rL   )rP   rr   rS   )r;   rw   rx   s      r)   BER_tagging_encr     sc    
1vvzz#<((1QRR50AA%<((;s1vv+>+>>BAHr(   c                        e Zd Z fdZ xZS )BERcodec_metaclassc           	         t          dt          t          |                               | |||                    }	 |j                            |j        |           n/# t          $ r" t          d|j        d|j                   Y nw xY w|S )NzType[BERcodec_Object[Any]]zError registering z for )	r    superr   __new__rq   registercodecr.   r   )clsnamebasesdctrW   	__class__s        r)   r   zBERcodec_metaclass.__new__  s     -)3//77T5#NNP P	FENN17A&&&& 	F 	F 	FGQUUUAGGDEEEEE	Fs    A )B	B	)r$   r%   r&   r   __classcell__r   s   @r)   r   r     s8                r(   r   _Kc                      e Zd Zej        Zej        Ze	d             Z
e	d             Ze	d             Ze	d             Ze	d             Ze		 	 dd            Ze		 	 dd	            Ze		 dd
            Ze	dd            ZdS )BERcodec_Objectc                 6    | j                             |          S r-   )rq   asn1_object)r   vals     r)   r   zBERcodec_Object.asn1_object%  s     w""3'''r(   c                 J    |s t          | j        d| j        |          d S )Nz': Got empty object while expecting tag rU   )rA   r$   rq   )r   r;   s     r)   check_stringzBERcodec_Object.check_string*  sD      	$sww(34   	 	r(   c                     |                      |           t          |          \  }}t          |t                    r| j        |k    r"t          d| j        ||| j        fz  |          |S )Nz'%s: Got tag [%i/%#x] while expecting %rrU   )r   rm   r8   ru   rq   rF   r$   )r   r;   rq   	remainders       r)   
check_typezBERcodec_Object.check_type3  s}     	#AY#s## 	sw#~~+9sC12=>    r(   c                     |                      |          }|st          d| j        z  |          t          |          S )Nz%%s: No bytes while expecting a lengthrU   )r   rA   r$   rX   )r   r;   s2s      r)   check_type_get_lenz"BERcodec_Object.check_type_get_len?  sU     ^^A 	@$%L%(\&2=>@ @ @ @2r(   c                     |                      |          \  }}t          |          |k     r)t          d| j        t          |          |fz  |          ||d |         ||d          fS )Nz#%s: Got %i bytes while expecting %irU   )r   rP   rA   r$   )r   r;   r~   s3s       r)   check_type_check_lenz$BERcodec_Object.check_type_check_lenH  s     &&q))2r77Q;;$%J&)lCGGQ%?&@KLN N N N"RaR&"QRR&  r(   NFc                    ||}n| j         j        }|                     |           t          |          \  }}||vr8|}t	          |          dk    r|d d         dz   }t          d||fz  |          ||         }t          d|                    t          j	                            }	|	t          k    r3t          |          \  }
}t          |d |
                   ||
d          fS |	                    |||          S )N      s   ...zUnknown prefix [%02x] for [%r]rU   zType[BERcodec_Object[_K]])rq   contextr   rm   rP   rA   r    	get_codecr   BERr   ri   r   dec)r   r;   r   ry   _contextpr   trq   r   r~   s              r)   do_deczBERcodec_Object.do_decQ  s    HHwH!!}}9HA1vv{{crcFVO$%E&'V&,78: : : :qk0]];?335 5O##y))DAqq!u%%qu,,yyHd+++r(   c                    |s|                      |||          S 	 |                      |||          S # t          $ r?}t                              |j        ||          \  }}t          |          |fcY d }~S d }~wt          $ r}t          ||          dfcY d }~S d }~wt          $ r}t          ||          dfcY d }~S d }~ww xY w)N)excr(   )	r   rF   r   r   r0   r   rA   r   r   )r   r;   r   ry   eoremains          r)   r   zBERcodec_Object.decm  s     	0::a$///
	6::a$///( 	* 	* 	*'++Wd IAv q>>6)))))))! 	6 	6 	6&qa000#5555555 	6 	6 	6&qa000#5555555	6s>   2 
C4A60C6CBCC(C :C Cc                 2    |                      ||d          S )NT)ry   )r   )r   r;   r   s      r)   safedeczBERcodec_Object.safedec  s     wwq'w---r(   r   c                     t          |t          t          f          rt                              ||          S 	 t
                              t          |          |          S # t          $ r t          d          w xY w)Nsize_lenz#Trying to encode an invalid value !)r8   strbytesBERcodec_STRINGencBERcodec_INTEGERru   	TypeError)r   r;   r   s      r)   r   zBERcodec_Object.enc  s     a#u&& 	G"&&q8&<<<G'++CFFX+FFF G G G EFFFGs   (A# #A=NFr-   r   )r$   r%   r&   r   r   r   r   ANYrq   classmethodr   r   r   r   r   r   r   r   r   r'   r(   r)   r   r   !  sC       OE

"C( ( [(   [ 	 	 [	   [ ! ! [!  , , , [,6  6 6 6 [6(  . . . [. G G G [G G Gr(   r   )	metaclassc                   P    e Zd Zej        Zedd            Ze	 	 dd            ZdS )r   r   c                    g }	 |                     |dz             d|cxk    rdk     rn nn.d|cxk    rdk    rn n|                     d           |dz  }|snWd |D             }|                     t          t          |          |                     |                     t          t	          | j                                       |                                 d	                    |          S )
NTrJ   ir   rM   rK   c                 F    g | ]}t          t          |                    S r'   )r   ru   )r^   rW   s     r)   
<listcomp>z(BERcodec_INTEGER.enc.<locals>.<listcomp>  s$    %%%QSQ[[%%%r(   rR   r(   )appendrS   rP   r   ru   rq   reverserb   )r   rh   r   lsr;   s        r)   r   zBERcodec_INTEGER.enc  s     	IIa$hq}}}}1}}}}}a3		!!GA 	 &%"%%%	SVV(333444	S\\""###			xx{{r(   NFc                     |                      |          \  }}}d}|r6t          |d                   dz  rd}|D ]}|dz  }|t          |          z  }|                     |          |fS )Nr   rM   rK   )r   r   r   )r   r;   r   ry   r~   r   rc   rW   s           r)   r   zBERcodec_INTEGER.do_dec  s     **1--1a 	1Q4yy4   aSVVq!!1$$r(   r   r   )	r$   r%   r&   r   INTEGERrq   r   r   r   r'   r(   r)   r   r     sb        

&C   [$  % % % [% % %r(   r   c                       e Zd Zej        ZdS )BERcodec_BOOLEANN)r$   r%   r&   r   BOOLEANrq   r'   r(   r)   r   r             

&CCCr(   r   c                   P    e Zd Zej        Ze	 	 dd            Zedd            ZdS )BERcodec_BIT_STRINGNFc                    |                      |          \  }}}t          |          dk    rt          |d                   }|r|dk    rt          d|          d                    d |dd          D                       }|dk    r|d |          }| j                            |          |fS t          d|          )	Nr   rZ   z4BERcodec_BIT_STRING: too many unused_bits advertisedrU   rs   c              3   t   K   | ]3}t          t          |                                        d           V  4dS )rK   N)r   r   zfillr^   rc   s     r)   r`   z-BERcodec_BIT_STRING.do_dec.<locals>.<genexpr>  s<      AAaQ..q11AAAAAAr(   rL   z@BERcodec_BIT_STRING found no content (not even unused_bits byte))r   rP   r   rA   rb   rq   r   )r   r;   r   ry   r~   r   unused_bitsfss           r)   r   zBERcodec_BIT_STRING.do_dec  s     **1--1aq66A::ad))K a(J    AA1QRR5AAAAABQ+&7&&r**A--$.   r(   r   c                    t          |          }t          |          dz  dk    rd}ndt          |          dz  z
  }|d|z  z  }d                    d t          t	          |          gdz   D                       }t          |          |z   }t          t          | j                            t          t          |          |          z   |z   S )NrK   r      0r(   c           	   3      K   | ]>}t          t          d                     d |D                       d                    V  ?dS )r(   c              3   4   K   | ]}t          |          V  d S r-   r\   )r^   ys     r)   r`   z4BERcodec_BIT_STRING.enc.<locals>.<genexpr>.<genexpr>  s(      %8%8c!ff%8%8%8%8%8%8r(      N)r   ru   rb   r   s     r)   r`   z*BERcodec_BIT_STRING.enc.<locals>.<genexpr>  sc       3 3 SXX%8%8a%8%8%888!<<== 3 3 3 3 3 3r(   r   )	r   rP   rb   zipiterr   ru   rq   rS   )r   _sr   r;   r   s        r)   r   zBERcodec_BIT_STRING.enc  s     q66A:??KKc!ffqj.K##AHH 3 3!DGG9q=13 3 3 3 3q 3sw<<  ;s1vvH#E#E#EEIIr(   r   r   )	r$   r%   r&   r   
BIT_STRINGrq   r   r   r   r'   r(   r)   r   r     sh        

)C    [4 J J J [J J Jr(   r   c                   P    e Zd Zej        Zedd            Ze	 	 dd            ZdS )r   r   c                     t          |          }t          t          | j                            t	          t          |          |          z   |z   S )Nr   )r   r   ru   rq   rS   rP   )r   r   r   r;   s       r)   r   zBERcodec_STRING.enc  sD     3sw<<  ;s1vvH#E#E#EEIIr(   NFc                 l    |                      |          \  }}}| j                            |          |fS r-   )r   rq   r   )r   r;   r   ry   r~   r   s         r)   r   zBERcodec_STRING.do_dec  s8     **1--1aw""1%%q((r(   r   r   )	r$   r%   r&   r   STRINGrq   r   r   r   r'   r(   r)   r   r     sf        

%CJ J J [J  ) ) ) [) ) )r(   r   c                   >     e Zd Zej        Zed fd	            Z xZS )BERcodec_NULLr   c                     |dk    r$t          t          | j                            dz   S t          | |                               ||          S )Nr       r   )r   ru   rq   r   r   )r   rh   r   r   s      r)   r   zBERcodec_NULL.enc  sJ     66s37||$$u,,c??&&q8&<<<r(   r   )	r$   r%   r&   r   NULLrq   r   r   r   r   s   @r)   r   r     sO        

#C= = = = = [= = = = =r(   r   c                   P    e Zd Zej        Zedd            Ze	 	 dd            ZdS )BERcodec_OIDr   c                    t          |          }|r3d |                    d                              d          D             }nt                      }t	          |          dk    r|dxx         d|d         z  z  cc<   |d= d                    d |D                       }t          t          | j                            t          t	          |          |	          z   |z   S )
Nc                 ,    g | ]}t          |          S r'   )ru   r   s     r)   r   z$BERcodec_OID.enc.<locals>.<listcomp>   s    ???a3q66???r(      .r   rL   (   r   r(   c              3   4   K   | ]}t          |          V  d S r-   )rd   r]   s     r)   r`   z#BERcodec_OID.enc.<locals>.<genexpr>&  s(      11[^^111111r(   r   )
r   stripsplitlistrP   rb   r   ru   rq   rS   )r   _oidr   oidlstr;   s         r)   r   zBERcodec_OID.enc  s     4   	??399T??#8#8#>#>???CC&&Cs88q==FFFb3q6k!FFFAHH11S111113sw<<  ;s1vvH#E#E#EEIIr(   NFc                 z   |                      |          \  }}}g }|r)t          |          \  }}|                    |           |)t          |          dk    r/|                    d|d         dz             |dxx         dz  cc<   |                     d                    d |D                                 |fS )Nr   r   rL   r   c              3   Z   K   | ]&}t          |                              d           V  'dS )asciiN)r   encoder]   s     r)   r`   z&BERcodec_OID.do_dec.<locals>.<genexpr>9  s4      %J%Jc!ffmmG&<&<%J%J%J%J%J%Jr(   )r   ri   r   rP   ra   r   rb   )r   r;   r   ry   r~   r   r   s          r)   r   zBERcodec_OID.do_dec)  s     **1--1a 	q>>DAqJJqMMM  	 HHqLLJJq#a&B,'''FFFbLFFFOODII%J%Jc%J%J%JJJKK
 	
r(   r   r   )	r$   r%   r&   r   OIDrq   r   r   r   r'   r(   r)   r   r     sf        

"CJ J J [J  
 
 
 [
 
 
r(   r   c                       e Zd Zej        ZdS )BERcodec_ENUMERATEDN)r$   r%   r&   r   
ENUMERATEDrq   r'   r(   r)   r   r   >          

)CCCr(   r   c                       e Zd Zej        ZdS )BERcodec_UTF8_STRINGN)r$   r%   r&   r   UTF8_STRINGrq   r'   r(   r)   r  r  B  s        

*CCCr(   r  c                       e Zd Zej        ZdS )BERcodec_NUMERIC_STRINGN)r$   r%   r&   r   NUMERIC_STRINGrq   r'   r(   r)   r  r  F          

-CCCr(   r  c                       e Zd Zej        ZdS )BERcodec_PRINTABLE_STRINGN)r$   r%   r&   r   PRINTABLE_STRINGrq   r'   r(   r)   r	  r	  J          

/CCCr(   r	  c                       e Zd Zej        ZdS )BERcodec_T61_STRINGN)r$   r%   r&   r   
T61_STRINGrq   r'   r(   r)   r  r  N  r   r(   r  c                       e Zd Zej        ZdS )BERcodec_VIDEOTEX_STRINGN)r$   r%   r&   r   VIDEOTEX_STRINGrq   r'   r(   r)   r  r  R  s        

.CCCr(   r  c                       e Zd Zej        ZdS )BERcodec_IA5_STRINGN)r$   r%   r&   r   
IA5_STRINGrq   r'   r(   r)   r  r  V  r   r(   r  c                       e Zd Zej        ZdS )BERcodec_GENERAL_STRINGN)r$   r%   r&   r   GENERAL_STRINGrq   r'   r(   r)   r  r  Z  r  r(   r  c                       e Zd Zej        ZdS )BERcodec_UTC_TIMEN)r$   r%   r&   r   UTC_TIMErq   r'   r(   r)   r  r  ^  s        

'CCCr(   r  c                       e Zd Zej        ZdS )BERcodec_GENERALIZED_TIMEN)r$   r%   r&   r   GENERALIZED_TIMErq   r'   r(   r)   r  r  b  r  r(   r  c                       e Zd Zej        ZdS )BERcodec_ISO646_STRINGN)r$   r%   r&   r   ISO646_STRINGrq   r'   r(   r)   r  r  f  s        

,CCCr(   r  c                       e Zd Zej        ZdS )BERcodec_UNIVERSAL_STRINGN)r$   r%   r&   r   UNIVERSAL_STRINGrq   r'   r(   r)   r"  r"  j  r  r(   r"  c                       e Zd Zej        ZdS )BERcodec_BMP_STRINGN)r$   r%   r&   r   
BMP_STRINGrq   r'   r(   r)   r%  r%  n  r   r(   r%  c                   P    e Zd Zej        Zedd            Ze	 	 dd            ZdS )BERcodec_SEQUENCEr   c                      t          |t                    r|}n!d                     fd|D                       }t          t	           j                            t          t          |          |          z   |z   S )Nr(   c              3   L   K   | ]}|                     j                  V  d S r-   )r   r   )r^   rc   r   s     r)   r`   z(BERcodec_SEQUENCE.enc.<locals>.<genexpr>{  s1      88q!%%	**888888r(   r   )r8   r   rb   r   ru   rq   rS   rP   )r   _llr   rQ   s   `   r)   r   zBERcodec_SEQUENCE.encu  sw     c5!! 	9BB8888C88888B3sw<<  ;s2wwX#F#F#FFKKr(   NFc                    || j         j        }|                     |          \  }}|d |         ||d          }}g }|r	 t                              |||          \  }}	|	}nK# t
          $ r>}
|
xj        |z  c_        |
j        |                    |
j                   ||
_         d }
~
ww xY w|                    |           |t          |          |k     rt          d|          | 
                    |          |fS )Nz#Not enough bytes to decode sequence)rC   )rq   r   r   r   r   rA   r0   rC   r   rP   r   )r   r;   r   ry   rQ   str   objr   r   errs              r)   r   zBERcodec_SEQUENCE.do_dec~  s2    ?goG''**B#2#w2331 	
+//w 	6 %   ";*JJs{+++! JJqMMM  	 r77R<<$%J-02 2 2 2s##Q&&s    !A" "
B*,9B%%B*r   r   )	r$   r%   r&   r   SEQUENCErq   r   r   r   r'   r(   r)   r(  r(  r  sf        

'CL L L [L  ' ' ' [' ' 'r(   r(  c                       e Zd Zej        ZdS )BERcodec_SETN)r$   r%   r&   r   SETrq   r'   r(   r)   r2  r2    s        

"CCCr(   r2  c                   L    e Zd Zej        Zedd            Zedd            ZdS )BERcodec_IPADDRESSr   c                     	 t          |          }n# t          $ r t          d          w xY wt          t	          | j                            t          t          |          |          z   |z   S )Nz!IPv4 address could not be encodedr   )r   r.   r+   r   ru   rq   rS   rP   )r   ipaddr_asciir   r;   s       r)   r   zBERcodec_IPADDRESS.enc  sx    	J,''AA 	J 	J 	J$%HIII	J3sw<<  ;s1vvH#E#E#EEIIs    ,NFc                     |                      |          \  }}}	 t          |          }n# t          $ r t          d|          w xY w|                     |          |fS )NzIP address could not be decodedrU   )r   r	   r.   rA   r   )r   r;   r   ry   r~   r   r7  s          r)   r   zBERcodec_IPADDRESS.do_dec  s     **1--1a	2$Q<<LL 	2 	2 	2$%F/02 2 2 2	2 |,,a//s	   + Ar   r   )	r$   r%   r&   r   	IPADDRESSrq   r   r   r   r'   r(   r)   r5  r5    s^        

(CJ J J [J 0 0 0 [0 0 0r(   r5  c                       e Zd Zej        ZdS )BERcodec_COUNTER32N)r$   r%   r&   r   	COUNTER32rq   r'   r(   r)   r;  r;            

(CCCr(   r;  c                       e Zd Zej        ZdS )BERcodec_COUNTER64N)r$   r%   r&   r   	COUNTER64rq   r'   r(   r)   r?  r?    r=  r(   r?  c                       e Zd Zej        ZdS )BERcodec_GAUGE32N)r$   r%   r&   r   GAUGE32rq   r'   r(   r)   rB  rB    r   r(   rB  c                       e Zd Zej        ZdS )BERcodec_TIME_TICKSN)r$   r%   r&   r   
TIME_TICKSrq   r'   r(   r)   rE  rE    r   r(   rE  r   )rL   )NNNFrs   )NN)T__doc__scapy.errorr   scapy.compatr   r   r   scapy.utilsr   r   r	   scapy.asn1.asn1r
   r   r   r   r   r   r   r   r   r   r   r   typingr   r   r   r   r   r   r   r   r   r   r    r.   r"   r+   rA   rF   rS   rX   rd   ri   rm   rr   r   r   typer   r   r   r   register_stemru   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r  r"  r%  r(  r2  r5  r;  r?  rB  rE  r'   r(   r)   <module>rO     s           / / / / / / / / / / 5 5 5 5 5 5 5 5 5 5                                                    ,	 	 	 	 	I 	 	 	    ,   ,    ,   ,	 	 	 	 	 2 :	 	 	
" " " "(  &	' 	' 	' 	'   "1 1 16     $  $!%!%$ $ $ $N            WT]]rG rG rG rG rGgbk-? rG rG rG rGj   o . . .%% %% %% %% %%s+ %% %% %%P' ' ' ' '' ' ' '+J +J +J +J +J/#. +J +J +J\) ) ) ) )oc* ) ) )*	= 	= 	= 	= 	=$ 	= 	= 	=#
 #
 #
 #
 #
?5) #
 #
 #
L* * * * ** * * *+ + + + +? + + +. . . . .o . . .0 0 0 0 0 0 0 0* * * * */ * * */ / / / / / / /* * * * */ * * *. . . . .o . . .( ( ( ( ( ( ( (0 0 0 0 0 0 0 0- - - - -_ - - -0 0 0 0 0 0 0 0* * * * */ * * *(' (' (' (' ('eT/#:N5O.O(PQ (' (' ('V# # # # #$ # # #0 0 0 0 0 0 0 00) ) ) ) )) ) ) )) ) ) ) )) ) ) )' ' ' ' '' ' ' '* * * * ** * * * * *r(   