a
    kÄ#d%  ã                   @   s‚  d Z ddlm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 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„ deƒZ%G dd„ deƒZ&G dd„ deƒZ'G dd„ deƒZ(G dd„ deƒZ)G dd„ deƒZ*G dd„ deƒZ+G dd„ deƒZ,G dd„ deƒZ-G dd„ deƒZ.G d d!„ d!eƒZ/G d"d#„ d#eƒZ0G d$d%„ d%eƒZ1G d&d'„ d'eƒZ2G d(d)„ d)eƒZ3G d*d+„ d+eƒZ4G d,d-„ d-eƒZ5G d.d/„ d/eƒZ6G d0d1„ d1eƒZ7G d2d3„ d3eƒZ8G d4d5„ d5eƒZ9G d6d7„ d7eƒZ:G d8d9„ d9eƒZ;G d:d;„ d;eƒZ<G d<d=„ d=eƒZ=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQœZ>dRdSdTdUdVdWdXdYœZ?G dZd[„ d[eƒZ@G d\d]„ d]eƒZAG d^d_„ d_eƒZBG d`da„ daeƒZCG dbdc„ dceƒZDG ddde„ deeƒZEG dfdg„ dgeƒZFG dhdi„ dieƒZGG djdk„ dkeƒZHG dldm„ dmeƒZIee eIdndo� ee eIdndp� ee eIdqdo� ee eIdqdp� ee eIdndndr� dxdudv„ZJdwS )yz,
SNMP (Simple Network Management Protocol).
é    )Úprint_function)Ú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)ÚASN1_Class_UNIVERSALÚASN1_CodecsÚ	ASN1_NULLÚASN1_SEQUENCE)ÚBERcodec_SEQUENCE)Úsr1)Ú	RandShortÚIntAutoTime)ÚUDPÚIPÚICMP)Úconfc                   @   s0   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© r2   r2   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/layers/snmp.pyr   !   s   r   c                   @   s   e Zd ZejZdS )ÚASN1_SNMP_PDU_GETN©r&   r'   r(   r   r*   Útagr2   r2   r2   r3   r4   -   s   r4   c                   @   s   e Zd ZejZdS )ÚASN1_SNMP_PDU_NEXTN©r&   r'   r(   r   r+   r6   r2   r2   r2   r3   r7   1   s   r7   c                   @   s   e Zd ZejZdS )ÚASN1_SNMP_PDU_RESPONSEN©r&   r'   r(   r   r,   r6   r2   r2   r2   r3   r9   5   s   r9   c                   @   s   e Zd ZejZdS )ÚASN1_SNMP_PDU_SETN©r&   r'   r(   r   r-   r6   r2   r2   r2   r3   r;   9   s   r;   c                   @   s   e Zd ZejZdS )ÚASN1_SNMP_PDU_TRAPv1N©r&   r'   r(   r   r.   r6   r2   r2   r2   r3   r=   =   s   r=   c                   @   s   e Zd ZejZdS )ÚASN1_SNMP_PDU_BULKN©r&   r'   r(   r   r/   r6   r2   r2   r2   r3   r?   A   s   r?   c                   @   s   e Zd ZejZdS )ÚASN1_SNMP_PDU_INFORMN©r&   r'   r(   r   r0   r6   r2   r2   r2   r3   rA   E   s   rA   c                   @   s   e Zd ZejZdS )ÚASN1_SNMP_PDU_TRAPv2N©r&   r'   r(   r   r1   r6   r2   r2   r2   r3   rC   I   s   rC   c                   @   s   e Zd ZejZdS )ÚBERcodec_SNMP_PDU_GETNr5   r2   r2   r2   r3   rE   O   s   rE   c                   @   s   e Zd ZejZdS )ÚBERcodec_SNMP_PDU_NEXTNr8   r2   r2   r2   r3   rF   S   s   rF   c                   @   s   e Zd ZejZdS )ÚBERcodec_SNMP_PDU_RESPONSENr:   r2   r2   r2   r3   rG   W   s   rG   c                   @   s   e Zd ZejZdS )ÚBERcodec_SNMP_PDU_SETNr<   r2   r2   r2   r3   rH   [   s   rH   c                   @   s   e Zd ZejZdS )ÚBERcodec_SNMP_PDU_TRAPv1Nr>   r2   r2   r2   r3   rI   _   s   rI   c                   @   s   e Zd ZejZdS )ÚBERcodec_SNMP_PDU_BULKNr@   r2   r2   r2   r3   rJ   c   s   rJ   c                   @   s   e Zd ZejZdS )ÚBERcodec_SNMP_PDU_INFORMNrB   r2   r2   r2   r3   rK   g   s   rK   c                   @   s   e Zd ZejZdS )ÚBERcodec_SNMP_PDU_TRAPv2NrD   r2   r2   r2   r3   rL   k   s   rL   c                   @   s   e Zd ZejZdS )ÚASN1F_SNMP_PDU_GETN)r&   r'   r(   r   r*   ÚASN1_tagr2   r2   r2   r3   rM   q   s   rM   c                   @   s   e Zd ZejZdS )ÚASN1F_SNMP_PDU_NEXTN)r&   r'   r(   r   r+   rN   r2   r2   r2   r3   rO   u   s   rO   c                   @   s   e Zd ZejZdS )ÚASN1F_SNMP_PDU_RESPONSEN)r&   r'   r(   r   r,   rN   r2   r2   r2   r3   rP   y   s   rP   c                   @   s   e Zd ZejZdS )ÚASN1F_SNMP_PDU_SETN)r&   r'   r(   r   r-   rN   r2   r2   r2   r3   rQ   }   s   rQ   c                   @   s   e Zd ZejZdS )ÚASN1F_SNMP_PDU_TRAPv1N)r&   r'   r(   r   r.   rN   r2   r2   r2   r3   rR   �   s   rR   c                   @   s   e Zd ZejZdS )ÚASN1F_SNMP_PDU_BULKN)r&   r'   r(   r   r/   rN   r2   r2   r2   r3   rS   …   s   rS   c                   @   s   e Zd ZejZdS )ÚASN1F_SNMP_PDU_INFORMN)r&   r'   r(   r   r0   rN   r2   r2   r2   r3   rT   ‰   s   rT   c                   @   s   e Zd ZejZdS )ÚASN1F_SNMP_PDU_TRAPv2N)r&   r'   r(   r   r1   rN   r2   r2   r2   r3   rU   �   s   rU   Zno_errorZtoo_bigZno_such_nameZ	bad_valueZ	read_onlyZgeneric_errorZ	no_accessZ
wrong_typeZwrong_lengthZwrong_encodingZwrong_valueZno_creationZinconsistent_valueZresource_unavailableZcommit_failedZundo_failedZauthorization_errorZnot_writableZinconsistent_name)r   é   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   Z
cold_startZ
warm_startZ	link_downZlink_upZauth_failureZegp_neigh_lossZenterprise_specific)r   rV   rW   rX   rY   rZ   r[   c                   @   s,   e Zd ZejZeeddƒede	dƒƒƒZ
dS )ÚSNMPvarbindÚoidú1.3Úvaluer   N)r&   r'   r(   r   ÚBERÚ
ASN1_codecr	   r   r   r   Ú	ASN1_rootr2   r2   r2   r3   rh   ³   s   
ÿrh   c                   @   s<   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   rl   rm   rM   r   r   Ú
SNMP_errorr
   rh   rn   r2   r2   r2   r3   ro   º   s   


ýro   c                   @   s<   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 )ÚSNMPnextrp   r   rq   rr   rs   N)r&   r'   r(   r   rl   rm   rO   r   r   rt   r
   rh   rn   r2   r2   r2   r3   ru   Ã   s   


ýru   c                   @   s<   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 )ÚSNMPresponserp   r   rq   rr   rs   N)r&   r'   r(   r   rl   rm   rP   r   r   rt   r
   rh   rn   r2   r2   r2   r3   rv   Ì   s   


ýrv   c                   @   s<   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 )ÚSNMPsetrp   r   rq   rr   rs   N)r&   r'   r(   r   rl   rm   rQ   r   r   rt   r
   rh   rn   r2   r2   r2   r3   rw   Õ   s   


ýrw   c                
   @   sN   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 )Ú
SNMPtrapv1Z
enterpriserj   Z
agent_addrz0.0.0.0Zgeneric_trapr   Zspecific_trapZ
time_stamprs   N)r&   r'   r(   r   rl   rm   rR   r   r   r   ÚSNMP_trap_typesr   r   r   r
   rh   rn   r2   r2   r2   r3   rx   Þ   s   



ûrx   c                   @   s:   e Zd ZejZeeddƒeddƒeddƒedg e	ƒƒZ
dS )ÚSNMPbulkrp   r   Znon_repeatersZmax_repetitionsrs   N)r&   r'   r(   r   rl   rm   rS   r   r
   rh   rn   r2   r2   r2   r3   rz   é   s   

ýrz   c                   @   s<   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 )Ú
SNMPinformrp   r   rq   rr   rs   N)r&   r'   r(   r   rl   rm   rT   r   r   rt   r
   rh   rn   r2   r2   r2   r3   r{   ò   s   


ýr{   c                   @   s<   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 )Ú
SNMPtrapv2rp   r   rq   rr   rs   N)r&   r'   r(   r   rl   rm   rU   r   r   rt   r
   rh   rn   r2   r2   r2   r3   r|   û   s   


ýr|   c                   @   sV   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d„ ZdS )r   ÚversionrV   Úv1Zv2cÚv2Zv3)r   rV   rW   rX   Ú	communityÚpublicÚPDUc                 C   s.   t | jtƒo,t |jtttfƒo,| jj|jjkS )N)Ú
isinstancer‚   rv   ro   ru   rw   rp   )ÚselfÚotherr2   r2   r3   Úanswers  s
    ÿþzSNMP.answersN)r&   r'   r(   r   rl   rm   r	   r   r   r   ro   ru   rv   rw   rx   rz   r{   r|   rn   r†   r2   r2   r2   r3   r     s   þýr   r   ©Úsport)Údportr    )rˆ   r‰   Ú1r�   c                 C   s¬   z”t t| d�ttƒ d� t|tt|d�gd�d� ddddd	�}|d u rRtd
ƒ q’t|v rhtt	|ƒƒ q’td|t j
j|t jf ƒ |t j
}qW n ty¦   Y n0 d S )N)Údstr‡   )ri   )rs   )r€   r‚   rW   rV   r   )ÚtimeoutZchainCCÚverboseÚretryz
No answersz	%-40s: %r)r   r   r   r   r   ru   rh   Úprintr   Úreprri   Úvalrk   ÚKeyboardInterrupt)r‹   ri   r€   Úrr2   r2   r3   Úsnmpwalk  s    >r”   N)rŠ   r�   )KÚ__doc__Ú
__future__r   Zscapy.packetr   r   Zscapy.asn1packetr   Zscapy.asn1fieldsr   r   r   r	   r
   r   r   r   r   r   Zscapy.asn1.asn1r   r   r   r   Zscapy.asn1.berr   Zscapy.sendrecvr   Zscapy.volatiler   r   Zscapy.layers.inetr   r   r   Zscapy.asn1.mibr   r   r4   r7   r9   r;   r=   r?   rA   rC   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rO   rP   rQ   rR   rS   rT   rU   rt   ry   rh   ro   ru   rv   rw   rx   rz   r{   r|   r   r”   r2   r2   r2   r3   Ú<module>   sž   0	îú
							