o
    j_                     @   sf   d dl mZ d ZdZdZdZdZdZdZdZ	dZ
G dd dejZG dd	 d	ejZG d
d dZdS )    )	structure         u	   "ÔÃ²¡c                   @   s$   e Zd ZdefdddddddfZd	S )
PCapFileHeadermagic)versionMajorz<H=2)versionMinorz<H=4)GMT2localCorrectionz<l=0)timeAccuracy<L=0)	maxLengthz	<L=0xffff)linkTypez<L=1)packetsz*:=[]N)__name__
__module____qualname__MAGICr    r   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/pcapfile.pyr      s    r   c                   @   s   e Zd ZdZdd ZdS )PCapFilePacket))tsecr   )tmsecr   )savedLength<L-data)
realLengthr   )data:c                 O   s&   t jj| g|R i | d| d< d S )N    r   )r   	Structure__init__)selfargskargsr   r   r   r    .   s   zPCapFilePacket.__init__N)r   r   r   r   r    r   r   r   r   r   %   s    r   c                   @   s   e Zd Zd!ddZdd Zdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd  ZdS )"PcapFileNrbc                 C   s$   |d ur
t ||| _d | _d| _d S )NF)openfilehdrwroteHeader)r!   fileNamemoder   r   r   r    3   s   
zPcapFile.__init__c                 C   s   d | _ | jd d S )Nr   )r(   r'   seekr!   r   r   r   reset9   s   zPcapFile.resetc                 C   s   | j   d S N)r'   closer-   r   r   r   r0   =   s   zPcapFile.closec                 C   s
   | j  S r/   )r'   filenor-   r   r   r   r1   @      
zPcapFile.filenoc                 C   s
   || _ d S r/   )r'   )r!   r'   r   r   r   setFileC   r2   zPcapFile.setFilec                 C      |    || jd< d S Nr   createHeaderOncer(   )r!   snapLenr   r   r   
setSnapLenF      zPcapFile.setSnapLenc                 C      |    | jd S r5   readHeaderOncer(   r-   r   r   r   
getSnapLenJ      
zPcapFile.getSnapLenc                 C   r4   Nr   r6   )r!   r   r   r   r   setLinkTypeN   r:   zPcapFile.setLinkTypec                 C   r;   r@   r<   r-   r   r   r   getLinkTypeR   r?   zPcapFile.getLinkTypec                 C   s    | j d u rt| j| _ d S d S r/   )r(   r   fromFiler'   r-   r   r   r   r=   V   s   
zPcapFile.readHeaderOncec                 C   s   | j d u rt | _ d S d S r/   )r(   r   r-   r   r   r   r7   Z   s   
zPcapFile.createHeaderOncec                 C   s:   | j sd| _ | jd |   | j| j  d S d S )NTr   )r)   r'   r,   r7   writer(   getDatar-   r   r   r   writeHeaderOnce^   s   zPcapFile.writeHeaderOncec                 C   s<   |    zt| j}| j|d |d< |W S    Y d S )Nr   r   )r=   r   rC   r'   readr!   pktr   r   r   rG   e   s   zPcapFile.readc                 C   s   |    | jt| d S r/   )rF   r'   rD   strrH   r   r   r   rD   n   s   zPcapFile.writec                 c   s(    |    	 |  }|d u rd S |V  qr/   )r.   rG   )r!   answerr   r   r   r   r   s   zPcapFile.packets)Nr%   )r   r   r   r    r.   r0   r1   r3   r9   r>   rA   rB   r=   r7   rF   rG   rD   r   r   r   r   r   r$   2   s     
	r$   N)impacketr   O_ETHO_IPO_ARPO_UDPO_TCPO_ICMP
O_UDP_DATAO_ICMP_DATAr   r   r   r   r$   r   r   r   r   <module>   s   