a
    kÄ#d5  ã                   @   s  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mZmZmZmZmZmZmZ d dl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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� dS )é    )ÚPacketÚbind_layers)Ú
FlagsFieldÚ
XByteFieldÚ	ByteFieldÚXShortFieldÚ
ShortFieldÚStrLenFieldÚBitFieldÚBitEnumFieldÚByteEnumFieldÚFieldLenFieldÚPacketListFieldÚFieldListFieldÚMACFieldÚPacketFieldÚConditionalFieldÚ	XIntField)ÚEther)Ú	ETHER_ANYc                   @   sˆ   e Zd ZdZed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dd„ d�gZ	dd„ Z
dS )ÚIssueATACommandúIssue ATA CommandÚflagsr   é   ZzezdzzawZerr_featureÚsector_counté   Z
cmd_statuséì   Zlba0Zlba1Zlba2Zlba3Zlba4Zlba5ÚreservedÚdataÚ c                 C   s
   | j d S )Ni   )r   ©Úx© r"   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/aoe.pyÚ<lambda>!   ó    zIssueATACommand.<lambda>©Zlength_fromc                 C   s   d|fS ©Nr   r"   ©ÚselfÚsr"   r"   r#   Úextract_padding#   s    zIssueATACommand.extract_paddingN)Ú__name__Ú
__module__Ú__qualname__Únamer   r   r   r   r	   Úfields_descr+   r"   r"   r"   r#   r      s"   ÿõr   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d	d
ddddœƒedddd�e	dddd„ d�gZ
dd„ ZdS )ÚQueryConfigInformationúQuery Config InformationZbuffer_countr   Zfirmwarer   Zaoeé   ZccmdzRead config stringzTest config stringzTest config string prefixzSet config stringzForce set config string)r   r   é   é   r3   Úconfig_lengthNÚconfig)Z	length_ofc                 C   s   | j S ©N)r6   r    r"   r"   r#   r$   4   r%   zQueryConfigInformation.<lambda>r&   c                 C   s   d|fS r'   r"   r(   r"   r"   r#   r+   6   s    z&QueryConfigInformation.extract_padding)r,   r-   r.   r/   r   r   r
   r   r   r	   r0   r+   r"   r"   r"   r#   r1   '   s"   

üÿör1   c                   @   s6   e Zd Zd ZeddƒeddddddœƒedeƒgZd	S )
Ú	Directiver   r   ZdcmdzNo directivezAdd mac address to mask listz!Delete mac address from mask list©r   r   r4   Zmac_addrN)	r,   r-   r.   r/   r   r   r   r   r0   r"   r"   r"   r#   r9   :   s   þÿûr9   c                
   @   sf   e Zd ZdZeddƒedddddœƒeddd	d
dddœƒedddd�eddedd„ d�gZ	dd„ Z
dS )ÚMacMaskListúMac Mask Listr   r   ZmcmdzRead Mac Mask ListzEdit Mac Mask List)r   r   Zmerrorr   zUnspecified errorzBad dcmd directivezMask List Full©r   r   r4   r5   Ú	dir_countNZ
directives©Zcount_ofc                 C   s   | j S r8   )r>   ©Zpktr"   r"   r#   r$   O   r%   zMacMaskList.<lambda>©Z
count_fromc                 C   s   d|fS r'   r"   r(   r"   r"   r#   r+   Q   s    zMacMaskList.extract_padding)r,   r-   r.   r/   r   r   r   r   r9   r0   r+   r"   r"   r"   r#   r;   D   s    ÿýÿør;   c                   @   sR   e Zd ZdZeddddddœƒedd	d
d�ed
d	edeƒdd„ d�gZ	dd„ Z
d	S )ÚReserveReleaseúReserve / ReleaseZrcmdr   zRead Reserve ListzSet Reserve ListzForce Set Reserve Listr:   Únb_macNZ	mac_addrsr?   r   c                 C   s   | j S r8   )rD   r@   r"   r"   r#   r$   \   r%   zReserveRelease.<lambda>rA   c                 C   s   d|fS r'   r"   r(   r"   r"   r#   r+   ^   s    zReserveRelease.extract_padding)r,   r-   r.   r/   r   r   r   r   r   r0   r+   r"   r"   r"   r#   rB   U   s   þÿürB   c                   @   sÒ   e Zd ZdZedddƒedddg d¢ƒeddd	d
dddddœƒeddƒeddƒedddddddœƒe	ddƒe
edeƒ eƒdd„ ƒe
edeƒ eƒdd„ ƒe
ed eƒ eƒd!d„ ƒe
ed"eƒ eƒd#d„ ƒgZd$d%„ Zd&S )'ÚAOEzATA over EthernetÚversionr   r3   r   r   )ÚResponseÚErrorÚr1Úr2ÚerrorzUnrecognized command codezBad argument parameterzDevice unavailablezConfig string presentzUnsupported exceptionzTarget is reserved)r   r4   r5   r3   é   é   Úmajoriÿÿ  Úminoréÿ   Úcmdr   r2   r<   rC   r=   ÚtagZ	i_ata_cmdc                 C   s
   | j dkS )Nr   ©rQ   r    r"   r"   r#   r$   v   r%   zAOE.<lambda>Zq_conf_infoc                 C   s
   | j dkS )Nr   rS   r    r"   r"   r#   r$   z   r%   Z
mac_m_listc                 C   s
   | j dkS )Nr4   rS   r    r"   r"   r#   r$   }   r%   Zres_relc                 C   s
   | j dkS )Nr5   rS   r    r"   r"   r#   r$   €   r%   c                 C   s   d|fS r'   r"   r(   r"   r"   r#   r+   ‚   s    zAOE.extract_paddingN)r,   r-   r.   r/   r
   r   r   r   r   r   r   r   r   r1   r;   rB   r0   r+   r"   r"   r"   r#   rE   b   sR   
ûý
ÿþþý
ÿþ
ÿþærE   i¢ˆ  )ÚtyperS   r   r4   r5   N)Zscapy.packetr   r   Zscapy.fieldsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Zscapy.layers.l2r   Z
scapy.datar   r   r1   r9   r;   rB   rE   r"   r"   r"   r#   Ú<module>
   s   H
$