
    h                         d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
  G d d          Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z e            e_        dS )z"
Resolve Autonomous Systems (AS).
    N)conf)	plain_str)AnyOptionalTupleListc                   <    e Zd ZdZdZd
dZd Zd Zd Zd Z	d	 Z
dS )AS_resolverNz-k+   c                 <    ||| _         || _        |	|| _        d S d S N)serverportoptions)selfr   r   r   s       V/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/as_resolvers.py__init__zAS_resolver.__init__   s/     DK	"DLLL     c                 ^   t          j         t           j        t           j                  | _        | j                            | j        | j        f           | j        rQ| j                            | j        	                    d          dz              | j        
                    d           d S d S )Nutf8   
    )socketAF_INETSOCK_STREAMsconnectr   r   r   sendencoderecvr   s    r   _startzAS_resolver._start#   s    v~v/ABBTY/000< 	FKK++F33e;<<<FKK	 	r   c                 8    | j                                          d S r   )r   closer!   s    r   _stopzAS_resolver._stop+   s    r   c                    d\  }}|                                 D ]}|s>|                    d          r)t          |dd                                                    }|                    d          r&|r|dz  }||dd                                          z  }||r n|t          |                                          fS )N)Nr   s   origin:   s   descr:r      )
splitlines
startswithr   strip)r   txtasndesclines        r   _parse_whoiszAS_resolver._parse_whois/   s    	TNN$$ 	 	D 24??:66 2QRR 0 011y)) ) "EMDQRR(((4Idjjll++++r   c                    | j                             d|z                      d                     d}d|v s.d|v s*| j                             d          }|sn||z  }d|v sd|v *|                     |          \  }}|||fS )Nz%s
r   r      %s   sourcer   )r   r   r   r    r0   )r   ipxdr-   r.   s         r   _resolve_onezAS_resolver._resolve_one=   s    Vb[((00111199	QD!!A FA	 199	Q
 %%a((	T3}r   c                     |                                   g }|D ]5}|                     |          \  }}}||                    |||f           6|                                  |S r   )r"   r6   appendr%   )r   ipsretr3   r-   r.   s         r   resolvezAS_resolver.resolveI   sn     	 	, 	,B --b11MBT

BT?+++


r   )Nr   N)__name__
__module____qualname__r   r   r   r"   r%   r0   r6   r;    r   r   r
   r
      s}        FG# # # #    , , ,
 
 
    r   r
   c                       e Zd ZdZdZdS )AS_resolver_riswhoiszriswhois.ripe.netz-k -M -1Nr<   r=   r>   r   r   r?   r   r   rA   rA   W   s         FGGGr   rA   c                       e Zd ZdZdZdS )AS_resolver_radbzwhois.ra.netz-k -MNrB   r?   r   r   rD   rD   \   s        FGGGr   rD   c                   "    e Zd ZdZdZd Zd ZdS )AS_resolver_cymruzwhois.cymru.comNc                    t          j         t           j        t           j                  }|                    | j        | j        f           |                    dd                    d |D                       z   dz              d}	 |                    d          }|dk    rn||z  }"|	                                 | 
                    |          S )Ns   begin
s   
c              3   >   K   | ]}|                                 V  d S r   )r   ).0r3   s     r   	<genexpr>z,AS_resolver_cymru.resolve.<locals>.<genexpr>m   s*      33333333r   s   
end
r   Tr   )r   r   r   r   r   r   r   joinr    r$   parse)r   r9   r   rr/   s        r   r;   zAS_resolver_cymru.resolvee   s     M&.&*<==			4;	*+++	LL33s333334	
 	
 	

 	66$<<Ds{{IA		
 	
			zz!}}r   c                     g }t          |                                          dd         D ]N}d|vrd |                    d          D             \  }}}|dk    r1d|z  }|                    |||f           O|S )zParse bulk cymru data   N|c                 6    g | ]}|                                 S r?   )r+   )rI   elts     r   
<listcomp>z+AS_resolver_cymru.parse.<locals>.<listcomp>   s     DDDSSYY[[DDDr   NAzAS%s)r   r)   splitr8   )r   dataASNlistr/   r-   r3   r.   s          r   rL   zAS_resolver_cymru.parsez   s     dOO..004 	, 	,D$DDDJJsOODDDMCTd{{3,CNNBT?++++r   )r<   r=   r>   r   r   r;   rL   r?   r   r   rF   rF   a   s<        FG  *    r   rF   c                       e Zd Zd Zd ZdS )AS_resolver_multic                     t                               |            |r	|| _        d S t                      t	                      f| _        d S r   )r
   r   resolvers_listrD   rF   )r   reslists     r   r   zAS_resolver_multi.__init__   sN    T""" 	8")D#3#5#5#4#6#6#8Dr   c                     |}g }| j         D ]G}	  |j        | n# t          j        $ r Y w xY wt	          fd|D                       }|z  }|s nH|S )Nc              3   8   K   | ]}|d  D             v|V  dS )c                     g | ]
}|d          S )r   r?   )rI   rM   s     r   rS   z7AS_resolver_multi.resolve.<locals>.<genexpr>.<listcomp>   s    8K8K8K!18K8K8Kr   Nr?   )rI   r3   ress     r   rJ   z,AS_resolver_multi.resolve.<locals>.<genexpr>   s<      LLb8K8Ks8K8K8K.K.K.K.K.K.KLLr   )r[   r;   r   errortuple)r   r9   todor:   ASresr`   s        @r   r;   zAS_resolver_multi.resolve   s    ( 	 	E#emT*<   LLLLdLLLLLD3JC 
s   
--N)r<   r=   r>   r   r;   r?   r   r   rY   rY      s2        8 8 8    r   rY   )__doc__r   scapy.configr   scapy.compatr   typingr   r   r   r   r
   rA   rD   rF   rY   r?   r   r   <module>ri      se   
        " " " " " "           = = = = = = = =@    ;   
    {   
& & & & & & & &R       4 %$&&   r   