a
    kÄ#dþO  ã                   @   sž  d dl Z d dlmZmZ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 d dlmZmZ d dlmZ d dlmZ ddd	d
ddddddddddœ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	e e f ƒZ!dd „ Z"G d!d"„ d"eƒZ#G d#d$„ d$e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/d0„ d0e%ƒZ*G d1d2„ d2e%ƒZ+d3d4d5d6œZ,G d7d8„ d8e%ƒZ-G d9d:„ d:e%ƒZ.G d;d<„ d<e%ƒZ/G d=d>„ d>e%ƒZ0d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQœZ1G dRdS„ dSeƒZ2G dTdU„ dUe%ƒZ3G dVdW„ dWe%ƒZ4G dXdY„ dYe%ƒZ5G dZd[„ d[e%ƒZ6G d\d]„ d]e%ƒZ7d^d_d`œZ8G dadb„ dbe%ƒZ9G dcdd„ dde%ƒZ:G dedf„ dfe%ƒZ;G dgdh„ dhe%ƒZ<G didj„ dje%ƒZ=G dkdl„ dle%ƒZ>G dmdn„ dne%ƒZ?G dodp„ dpe%ƒZ@G dqdr„ dre%ƒZAG dsdt„ dte%ƒZBG dudv„ dve%ƒZCG dwdx„ dxe%ƒZDG dydz„ dze%ƒZEG d{d|„ d|e%ƒZFG d}d~„ d~e%ƒZGG dd€„ d€e%ƒZHG d�d‚„ d‚e%ƒZIG dƒd„„ d„e%ƒZJG d…d†„ d†e%ƒZKG d‡dˆ„ dˆe%ƒZLG d‰dŠ„ dŠeƒZMG d‹dŒ„ dŒeƒZNG d�dŽ„ dŽe%ƒZOG d�d�„ d�e%ƒZPG d‘d’„ d’e%ƒZQe6e9eJeKeLe;eCe=e5eBeDe)eAe4d“œZRe'e+e7e:e*eJeKeOePeQe0e<e3eHeGe>eEeFeIe(e?e@e-e/d”œZSG d•d–„ d–e$ƒZTG d—d˜„ d˜e$ƒZUeeeTd™dš� eeeUd™d›� dS )œé    N)ÚOptionalÚCallableÚAnyÚTuple)Ú	ByteFieldÚCharEnumFieldÚFieldÚFieldLenFieldÚFieldListFieldÚIntEnumFieldÚPacketListFieldÚ
ShortFieldÚSignedIntFieldÚSignedShortFieldÚStrFieldÚStrLenFieldÚStrNullField)ÚPacketÚbind_layers)ÚTCP)Ú
TCPSessionZAuthenticationOkZAuthenticationKerberosV4ZAuthenticationKerberosV5ZAuthenticationCleartextPasswordZAuthenticationCryptPasswordZAuthenticationMD5PasswordZAuthenticationSCMCredentialZAuthenticationGSSZAuthenticationGSSContinueZAuthenticationSSPIZAuthenticationSASLZAuthenticationSASLContinueZAuthenticationSASLFinal)r   é   é   é   é   é   é   é   é   é	   é
   é   é   c                   @   s   e Zd ZdZeddƒgZdS )Ú	KeepAlivez
Keep AliveÚlenr   N©Ú__name__Ú
__module__Ú__qualname__Únamer   Úfields_desc© r+   r+   úM/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/postgres.pyr#   /   s   ÿr#   c                   @   s(   e Zd ZdZedddd�eddƒgZdS )Ú
SSLRequestzSSL request code messageÚlengthNÚI©ÚfmtÚrequest_codei/Ò)r&   r'   r(   r)   r	   r   r*   r+   r+   r+   r,   r-   6   s   þr-   c                       s(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )Ú_DictStrFieldzDTakes a dictionary as an argument and packs back into a byte string.c                    sb   t |tƒr|S t |tƒrLtƒ }| ¡ D ]\}}||d | d 7 }q&|d S tt| ƒ ||¡S d S )Nó    )Ú
isinstanceÚbytesÚdictÚitemsÚsuperr3   Úi2m)ÚselfÚpktÚxÚresultÚkÚv©Ú	__class__r+   r,   r:   A   s    

z_DictStrField.i2mc                 C   s   |d u rdS t |  ||¡ƒS ©Nr   )r$   r:   )r;   r<   r=   r+   r+   r,   Úi2lenL   s    z_DictStrField.i2len)r&   r'   r(   Ú__doc__r:   rD   Ú__classcell__r+   r+   rA   r,   r3   >   s   r3   c                   @   s@   e Zd ZdZedddddd„ d�ed	d
ƒeddƒeddƒgZdS )ÚStartupzStartup Request Packetr$   NÚoptionsr/   c                 C   s   |d S ©Nr   r+   ©r<   r=   r+   r+   r,   Ú<lambda>W   ó    zStartup.<lambda>©Ú	length_ofr1   ÚadjustZprotocol_version_majorr   Zprotocol_version_minorr   )r&   r'   r(   r)   r	   r   r3   r*   r+   r+   r+   r,   rG   S   s   ÿúrG   c                       s<   e Zd ZdZddgZdddd„ f‡ fdd	„	Zd
d„ Z‡  ZS )Ú_FieldsLenFieldz@Same as FieldLenField but takes a tuple of fields for length_of.rN   rO   NÚHc                 C   s   |S ©Nr+   rJ   r+   r+   r,   rK   j   rL   z_FieldsLenField.<lambda>c                    s$   t t| ƒ |||¡ || _|| _d S rR   )r9   rP   Ú__init__rN   rO   )r;   r)   ÚdefaultrN   r1   rO   rA   r+   r,   rS   d   s    	z_FieldsLenField.__init__c                 C   sp   |d u r`|d ur`| j d urJd}| j D ]"}| |¡\}}|| ||¡7 }q$ntdƒ‚|  ||¡}n|d u rld}|S )Nr   z.Field should have either length_of or count_of)rN   Zgetfield_and_valrD   Ú
ValueErrorrO   )r;   r<   r=   ÚfZlength_of_fieldZfldZfvalr+   r+   r,   r:   q   s    

z_FieldsLenField.i2m)r&   r'   r(   rE   Ú	__slots__rS   r:   rF   r+   r+   rA   r,   rP   _   s   úrP   c                 C   s‚   d}|r|dd… }|| j v r(| j | S |dd… dkrzt|ƒdkrzt d|dd… ¡d }|dkrhtS |dkrttS tS nd S d S )	NrL   r   r   r4   r   ú!Ir   r   )Úcls_mappingr$   ÚstructÚunpackr#   r-   rG   )r<   ÚlstÚcurZremainÚkeyr.   r+   r+   r,   Údetermine_pg_field�   s    

r_   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚByteTagFieldc                    s   t t| ƒ dt|ƒ¡ d S )NÚtag)r9   r`   rS   Úord)r;   rT   rA   r+   r,   rS   ”   s    zByteTagField.__init__c                 C   s
   t | jƒS rR   )rb   rT   )r;   r+   r+   r,   Úrandval™   s    zByteTagField.randval)r&   r'   r(   rS   rc   rF   r+   r+   rA   r,   r`   “   s   r`   c                   @   s,   e Zd ZdZedg ed�gZedd„ ƒZdS )Ú_BasePostgreszRegular packetÚcontents)Znext_cls_cbc                 C   sR   |rF|dd… dkrFt  d|dd… ¡d }|dkr<t|ƒS t|ƒS n| |ƒS d S )Nr   r   r4   rX   r   r   )rZ   r[   r-   rG   )ÚclsÚdataÚmetadatar.   r+   r+   r,   Útcp_reassemble¡   s    
z_BasePostgres.tcp_reassembleN)	r&   r'   r(   r)   r   r_   r*   Úclassmethodri   r+   r+   r+   r,   rd   �   s   rd   c                   @   s   e Zd Zdd„ ZdS )Ú_ZeroPaddingc                 C   s   d|fS )NrL   r+   )r;   Úpr+   r+   r,   Úextract_padding®   s    z_ZeroPadding.extract_paddingN)r&   r'   r(   rm   r+   r+   r+   r,   rk   ­   s   rk   c                   @   s2   e Zd ZdZeddddd�eddd	d
„ d�gZdS )ÚSignedIntStrPairz
Bytes datar$   r   ÚiÚvalue©r1   rN   rg   Nc                 C   s   | j dkr| j S dS rC   ©r$   ©r<   r+   r+   r,   rK   ·   rL   zSignedIntStrPair.<lambda>©Úlength_from)r&   r'   r(   r)   r	   r   r*   r+   r+   r+   r,   rn   ²   s   
ÿþrn   c                   @   sJ   e Zd ZdZedƒedddddd„ d	�ed
ded�edddd„ d�gZ	dS )ÚAuthenticationzAuthentication Requestó   Rr$   NÚoptionalr/   c                 C   s   |d S rI   r+   rJ   r+   r+   r,   rK   Á   rL   zAuthentication.<lambda>rM   Úmethodr   )rT   Úenumc                 C   s
   | j d S rI   rr   rs   r+   r+   r,   rK   Ä   rL   rt   )
r&   r'   r(   r)   r`   r	   r   Ú
AUTH_CODESr   r*   r+   r+   r+   r,   rv   ¼   s   ÿúrv   c                   @   s>   e Zd ZdZedƒedddddd„ d	�ed
dƒeddƒgZdS )ÚParameterStatuszParameter Statusó   Sr$   Nr/   )Ú	parameterrp   c                 C   s   |d S ©Nr   r+   rJ   r+   r+   r,   rK   Ñ   rL   zParameterStatus.<lambda>©r1   rN   rO   r~   Ú rp   ©r&   r'   r(   r)   r`   r	   r   r*   r+   r+   r+   r,   r|   È   s$   ûþþór|   c                   @   s6   e Zd ZdZedƒedddddd„ d	�eddƒgZdS )
ÚQueryzSimple Queryó   Qr$   NÚqueryr/   c                 C   s   |d S ©Nr   r+   rJ   r+   r+   r,   rK   ã   rL   zQuery.<lambda>rM   r‚   r+   r+   r+   r,   rƒ   Þ   s   ÿûrƒ   c                   @   s>   e Zd ZdZedƒedddddd„ d	�edd
dd„ d�gZdS )ÚCommandCompletezCommand Completion Responseó   Cr$   NZcmdtagr/   c                 C   s   |d S r   r+   rJ   r+   r+   r,   rK   î   rL   zCommandComplete.<lambda>rM   r�   c                 C   s
   | j d S r   rr   rs   r+   r+   r,   rK   ð   rL   rt   ©r&   r'   r(   r)   r`   r	   r   r*   r+   r+   r+   r,   r‡   é   s   ÿûr‡   c                   @   s6   e Zd ZdZedƒedddd�eddƒed	dƒgZdS )
ÚBackendKeyDatazBackend Key Dataó   Kr$   Nr/   r0   Úpidr   r^   )r&   r'   r(   r)   r`   r	   r   r*   r+   r+   r+   r,   rŠ   ô   s   ürŠ   ZInFailedTransactionÚIdleZInTransaction)ó   Eó   Ió   Tc                   @   s,   e Zd ZdZedƒeddƒeddeƒgZdS )ÚReadyForQueryzReady Signaló   Zr$   r   Ústatusr�   N)	r&   r'   r(   r)   r`   r   r   ÚSTATUS_TYPEr*   r+   r+   r+   r,   r‘     s
   
ýr‘   c                	   @   sL   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ƒgZdS )ÚColumnDescriptionzColumn DescriptionÚcolNZtableoidr   ÚcolnoZtypeoidZtypelenZtypemodÚformat)r&   r'   r(   r)   r   r   r   r*   r+   r+   r+   r,   r•     s   ùr•   c                
   @   sN   e Zd ZdZedƒedddddd„ d	�ed
dƒedg edd„ dd„ d�gZ	dS )ÚRowDescriptionzRow Descriptionr�   r$   Nr/   Úcolsc                 C   s   |d S ©Nr   r+   rJ   r+   r+   r,   rK      rL   zRowDescription.<lambda>r€   Ú	numfieldsr   c                 C   s   | j S rR   ©rœ   rs   r+   r+   r,   rK   '  rL   c                 C   s
   | j d S r›   rr   rs   r+   r+   r,   rK   (  rL   )Zpkt_clsÚ
count_fromru   )
r&   r'   r(   r)   r`   r	   r   r   r•   r*   r+   r+   r+   r,   r™     s   ÿûúr™   c                	   @   sH   e Zd ZdZedƒedddddd„ d	�ed
dƒedg edd„ d�gZdS )ÚDataRowzData Rowó   Dr$   Nr/   rg   c                 C   s   t | ƒd S ©Nr   rr   rJ   r+   r+   r,   rK   2  rL   zDataRow.<lambda>r€   rœ   r   c                 C   s   | j S rR   r�   rs   r+   r+   r,   rK   9  rL   ©rž   )	r&   r'   r(   r)   r`   r	   r   rn   r*   r+   r+   r+   r,   rŸ   -  s   ÿüúrŸ   ZSeverityZSeverityNonLocalizedZCodeÚMessageZDetailZHintZPositionZInternalPositionZInternalQueryZWhereZ
SchemaNameZ	TableNameZ
ColumnNameZDataTypeNameZConstraintNameÚFileZLineZRoutine)r}   ó   Vrˆ   ó   Mr    ó   Hó   Pó   pó   qó   Wó   só   tó   có   dó   nó   Fó   Lrw   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚErrorResponseFieldc                    s6   t t| ƒ ||¡}|dd… }t ||¡|dd… fS )z$Unpack into a tuple of Field, Value.r   r   N)r9   r³   Úm2iÚERROR_FIELDÚget)r;   r<   r=   ro   Zi_coderA   r+   r,   r´   V  s    zErrorResponseField.m2i)r&   r'   r(   r´   rF   r+   r+   rA   r,   r³   U  s   r³   c                   @   sN   e Zd ZdZedƒedddddd„ d	�edg ed
dƒdd„ d�eddƒgZ	dS )ÚErrorResponsezError ResponserŽ   r$   NZerror_fieldsr/   c                 C   s   |d S r†   r+   rJ   r+   r+   r,   rK   b  rL   zErrorResponse.<lambda>rM   rp   c                 C   s
   | j d S r†   rr   rs   r+   r+   r,   rK   h  rL   rt   Ú
terminator©
r&   r'   r(   r)   r`   r	   r
   r³   r   r*   r+   r+   r+   r,   r·   ]  s   ÿüõr·   c                   @   s"   e Zd ZdZedƒeddƒgZdS )Ú	TerminatezTermination Requestó   Xr$   r   N©r&   r'   r(   r)   r`   r   r*   r+   r+   r+   r,   rº   n  s   þrº   c                   @   s8   e Zd ZdZedƒeddddd�edddd	„ d
�gZdS )Ú_TodozUnsupported messageó   ?r$   Nr/   Úbodyrq   c                 C   s
   | j d S r   rr   rs   r+   r+   r,   rK   {  rL   z_Todo.<lambda>rt   r‰   r+   r+   r+   r,   r½   v  s
   ýr½   c                   @   sª   e Zd ZdZedƒedddddd„ d	�ed
dƒeddƒeddddd�edg eddƒdd„ d�eddddd�e	dg e
dd„ d�eddddd�edg eddƒdd„ d�g
ZdS )ÚBindzBind Requestr¾   r$   Nr/   r¿   c                 C   s   t | ƒd S r¡   rr   rJ   r+   r+   r,   rK   „  rL   zBind.<lambda>r€   Údestinationr�   Ú	statementÚcodes_countr   rQ   Úcodes©r1   Zcount_ofc                 C   s   | j S rR   )rÃ   rs   r+   r+   r,   rK   Š  rL   r¢   Úvalues_countÚvaluesc                 C   s   | j S rR   )rÆ   rs   r+   r+   r,   rK   Ž  rL   Úresults_countÚresultsc                 C   s   | j S rR   )rÈ   rs   r+   r+   r,   rK   ’  rL   )r&   r'   r(   r)   r`   r	   r   r
   r   r   rn   r*   r+   r+   r+   r,   rÀ     s(   ÿÿÿÿðrÀ   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚBindCompletezBind Completeó   2r$   r   Nr¼   r+   r+   r+   r,   rÊ   —  s   þrÊ   ZPreparedStatementZPortal)r}   r¨   c                   @   sB   e Zd ZdZedƒedddddd„ d	�ed
ded�eddƒgZ	dS )ÚClosezClose Requestrˆ   r$   Nr/   rÂ   c                 C   s   |d S r›   r+   rJ   r+   r+   r,   rK   §  rL   zClose.<lambda>r€   Ú
close_typer}   ©rz   r�   ©
r&   r'   r(   r)   r`   r	   r   ÚCLOSE_DESCRIBE_TYPEr   r*   r+   r+   r+   r,   rÌ   ¢  s   ÿþúrÌ   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚCloseCompletezClose Completeó   3r$   r   Nr¼   r+   r+   r+   r,   rÑ   ±  s   þrÑ   c                   @   sB   e Zd Zd Zedƒedddddd„ d�ed	d
ed�eddƒgZ	dS )ÚDescriber    r$   Nr/   rÂ   c                 C   s   |d S r›   r+   rJ   r+   r+   r,   rK   ¾  rL   zDescribe.<lambda>r€   rÍ   r}   rÎ   r�   rÏ   r+   r+   r+   r,   rÓ   ¹  s   ÿúrÓ   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚEmptyQueryResponsezEmpty Query Responser�   r$   r   Nr¼   r+   r+   r+   r,   rÔ   Å  s   þrÔ   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚFlushzFlush Requestr§   r$   r   Nr¼   r+   r+   r+   r,   rÕ   Í  s   þrÕ   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚNoDatazNo Data Responser°   r$   r   Nr¼   r+   r+   r+   r,   rÖ   Õ  s   þrÖ   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚParseCompletezParse Complete Responseó   1r$   r   Nr¼   r+   r+   r+   r,   r×   Ý  s   þr×   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚPortalSuspendedzPortal Suspended Responser¬   r$   r   Nr¼   r+   r+   r+   r,   rÙ   å  s   þrÙ   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚSynczSync Requestr}   r$   r   Nr¼   r+   r+   r+   r,   rÚ   í  s   þrÚ   c                   @   sb   e Zd ZdZedƒeddddd„ d�ed	d
ƒedd
ƒeddddd�edg eddƒdd„ d�gZ	dS )ÚParsezParse Requestr¨   r$   Nr/   c                 C   s   t | ƒd S r¡   rr   rJ   r+   r+   r,   rK   ù  rL   zParse.<lambda>)r1   rO   rÁ   r�   r…   Únum_param_dtypesrQ   ÚparamsrÅ   Úparamc                 C   s   | j S rR   )rÜ   rs   r+   r+   r,   rK     rL   r¢   )
r&   r'   r(   r)   r`   r	   r   r
   r   r*   r+   r+   r+   r,   rÛ   õ  s   üúrÛ   c                   @   s>   e Zd ZdZedƒedddddd„ d	�edd
ƒeddƒgZdS )ÚExecutezExecute RequestrŽ   r$   Nr/   Zportalc                 C   s   |d S )Nr   r+   rJ   r+   r+   r,   rK     rL   zExecute.<lambda>r€   r�   Úrowsr   )	r&   r'   r(   r)   r`   r	   r   r   r*   r+   r+   r+   r,   rß     s   ÿþ÷rß   c                   @   sB   e Zd ZdZdZedƒedddddd	„ d
�edddd	„ d�gZdS )ÚPasswordMessagezÅ
    Identifies the message as a password response.
    Note that this is also used for GSSAPI, SSPI and SASL
    response messages. The exact message type can be deduced
    from the context.
    úPassword Request Responser©   r$   Nr/   Úpasswordc                 C   s   |d S r   r+   rJ   r+   r+   r,   rK   !  rL   zPasswordMessage.<lambda>r€   c                 C   s
   | j d S r   rr   rs   r+   r+   r,   rK   #  rL   rt   )	r&   r'   r(   rE   r)   r`   r	   r   r*   r+   r+   r+   r,   rá     s   ÿûrá   c                   @   sN   e Zd ZdZedƒedddddd„ d	�edg ed
dƒdd„ d�eddƒgZ	dS )ÚNoticeResponsezNotice Responseó   Nr$   NZnotice_fieldsr/   c                 C   s   |d S r†   r+   rJ   r+   r+   r,   rK   ,  rL   zNoticeResponse.<lambda>rM   rp   c                 C   s
   | j d S r†   rr   rs   r+   r+   r,   rK   2  rL   rt   r¸   r¹   r+   r+   r+   r,   rä   '  s   ÿüõrä   c                   @   sF   e Zd ZdZedƒedddddd„ d	�ed
dƒeddƒeddƒgZdS )ÚNotificationResponserâ   ó   Ar$   Nr/   )ÚchannelÚpayloadc                 C   s   |d S rI   r+   rJ   r+   r+   r,   rK   A  rL   zNotificationResponse.<lambda>r€   Ú
process_idr   rè   ré   )	r&   r'   r(   r)   r`   rP   r   r   r*   r+   r+   r+   r,   ræ   8  s   ûõræ   c                   @   sF   e Zd ZdZedƒedddddd„ d	�ed
dƒeddƒeddƒgZdS )ÚNegotiateProtocolVersionz#Negotiate Protocol Version Responseó   vr$   Nr/   Úoptionc                 C   s   |d S )Nr"   r+   rJ   r+   r+   r,   rK   N  rL   z!NegotiateProtocolVersion.<lambda>r€   Zmin_minor_versionr   Zunrecognized_options)	r&   r'   r(   r)   r`   r	   r   r   r*   r+   r+   r+   r,   rë   I  s   ÿùrë   c                   @   sJ   e Zd ZdZedƒedddddd„ d	�ed
ddd�edddd„ d�gZdS )ÚFunctionCallResponsezFunction Call Responser¥   r$   Nr/   r>   c                 C   s   |d S rI   r+   rJ   r+   r+   r,   rK   [  rL   zFunctionCallResponse.<lambda>r€   Ú
result_len)rN   c                 C   s   | j S rR   )rï   rs   r+   r+   r,   rK   ^  rL   rt   r‰   r+   r+   r+   r,   rî   V  s   ÿúrî   c                	   @   sN   e Zd ZdZedƒedddddd„ d	�ed
dƒedg eddƒdd„ d�gZ	dS )ÚParameterDescriptionzParameter Descriptionr­   r$   Nr/   Zdtypesc                 C   s   |d S r›   r+   rJ   r+   r+   r,   rK   g  rL   zParameterDescription.<lambda>r€   Ú
dtypes_lenr   Zdtypec                 C   s   | j S rR   )rñ   rs   r+   r+   r,   rK   n  rL   r¢   )
r&   r'   r(   r)   r`   r	   r   r
   r   r*   r+   r+   r+   r,   rð   b  s   ÿüúrð   c                   @   s>   e Zd ZdZedƒedddddd„ d	�eddd
d„ d�gZdS )ÚCopyDataz	Copy Datar¯   r$   Nr/   rg   c                 C   s   |d S r   r+   rJ   r+   r+   r,   rK   x  rL   zCopyData.<lambda>r€   c                 C   s
   | j d S r   rr   rs   r+   r+   r,   rK   z  rL   rt   r‰   r+   r+   r+   r,   rò   s  s   ÿûrò   c                   @   s"   e Zd ZdZedƒeddƒgZdS )ÚCopyDonez	Copy Doner®   r$   r   Nr¼   r+   r+   r+   r,   ró   ~  s   þró   c                   @   s>   e Zd ZdZedƒedddddd„ d	�eddd
d„ d�gZdS )ÚCopyFailzCopy Fail Reasonó   fr$   Nr/   Úreasonc                 C   s   |d S r   r+   rJ   r+   r+   r,   rK   ‹  rL   zCopyFail.<lambda>r€   c                 C   s
   | j d S r   rr   rs   r+   r+   r,   rK   �  rL   rt   r‰   r+   r+   r+   r,   rô   †  s   ÿûrô   c                   @   s4   e Zd ZdZeddƒeddƒeddƒeddƒgZd	S )
ÚCancelRequestzCancel Requestr$   é   r2   i.Òrê   r   ÚsecretNr%   r+   r+   r+   r,   r÷   ‘  s   ür÷   c                   @   s$   e Zd ZdZeddƒeddƒgZdS )ÚGSSENCRequestzGSSENC Requestr$   r   r2   i0ÒNr%   r+   r+   r+   r,   rú   ›  s   þrú   c                
   @   sV   e Zd ZdZedƒedddddd„ d	�ed
dƒeddƒedg ed
dƒdd„ d�gZ	dS )ÚCopyInResponsezCopy in Responseó   Gr$   Nr/   rš   c                 C   s   |d S ©Nr   r+   rJ   r+   r+   r,   rK   ¨  rL   zCopyInResponse.<lambda>r€   r˜   r   Úncolsc                 C   s   | j S rR   ©rþ   rs   r+   r+   r,   rK   °  rL   r¢   ©
r&   r'   r(   r)   r`   r	   r   r   r
   r*   r+   r+   r+   r,   rû   £  s   ÿüùrû   c                
   @   sV   e Zd ZdZedƒedddddd„ d	�ed
dƒeddƒedg ed
dƒdd„ d�gZ	dS )ÚCopyOutResponsezCopy out Responser§   r$   Nr/   rš   c                 C   s   |d S rý   r+   rJ   r+   r+   r,   rK   º  rL   zCopyOutResponse.<lambda>r€   r˜   r   rþ   c                 C   s   | j S rR   rÿ   rs   r+   r+   r,   rK   Â  rL   r¢   r   r+   r+   r+   r,   r  µ  s   ÿüùr  c                
   @   sV   e Zd ZdZedƒedddddd„ d	�ed
dƒeddƒedg ed
dƒdd„ d�gZ	dS )ÚCopyBothResponsezCopy both Responser«   r$   Nr/   rš   c                 C   s   |d S rý   r+   rJ   r+   r+   r,   rK   Ì  rL   zCopyBothResponse.<lambda>r€   r˜   r   rþ   c                 C   s   | j S rR   rÿ   rs   r+   r+   r,   rK   Ô  rL   r¢   r   r+   r+   r+   r,   r  Ç  s   ÿüùr  )ó   Brˆ   r¯   r®   rõ   r    rŽ   r§   r±   r¨   r©   r„   r}   r»   )rw   r‹   rË   rÒ   rˆ   r¯   r®   rü   r§   r«   r    r�   rŽ   r¥   rì   r°   rå   rç   r­   r}   rØ   r¬   r’   r�   c                   @   s   e Zd ZeZedd„ ƒZdS )ÚPostgresFrontendc                 C   s$   t |ƒ}|jr d|jd v r |S d S )NrÚ   éÿÿÿÿ)r  re   ©rf   rg   rh   Zmsgsr+   r+   r,   ri   	  s    zPostgresFrontend.tcp_reassembleN)r&   r'   r(   ÚFRONTEND_TAG_TO_PACKET_CLSrY   rj   ri   r+   r+   r+   r,   r    s   r  c                   @   s   e Zd ZeZedd„ ƒZdS )ÚPostgresBackendc                 C   s$   t |ƒ}|jr d|jd v r |S d S )Nr‘   r  )r  re   r  r+   r+   r,   ri     s    zPostgresBackend.tcp_reassembleN)r&   r'   r(   ÚBACKEND_TAG_TO_PACKET_CLSrY   rj   ri   r+   r+   r+   r,   r    s   r  i8  )Údport)Zsport)VrZ   Zscapy.compatr   r   r   r   Zscapy.fieldsr   r   r   r	   r
   r   r   r   r   r   r   r   r   Zscapy.packetr   r   Zscapy.layers.inetr   Zscapy.sessionsr   r{   r#   r-   r3   rG   ÚintrP   r_   r`   rd   rk   rn   rv   r|   rƒ   r‡   rŠ   r”   r‘   r•   r™   rŸ   rµ   r³   r·   rº   r½   rÀ   rÊ   rÐ   rÌ   rÑ   rÓ   rÔ   rÕ   rÖ   r×   rÙ   rÚ   rÛ   rß   rá   rä   ræ   rë   rî   rð   rò   ró   rô   r÷   rú   rû   r  r  r  r	  r  r  r+   r+   r+   r,   Ú<module>   s  <ó"

ý	î	

òè

