a
    kÄ#d÷  ã                   @   sÈ   d dl Z d dlZd dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZmZmZ d dlmZmZ d dlmZ G dd	„ d	eƒZed
ƒ eeeed� eeeed� eeeddd� dS )é    N)ÚPacketÚsplit_layersÚbind_layers)ÚIP)ÚBitFieldÚ	ByteFieldÚXShortFieldÚ	XIntField)ÚIPPROTO_VRRPÚVRRPÚVRRPv3)ÚchecksumÚ	inet_aton)Úwarningc                   @   s¨   e Zd Zd Zedddƒedddƒeddƒeddƒeddƒed	dƒed
dƒeddƒeddƒeddƒeddƒeddƒeddƒeddƒeddƒgZdd„ Z	dg g fdd„Z
dS )ÚCARPÚversioné   ÚtypeÚvhidé   Zadvskewr   ZauthlenZdemotionZadvbaseÚchksumNZcounter1Zcounter2Zhmac1Zhmac2Zhmac3Zhmac4Zhmac5c                 C   s6   | j d u r2|d d… t dt|ƒ¡ |dd …  }|S )Né   z!Hé   )r   ÚstructÚpackr   )ÚselfZpktZpay© r   úI/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/carp.pyÚ
post_build'   s    
(zCARP.post_builds                       c                 C   sn   t j|tjd�}| d¡ | t d| j¡¡ g }|D ]}| t	|ƒ¡ q6| 
¡  |D ]}| |¡ qV| ¡ S )N)Ú	digestmodó   !z!B)ÚhmacÚnewÚhashlibÚsha1Úupdater   r   r   Úappendr   ÚsortÚdigest)r   ÚpwZip4lZip6lÚhÚslÚir   r   r   Úbuild_hmac_sha1-   s    
zCARP.build_hmac_sha1)Ú__name__Ú
__module__Ú__qualname__Únamer   r   r   r	   Zfields_descr   r-   r   r   r   r   r      s&   

òr   zCARP overwrites VRRP !)Úprotoép   z
224.0.0.18)r2   Údst)r   r!   r#   Zscapy.packetr   r   r   Zscapy.layers.inetr   Zscapy.fieldsr   r   r   r	   Zscapy.layers.vrrpr
   r   r   Zscapy.utilsr   r   Zscapy.errorr   r   r   r   r   r   Ú<module>   s   .