
    h&                        d Z ddl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mZmZmZmZ ddlmZmZmZmZ ddlmZ ddlmZ ddlmZmZ dd	lm Z m!Z!m"Z" dd
l#m$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, G d de          Z- G d de          Z. G d d e          Z/ G d! d"e          Z0 G d# d$e          Z1 G d% d&e          Z2 G d' d(e          Z3 G d) d*e          Z4 G d+ d,e          Z5 G d- d.e
          Z6 G d/ d0e
          Z7 G d1 d2e
          Z8 G d3 d4e
          Z9 G d5 d6e
          Z: G d7 d8e
          Z; G d9 d:e
          Z< G d; d<e
          Z=i dd=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`Z>dadbdcdddedfdgdhZ? G di dje          Z@ G dk dle          ZA G dm dne          ZB G do dpe          ZC G dq dre          ZD G ds dte          ZE G du dve          ZF G dw dxe          ZG G dy dze          ZH G d{ d|e          ZI ee eId}~            ee eId}            ee eId~            ee eId            ee eId}d}           ddZJdS )z,
SNMP (Simple Network Management Protocol).
    )bind_layersbind_bottom_up)ASN1_Packet)ASN1F_INTEGERASN1F_IPADDRESS	ASN1F_OIDASN1F_SEQUENCEASN1F_SEQUENCE_OFASN1F_STRINGASN1F_TIME_TICKSASN1F_enum_INTEGERASN1F_fieldASN1F_CHOICEASN1F_optional
ASN1F_NULL)ASN1_Class_UNIVERSALASN1_Codecs	ASN1_NULLASN1_SEQUENCE)BERcodec_SEQUENCE)sr1)	RandShortIntAutoTime)UDPIPICMP)confc                   2    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ASN1_Class_SNMPSNMP                        N)__name__
__module____qualname__namePDU_GETPDU_NEXTPDU_RESPONSEPDU_SET
PDU_TRAPv1PDU_BULK
PDU_INFORM
PDU_TRAPv2     U/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/layers/snmp.pyr   r       s;        DGHLGJHJJJJr6   r   c                       e Zd Zej        ZdS )ASN1_SNMP_PDU_GETNr)   r*   r+   r   r-   tagr5   r6   r7   r9   r9   ,           

!CCCr6   r9   c                       e Zd Zej        ZdS )ASN1_SNMP_PDU_NEXTNr)   r*   r+   r   r.   r;   r5   r6   r7   r>   r>   0           

"CCCr6   r>   c                       e Zd Zej        ZdS )ASN1_SNMP_PDU_RESPONSENr)   r*   r+   r   r/   r;   r5   r6   r7   rB   rB   4           

&CCCr6   rB   c                       e Zd Zej        ZdS )ASN1_SNMP_PDU_SETNr)   r*   r+   r   r0   r;   r5   r6   r7   rF   rF   8   r<   r6   rF   c                       e Zd Zej        ZdS )ASN1_SNMP_PDU_TRAPv1Nr)   r*   r+   r   r1   r;   r5   r6   r7   rI   rI   <           

$CCCr6   rI   c                       e Zd Zej        ZdS )ASN1_SNMP_PDU_BULKNr)   r*   r+   r   r2   r;   r5   r6   r7   rM   rM   @   r@   r6   rM   c                       e Zd Zej        ZdS )ASN1_SNMP_PDU_INFORMNr)   r*   r+   r   r3   r;   r5   r6   r7   rP   rP   D   rK   r6   rP   c                       e Zd Zej        ZdS )ASN1_SNMP_PDU_TRAPv2Nr)   r*   r+   r   r4   r;   r5   r6   r7   rS   rS   H   rK   r6   rS   c                       e Zd Zej        ZdS )BERcodec_SNMP_PDU_GETNr:   r5   r6   r7   rV   rV   N   r<   r6   rV   c                       e Zd Zej        ZdS )BERcodec_SNMP_PDU_NEXTNr?   r5   r6   r7   rX   rX   R   r@   r6   rX   c                       e Zd Zej        ZdS )BERcodec_SNMP_PDU_RESPONSENrC   r5   r6   r7   rZ   rZ   V   rD   r6   rZ   c                       e Zd Zej        ZdS )BERcodec_SNMP_PDU_SETNrG   r5   r6   r7   r\   r\   Z   r<   r6   r\   c                       e Zd Zej        ZdS )BERcodec_SNMP_PDU_TRAPv1NrJ   r5   r6   r7   r^   r^   ^   rK   r6   r^   c                       e Zd Zej        ZdS )BERcodec_SNMP_PDU_BULKNrN   r5   r6   r7   r`   r`   b   r@   r6   r`   c                       e Zd Zej        ZdS )BERcodec_SNMP_PDU_INFORMNrQ   r5   r6   r7   rb   rb   f   rK   r6   rb   c                       e Zd Zej        ZdS )BERcodec_SNMP_PDU_TRAPv2NrT   r5   r6   r7   rd   rd   j   rK   r6   rd   c                       e Zd Zej        ZdS )ASN1F_SNMP_PDU_GETN)r)   r*   r+   r   r-   ASN1_tagr5   r6   r7   rf   rf   p           &HHHr6   rf   c                       e Zd Zej        ZdS )ASN1F_SNMP_PDU_NEXTN)r)   r*   r+   r   r.   rg   r5   r6   r7   rj   rj   t           'HHHr6   rj   c                       e Zd Zej        ZdS )ASN1F_SNMP_PDU_RESPONSEN)r)   r*   r+   r   r/   rg   r5   r6   r7   rm   rm   x   s        +HHHr6   rm   c                       e Zd Zej        ZdS )ASN1F_SNMP_PDU_SETN)r)   r*   r+   r   r0   rg   r5   r6   r7   ro   ro   |   rh   r6   ro   c                       e Zd Zej        ZdS )ASN1F_SNMP_PDU_TRAPv1N)r)   r*   r+   r   r1   rg   r5   r6   r7   rq   rq              )HHHr6   rq   c                       e Zd Zej        ZdS )ASN1F_SNMP_PDU_BULKN)r)   r*   r+   r   r2   rg   r5   r6   r7   rt   rt      rk   r6   rt   c                       e Zd Zej        ZdS )ASN1F_SNMP_PDU_INFORMN)r)   r*   r+   r   r3   rg   r5   r6   r7   rv   rv      rr   r6   rv   c                       e Zd Zej        ZdS )ASN1F_SNMP_PDU_TRAPv2N)r)   r*   r+   r   r4   rg   r5   r6   r7   rx   rx      rr   r6   rx   no_error   too_big   no_such_name   	bad_value   	read_only   generic_error   	no_access   
wrong_type   wrong_length	   wrong_encoding
   wrong_value   no_creation   inconsistent_value   resource_unavailable   commit_failed   undo_failed   authorization_errornot_writableinconsistent_name)      
cold_start
warm_start	link_downlink_upauth_failureegp_neigh_lossenterprise_specific)r   rz   r|   r~   r   r   r   c                      e Zd Zej        Z e edd           e e	d e
d                               e eddd                     e ed	dd
                     e eddd                              ZdS )SNMPvarbindoid1.3valuer   noSuchObjectN   )implicit_tagnoSuchInstance   endOfMibView   )r)   r*   r+   r   BER
ASN1_codecr	   r   r   r   r   r   	ASN1_rootr5   r6   r7   r   r      s        J	%K1..	
 	

 	zz.$TJJJKKzz"2DtLLLMMzz.$TJJJKK
 
IIIr6   r   c            
           e Zd Zej        Z e edd           edde	           edd           e
dg e                    ZdS )SNMPgetidr   errorerror_indexvarbindlistN)r)   r*   r+   r   r   r   rf   r   r   
SNMP_errorr
   r   r   r5   r6   r7   r   r      h        J""==q#9#9#5#5gq*#M#M#0=#B#B#4#4]B#T#T% %IIIr6   r   c            
           e Zd Zej        Z e edd           edde	           edd           e
dg e                    ZdS )SNMPnextr   r   r   r   r   N)r)   r*   r+   r   r   r   rj   r   r   r   r
   r   r   r5   r6   r7   r   r      sh        J##MM$$:$:$6$6w:$N$N$1M-$C$C$5$5mR$U$U& &IIIr6   r   c            
           e Zd Zej        Z e edd           edde	           edd           e
dg e                    ZdS )SNMPresponser   r   r   r   r   N)r)   r*   r+   r   r   r   rm   r   r   r   r
   r   r   r5   r6   r7   r   r      sh        J''dA(>(>(:(:7Az(R(R(5mQ(G(G(9(9-[(Y(Y* *IIIr6   r   c            
           e Zd Zej        Z e edd           edde	           edd           e
dg e                    ZdS )SNMPsetr   r   r   r   r   N)r)   r*   r+   r   r   r   ro   r   r   r   r
   r   r   r5   r6   r7   r   r      r   r6   r   c                       e Zd Zej        Z e edd           edd           e	dde
           edd           ed e                       ed	g e                    Zd
S )
SNMPtrapv1
enterpriser   
agent_addrz0.0.0.0generic_trapr   specific_trap
time_stampr   N)r)   r*   r+   r   r   r   rq   r   r   r   SNMP_trap_typesr   r   r   r
   r   r   r5   r6   r7   r   r      s        J%%iie&D&D&5olI&N&N&8&8O&\&\&3mOQ&G&G&6&6|[[]]&S&S&7&7r;&W&W( (IIIr6   r   c            
           e Zd Zej        Z e edd           edd           edd           edg e	                    Z
dS )SNMPbulkr   r   non_repeatersmax_repetitionsr   N)r)   r*   r+   r   r   r   rt   r   r
   r   r   r5   r6   r7   r   r      sf        J##MM$$:$:$1M/1$E$E$1M2CQ$G$G$5$5mR$U$U& &IIIr6   r   c            
           e Zd Zej        Z e edd           edde	           edd           e
dg e                    ZdS )
SNMPinformr   r   r   r   r   N)r)   r*   r+   r   r   r   rv   r   r   r   r
   r   r   r5   r6   r7   r   r      h        J%%mmD!&<&<&8&8!Z&P&P&3mM1&E&E&7&7r;&W&W( (IIIr6   r   c            
           e Zd Zej        Z e edd           edde	           edd           e
dg e                    ZdS )
SNMPtrapv2r   r   r   r   r   N)r)   r*   r+   r   r   r   rx   r   r   r   r
   r   r   r5   r6   r7   r   r     r   r6   r   c                       e Zd Zej        Z e eddddddd           edd	           e	d
 e
            e
eeeeeee
  
                  Zd ZdS )r    versionrz   v1v2cv2v3)r   rz   r|   r~   	communitypublicPDUc                     t          | j        t                    o@t          |j        t          t          t
          f          o| j        j        |j        j        k    S )N)
isinstancer   r   r   r   r   r   )selfothers     r7   answerszSNMP.answers  sF    48\22 ,59w'&BCC,uy|+	-r6   N)r)   r*   r+   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r5   r6   r7   r    r      s        J9aTe)N)NOO[(++UGGIIhg:z	C 	C I- - - - -r6   r    r"   sport)dportr#   )r   r   1r   c                    	 	 t          t          |           t          t                                z  t	          |t          t          |          g                    z  ddd	d
          }|t          d           d S t          |v rt          t          |                     d S t          |t                   j
        j        dd|t                   j                   |t                   j
        }# t          $ r Y d S w xY w)NT)dstr   )r   )r   )r   r   r|   rz   r   )timeoutchainCCverboseretryz
No answers40z: )r   r   r   r   r    r   r   printr   reprr   valr   KeyboardInterrupt)r   r   r   rs       r7   snmpwalkr   "  sS   		%B3KKK#IKK"8"8"884)Yaoz  @C  pD  pD  pD  oE  ZF  ZF  ZF  <G  <G  <G  G  QR  \]  gh  pq  r  r  rAyl###qyyd1gg;!3!7!7!7!7;9M9MNOOOK.$C		%    s   B C8 %C8 +AC8 8
DDN)r   r   )K__doc__scapy.packetr   r   scapy.asn1packetr   scapy.asn1fieldsr   r   r   r	   r
   r   r   r   r   r   r   r   scapy.asn1.asn1r   r   r   r   scapy.asn1.berr   scapy.sendrecvr   scapy.volatiler   r   scapy.layers.inetr   r   r   scapy.asn1.mibr   r   r9   r>   rB   rF   rI   rM   rP   rS   rV   rX   rZ   r\   r^   r`   rb   rd   rf   rj   rm   ro   rq   rt   rv   rx   r   r   r   r   r   r   r   r   r   r   r   r    r   r5   r6   r7   <module>r      s    5 4 4 4 4 4 4 4 ( ( ( ( ( (N N N N N N N N N N N N N N N N N N N N N N N N N N N N            , , , , , ,       1 1 1 1 1 1 1 1 + + + + + + + + + +       	 	 	 	 	* 	 	 	" " " " " " " "# # # # # # # #' ' ' ' '] ' ' '" " " " " " " "% % % % %= % % %# # # # # # # #% % % % %= % % %% % % % %= % % %" " " " "- " " "# # # # #. # # #' ' ' ' '!2 ' ' '" " " " "- " " "% % % % %0 % % %# # # # #. # # #% % % % %0 % % %% % % % %0 % % %' ' ' ' ' ' ' '( ( ( ( (. ( ( (, , , , ,n , , ,' ' ' ' ' ' ' '* * * * *N * * *( ( ( ( (. ( ( (* * * * *N * * ** * * * *N * * *a   	
     ! - - & ( / -  '!" !%%  
* #"!$&+     +   % % % % %k % % %& & & & &{ & & &* * * * *; * * *% % % % %k % % %( ( ( ( ( ( ( (& & & & &{ & & &( ( ( ( ( ( ( (( ( ( ( ( ( ( (- - - - -; - - -  sD $ $ $ $ sD $ $ $ $ sD $ $ $ $ sD $ $ $ $ CS , , , ,     r6   