a
    kÄ#d#%  ã                   @   s*  d dl mZ d dl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 d dlmZmZ ddddd	d
ddddddœZe e¡ d diZddi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ƒZ!G d%d„ deƒZ"G d&d„ deƒZ#G d'd„ deƒZ$eeed(d)� eeed*d)� eeed+d)� eee!d,d)� eeed-d)� eeed.d)� eee"d/d)� eeed0d)� eee d1d)� eee#d2d)� eee$d3d)� eeed4d)� d5S )6é    )Úabsolute_import)ÚPacketÚbind_layers)	ÚByteEnumFieldÚ	ByteFieldÚFieldLenFieldÚMACFieldÚPacketListFieldÚ
ShortFieldÚStrFixedLenFieldÚ	XIntFieldÚPacketField)Ú
HomePlugAVÚQualcommTypeListÚCM_SET_KEY_REQÚCM_SET_KEY_CNFÚCM_SLAC_PARM_REQÚCM_SLAC_PARM_CNFZCM_ATTEN_CHAR_INÚCM_START_ATTEN_CHAR_INDÚCM_ATTEN_CHAR_RSPÚCM_MNBC_SOUND_INDÚCM_SLAC_MATCH_REQÚCM_SLAC_MATCH_CNFÚ"CM_ATTENUATION_CHARACTERISTICS_MME)é`  é	`  éd`  ée`  én`  éj`  éo`  év`  é|`  é}`  é†`  ZSuccessé   zNMK (AES-128)c                   @   s.   e Zd Zd ZeddƒeddƒedddƒgZdS )r   ÚApplicationTyper   ÚSecurityTypeÚRunIDó           é   N©Ú__name__Ú
__module__Ú__qualname__Únamer   r   Úfields_desc© r1   r1   úO/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/homepluggp.pyr   -   s
   
þc                   @   sV   e Zd Zd Zeddƒeddƒeddƒeddƒeddƒeddƒed	dƒed
ddƒgZdS )r   ZMSoundTargetMACú00:00:00:00:00:00ZNumberMSoundsr   ÚTimeOutÚResponseTypeÚForwardingSTAr&   r'   r(   r)   r*   N)r,   r-   r.   r/   r   r   r   r0   r1   r1   r1   r2   r   4   s   
ùc                   @   s$   e Zd Zd ZeddƒgZdd„ ZdS )Ú
HPGP_GROUPÚgroupr   c                 C   s   d|fS )NÚ r1   )ÚselfÚpr1   r1   r2   Úextract_paddingD   s    zHPGP_GROUP.extract_paddingN)r,   r-   r.   r/   r   r0   r<   r1   r1   r1   r2   r7   @   s   r7   c                
   @   sN   e Zd Zd Zeddƒeddddd�edd	ƒed
ddƒedde	dd„ d�gZ
dS )Ú"VS_ATTENUATION_CHARACTERISTICS_MMEÚEVMACAddressr3   ÚNumberOfGroupsNÚGroupsÚB©Zcount_ofÚfmtÚNumberOfCarrierPerGrouper   ÚReservedó          é   r9   c                 C   s   | j S ©N©r?   ©Zpktr1   r1   r2   Ú<lambda>P   ó    z+VS_ATTENUATION_CHARACTERISTICS_MME.<lambda>©Zlength_from)r,   r-   r.   r/   r   r   r   r   r	   r7   r0   r1   r1   r1   r2   r=   H   s   ÿ
ÿûr=   c                	   @   sD   e Zd Zd Zeddƒeddddd�edd	ƒedd
edd„ d�gZ	dS )r   r>   r3   r?   Nr@   rA   rB   rD   r   r9   c                 C   s   | j S rH   rI   rJ   r1   r1   r2   rK   Z   rL   z+CM_ATTENUATION_CHARACTERISTICS_MME.<lambda>rM   )
r,   r-   r.   r/   r   r   r   r	   r7   r0   r1   r1   r1   r2   r   S   s   ÿÿüc                   @   sr   e Zd Zd Zeddƒeddƒeddƒedddƒed	d
dƒedd
dƒeddƒeddddd�edde	dd„ d�g	Z
dS )ÚCM_ATTEN_CHAR_INDr&   r   r'   ÚSourceAdressr3   r(   r)   r*   ÚSourceIDó                    é   Ú
ResponseIDÚNumberOfSoundsr?   Nr@   rA   rB   r9   c                 C   s   | j S rH   rI   rJ   r1   r1   r2   rK   i   rL   zCM_ATTEN_CHAR_IND.<lambda>rM   )r,   r-   r.   r/   r   r   r   r   r	   r7   r0   r1   r1   r1   r2   rN   ]   s   


ÿÿ÷rN   c                
   @   sT   e Zd Zd Zeddƒeddƒeddƒedddƒed	d
dƒedd
dƒeddeƒgZ	dS )r   r&   r   r'   rO   r3   r(   r)   r*   rP   rQ   rR   rS   ÚResultN)
r,   r-   r.   r/   r   r   r   r   Ú
HPGP_codesr0   r1   r1   r1   r2   r   l   s   



úc                	   @   sL   e Zd Zd Zedddƒeddƒedddƒeddƒedd	d
ƒedd	d
ƒgZdS )ÚSLAC_varfieldÚEVIDrQ   rR   ÚEVMACr3   ÚEVSEIDÚEVSEMACr(   r)   r*   ÚRSVDN)r,   r-   r.   r/   r   r   r0   r1   r1   r1   r2   rW   w   s   



ûrW   c                   @   s>   e Zd Zd Zeddƒeddƒeddddd�edeƒ eƒgZdS )	r   r&   r   r'   ÚMatchVariableFieldLenNÚVariableFieldú<H©Z	length_ofrC   )	r,   r-   r.   r/   r   r   r   rW   r0   r1   r1   r1   r2   r   �   s   ÿþüc                   @   sh   e Zd ZdZedddƒeddƒedddƒeddƒed	d
dƒedd
dƒedddƒeddƒedddƒg	ZdS )ÚSLAC_varfield_cnfrW   rX   rQ   rR   rY   r3   rZ   r[   r(   r)   r*   r\   Ú	NetworkIDrF   rG   rE   r   ZNMKó                   é   N)r,   r-   r.   r/   r   r   r   r0   r1   r1   r1   r2   ra   Œ   s   





øra   c                   @   s>   e Zd Zd Zeddƒeddƒeddddd�edeƒ eƒgZdS )	r   r&   r   r'   r]   Nr^   r_   r`   )	r,   r-   r.   r/   r   r   r   ra   r0   r1   r1   r1   r2   r   ™   s   ÿþüc                
   @   sN   e Zd Zd Zeddƒeddƒeddƒeddƒeddƒeddƒed	d
dƒgZdS )r   r&   r   r'   rT   r4   r5   r6   r3   r(   r)   r*   N)r,   r-   r.   r/   r   r   r   r0   r1   r1   r1   r2   r   ¤   s   
úc                
   @   sT   e Zd Zd Zeddƒeddƒedddƒeddƒedd	d
ƒedd	d
ƒedddƒgZdS )r   r&   r   r'   ZSenderIDrQ   rR   Z	Countdownr(   r)   r*   r\   ZRandomValuerc   rd   Nr+   r1   r1   r1   r2   r   ¯   s   



úc                   @   sj   e Zd Zd Zeddeƒeddƒeddƒeddƒeddƒeddƒeddƒe	d	d
dƒeddƒe	dddƒg
Z
dS )r   ZKeyTyper   ÚMyNonceÚ	YourNonceÚPIDÚProtoRunNumberÚProtoMessNumberÚCCoCapabilityrb   rF   rG   ZNewEncKeySelectZNewKeyrc   rd   N)r,   r-   r.   r/   r   ÚKeyType_listr   r   r
   r   r0   r1   r1   r1   r2   r   ¿   s   


÷c                	   @   sN   e Zd Zd ZeddeƒeddƒeddƒeddƒeddƒeddƒeddƒgZ	d	S )
r   rU   r   re   rf   rg   rh   ri   rj   N)
r,   r-   r.   r/   r   rV   r   r   r
   r0   r1   r1   r1   r2   r   Í   s   
úiN¡  )ZHPtyper   r   r   r   r    r!   r"   r#   r   r   r$   N)%Ú
__future__r   Zscapy.packetr   r   Zscapy.fieldsr   r   r   r   r	   r
   r   r   r   Zscapy.contrib.homeplugavr   r   ZHomePlugGPTypesÚupdaterV   rk   r   r   r7   r=   r   rN   r   rW   r   ra   r   r   r   r   r   r1   r1   r1   r2   Ú<module>   sZ   ,ö


