
    h$                        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j        e           d diZddi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          Z G d$ de          Z  G d% de          Z! G d& de          Z" eeed'(            eeed)(            eeed*(            eeed+(            eeed,(            eeed-(            eee d.(            eeed/(            eeed0(            eee!d1(            eee"d2(            eeed3(           d4S )5    )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_CNF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`  |`  }`  `  Success   zNMK (AES-128)c                   Z    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     \/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/contrib/homepluggp.pyr   r   ,   sK        D9.449^S11##G[!<<>KKKr5   c                       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   MSoundTargetMAC00:00:00:00:00:00NumberMSoundsr   TimeOutResponseTypeForwardingSTAr)   r*   r+   r,   r-   N)r/   r0   r1   r2   r   r   r   r3   r4   r5   r6   r   r   3   s        D8-/BCC9_c229Y,,9^S118O-@AA9.449^S11##G[!<<>KKKr5   c                   2    e Zd Zd Z edd          gZd ZdS )
HPGP_GROUPgroupr   c                 
    d|fS )N r4   )selfps     r6   extract_paddingzHPGP_GROUP.extract_paddingC   s    1ur5   N)r/   r0   r1   r2   r   r3   rE   r4   r5   r6   r?   r?   ?   s<        D9Wc**+K    r5   r?   c            
           e Zd Zd Z edd           edddd           edd	           ed
dd           edde	d           gZ
dS )"VS_ATTENUATION_CHARACTERISTICS_MMEEVMACAddressr9   NumberOfGroupsNGroupsBcount_offmtNumberOfCarrierPerGrouper   Reserved             rB   c                     | j         S NrI   pkts    r6   <lambda>z+VS_ATTENUATION_CHARACTERISTICS_MME.<lambda>O   	    3;M r5   length_from)r/   r0   r1   r2   r   r   r   r   r	   r?   r3   r4   r5   r6   rG   rG   G   s        /D8N,?@@ =!14*2= = =97;;##JQ??"?8R/M/MO O OPKKKr5   rG   c            	       |    e Zd Zd Z edd           edddd           edd	           edd
ed           gZ	dS )r   rH   r9   rI   NrJ   rK   rL   rO   r   rB   c                     | j         S rT   rU   rV   s    r6   rX   z+CM_ATTENUATION_CHARACTERISTICS_MME.<lambda>Y   rY   r5   rZ   )
r/   r0   r1   r2   r   r   r   r	   r?   r3   r4   r5   r6   r   r   R   s|        /D8N,?@@ =!14(%(* * *97;;"?8R/M/MO O O	PKKKr5   c                       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           edde	d           g	Z
dS )CM_ATTEN_CHAR_INDr)   r   r*   SourceAdressr9   r+   r,   r-   SourceID                       
ResponseIDNumberOfSoundsrI   NrJ   rK   rL   rB   c                     | j         S rT   rU   rV   s    r6   rX   zCM_ATTEN_CHAR_IND.<lambda>h   rY   r5   rZ   )r/   r0   r1   r2   r   r   r   r   r	   r?   r3   r4   r5   r6   r_   r_   \   s        D9.449^S118N,?@@##G[!<<##JbAA##L,CC9-s33 =!14(%(* * *"?8R/M/MO O O
PKKKr5   r_   c                       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*   r`   r9   r+   r,   r-   ra   rb   rc   rd   ResultN)
r/   r0   r1   r2   r   r   r   r   
HPGP_codesr3   r4   r5   r6   r   r   k   s        D9.449^S118N,?@@##G[!<<##JbAA##L,CC =3
;;=KKKr5   c            
           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EVIDrb   rc   EVMACr9   EVSEIDEVSEMACr+   r,   r-   RSVDN)r/   r0   r1   r2   r   r   r3   r4   r5   r6   rk   rk   v   s        D##FL"==8G%899##HlB??8I':;;##G[!<<##FK;;=KKKr5   rk   c                       e Zd Zd Z edd           edd           edddd           ed e            e          gZdS )	r   r)   r   r*   MatchVariableFieldLenNVariableField<H	length_ofrN   )	r/   r0   r1   r2   r   r   r   rk   r3   r4   r5   r6   r   r      sw        D9.449^S11 =!8$+:F F F;,},. .	/KKKr5   c                       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_cnfrk   rl   rb   rc   rm   r9   rn   ro   r+   r,   r-   rp   	NetworkIDrQ   rR   rP   r   NMK                      N)r/   r0   r1   r2   r   r   r   r3   r4   r5   r6   rx   rx      s        D##FL"==8G%899##HlB??8I':;;##G[!<<##FK;;##Ka@@9Z--##E<<<>KKKr5   rx   c                       e Zd Zd Z edd           edd           edddd           ed e            e          gZdS )	r   r)   r   r*   rr   Nrs   rt   ru   )	r/   r0   r1   r2   r   r   r   rx   r3   r4   r5   r6   r   r      sz        D9.449^S11 =!8$+:F F F;002202 2	3KKKr5   c                       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*   re   r;   r<   r=   r9   r+   r,   r-   N)r/   r0   r1   r2   r   r   r   r3   r4   r5   r6   r   r      s        $D9.449^S119-s339Y,,9^S118O-@AA##G[!<<>KKKr5   c                       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*   SenderIDrb   rc   	Countdownr+   r,   r-   rp   RandomValuer{   r|   Nr.   r4   r5   r6   r   r      s        D9.449^S11##JbAA9[#..##G[!<<##FK;;##M<DDFKKKr5   c                       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   KeyTyper   MyNonce	YourNoncePIDProtoRunNumberProtoMessNumberCCoCapabilityry   rQ   rR   NewEncKeySelectNewKeyr{   r|   N)r/   r0   r1   r2   r   KeyType_listr   r   r
   r   r3   r4   r5   r6   r   r      s        D =C>>9Y**9[!,,9UA&&:.229.229_a00##Ka@@9.22##HlB??	AKKKr5   c            
           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   rh   r   r   r   r   r   r   r   N)
r/   r0   r1   r2   r   ri   r   r   r
   r3   r4   r5   r6   r   r      s        D =3
;;9Y**9[!,,9UA&&:.229.229_a002KKKr5   iN  )HPtyper   r   r    r   r!   r"   r#   r$   r   r   r%   N)#scapy.packetr   r   scapy.fieldsr   r   r   r   r	   r
   r   r   r   scapy.contrib.homeplugavr   r   HomePlugGPTypesupdateri   r   r   r   r?   rG   r   r_   r   rk   r   rx   r   r   r   r   r   r4   r5   r6   <module>r      s   - , , , , , , ,- - - - - - - - - - - - - - - - - - - - - -
 B A A A A A A A ,+---4....?
A 
A    ( ( (9
o&> > > > >v > > >	> 	> 	> 	> 	>v 	> 	> 	>       P P P P P P P PP P P P P P P PP P P P P P P P= = = = = = = == = = = =F = = =/ / / / / / / /
> 
> 
> 
> 
> 
> 
> 
>3 3 3 3 3 3 3 3> > > > >f > > >F F F F F F F F A A A A AV A A A2 2 2 2 2V 2 2 2 J:6 J J J J J( 8 8 8 8 J( 8 8 8 8 J/ ? ? ? ? J)& 9 9 9 9 J)& 9 9 9 9 J)& 9 9 9 9 J)& 9 9 9 9 J)& 9 9 9 9 Jv 6 6 6 6 Jv 6 6 6 6 J:6 J J J J J Jr5   