a
    kÄ#d  ã                
   @   s‚  d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZmZmZmZmZ ddlmZmZmZ ej d	i ¡ ejd	  d
dg¡ G dd„ deƒZeeedd� eeedd� dddœZG dd„ deƒZdddddœZG dd„ deƒZddddœZG dd„ deƒZd d!d"d#d$d%d&d'd(d)œ	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d.� d/S )0z†SOCKS4/5 Protocol

You can change the server ports that are used in the SOCKS layer by editing.
conf.contribs['socks']['serverports']
é    )Úconf)Úwarning)ÚDNSStrField)ÚTCPÚUDP)ÚIP6Field)Ú	ByteFieldÚByteEnumFieldÚ
ShortFieldÚIPFieldÚStrFieldÚMultipleTypeField)ÚPacketÚbind_layersÚbind_bottom_upÚsocksÚserverportsé8  c                   @   s2   e Zd ZeddddddœƒgZdd„ Zd	d
„ ZdS )ÚSOCKSÚvné   zv4 - Requestz
v4 - ReplyZv5)é   r   r   c                 C   sŽ   d }}| j r@t| j tƒr@tjd d }| j j|v }| j j|v }| jdkr\|rRtS |r‚t	S n&| jdkrp|r‚t
S n| jdkr‚|r‚tS tdƒ tS )NTr   r   r   r   r   zqNo TCP underlayer, or dport/sport not in conf.contribs['socks']['serverports']. Assuming a SOCKS v5 request layer)Ú
underlayerÚ
isinstancer   r   ÚcontribsÚdportÚsportr   ÚSOCKS5RequestÚSOCKS5ReplyÚSOCKS4RequestÚSOCKS4Replyr   )ÚselfÚpktZd_portZs_portZports© r#   úJ/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/socks.pyÚguess_payload_class&   s$    


zSOCKS.guess_payload_classc                 C   s`   | j rPt| j tƒrPt|ttfƒr2d| j _d| j _nt|ttfƒrPd| j _d| j _t	 
| |¡ d S )Nr   i9  )r   r   r   r   r   r   r   r   r    r   Úadd_payload)r!   Úpayloadr#   r#   r$   r&   <   s    
zSOCKS.add_payloadN)Ú__name__Ú
__module__Ú__qualname__r	   Úfields_descr%   r&   r#   r#   r#   r$   r       s   
ÿÿr   )r   )r   ZConnectZBind)é   é   c                   @   sJ   e Zd ZdZeddiiZeddeƒeddƒe	dd	ƒe
d
dƒeddƒgZdS )r   zSOCKS 4 - Requestr   r   Úcdr,   ZdstportéP   Údstú0.0.0.0ZuseridÚ Únullr   N)r(   r)   r*   Únamer   Úoverload_fieldsr	   Ú_socks4_cd_requestr
   r   r   r   r+   r#   r#   r#   r$   r   R   s   
ûr   zRequest grantedzRequest rejectedz8Request rejected - SOCKS server cannot connect to identdz$Request rejected - user-ids mismatch)éZ   é[   é\   é]   c                   @   s8   e Zd ZdZeddiiZeddeƒgej	dd…  Z	dS )	r    zSOCKS 4 - Replyr   r   r.   r7   r,   éþÿÿÿN)
r(   r)   r*   r4   r   r5   r	   Ú_socks4_cd_replyr   r+   r#   r#   r#   r$   r    f   s   
ÿþr    zUDP associate)r,   r-   é   c                	   @   sŠ   e Zd ZdZeddiiZeddeƒeddƒeddd	d
ddœƒe	e
ddƒdd„ feddƒdd„ feddƒdd„ fgeddƒƒeddƒgZdS )r   zSOCKS 5 - Requestr   r   r.   r   ÚresÚatypr,   ZIPv4Z
DomainNameZIPv6)r,   r=   r   Úaddrr1   c                 C   s
   | j dkS )Nr,   ©r?   ©r"   r#   r#   r$   Ú<lambda>‚   ó    zSOCKS5Request.<lambda>r2   c                 C   s
   | j dkS )Nr=   rA   rB   r#   r#   r$   rC   „   rD   z::c                 C   s
   | j dkS )Nr   rA   rB   r#   r#   r$   rC   †   rD   Úportr/   N)r(   r)   r*   r4   r   r5   r	   Ú_socks5_cdtypesr   r   r   r   r   r   r
   r+   r#   r#   r#   r$   r   w   s    

ÿú÷ðr   Z	succeededzgeneral server failurez!connection not allowed by rulesetznetwork unreachablezhost unreachablezconnection refusedzTTL expiredzcommand not supportedzaddress type not supported)	r   r,   r-   r=   r   r   é   é   é   c                   @   s8   e Zd ZdZeddiiZeddeƒgej	dd…  Z	dS )r   zSOCKS 5 - Replyr   r   Úrepr   r,   N)
r(   r)   r*   r4   r   r5   r	   Ú_socks5_repr   r+   r#   r#   r#   r$   r   ›   s   
ÿþr   c                   @   s:   e Zd ZdZeddƒeddƒgejdd…  Zdd„ ZdS )	Ú	SOCKS5UDPzSOCKS 5 - UDP Headerr>   r   Úfragr-   Nc                 C   s&   | j dkrtjS t| j | j d� d ¡S )Nr   ©r   r   )rE   r   Z	raw_layerr   r%   )r!   Úsr#   r#   r$   r%   ­   s    
zSOCKS5UDP.guess_payload_class)	r(   r)   r*   r4   r
   r   r   r+   r%   r#   r#   r#   r$   rL   ¦   s   þýrL   rN   N)#Ú__doc__Zscapy.configr   Zscapy.errorr   Zscapy.layers.dnsr   Zscapy.layers.inetr   r   Zscapy.layers.inet6r   Zscapy.fieldsr   r	   r
   r   r   r   Zscapy.packetr   r   r   r   Ú
setdefaultr   r6   r   r<   r    rF   r   rK   r   rL   r#   r#   r#   r$   Ú<module>   sT    'þüý÷