U
    @6^                     @   s4   d dl mZ d dlmZmZmZ G dd deZdS )    )	IPNetwork)
SpiderFootSpiderFootPluginSpiderFootEventc                   @   sb   e Zd ZdZddddddZdd	d
dddZdZdZdZe	 fddZ
dd Zdd Zdd ZdS )sfp_bingsharedipzjBing (Shared IPs):Footprint,Investigate,Passive:Search Engines::Search Bing for hosts sharing the same IP.F   Td    )cohostsamedomainpagesverify	maxcohostapi_keyz>Treat co-hosted sites on the same target domain as co-hosting?z/Number of max bing results to request from API.zMVerify co-hosts are valid by checking if they still resolve to the shared IP.zbStop reporting co-hosted sites after this many are found, as it would likely indicate web hosting.z"Bing API Key for shared IP search.Nr   c                 C   sF   || _ |  | _d| _d| _d| _t| D ]}|| | j|< q.d S )Nr   BingF)	sftempStorageresultscohostcount__dataSource__
errorStatelistkeysopts)selfsfcuserOptsopt r   ;/var/www/spiderfoot.crq.systems/modules/sfp_bingsharedip.pysetup*   s    
zsfp_bingsharedip.setupc                 C   s   ddgS )N
IP_ADDRESSNETBLOCK_OWNERr   r   r   r   r   watchedEvents5   s    zsfp_bingsharedip.watchedEventsc                 C   s
   dddgS )NCO_HOSTED_SITEr    RAW_RIR_DATAr   r"   r   r   r   producedEvents;   s    zsfp_bingsharedip.producedEventsc                 C   s  |j }|j}|j}|| _| jr"d S | jd| d |  | jd dkrn| jd dkrn| jdd d| _d S || j	kr| jd| d	  d S |d
kr|dkr| jd| d  d S | j
| jd krd S t }|drt|D ].}t|| j	kr|t| d| j	t|< qn|| d| j	|< t }|D ]}|  rL d S | jjd| | jd | jd | jd | jd dd}	|	d kr d S |	d }
|
D ]}| jd|  | j| }||kr||kr| jd s|  j|ddr| jd| d  q| jd rH| j||sH| jd| d |  q|dkrtd
|| j|}| | td|| j|}| | ntd|| j|}| | |  j
d 7  _
|| q|
r6td!t|	| j|}| | q6d S )"NzReceived event, z, from r   r	   z<You enabled sfp_bingsharedip but did not set a Bing API key!FTz	Skipping z as already mapped.r    r   z	Ignoring z, from self.r   	NETBLOCK_zip:_fetchtimeout
_useragentr   )timeout	useragentcountr   )searchStringr   urlszFound something on same IP: r
   )includeParentsz" because it is on the same domain.r   zHost z no longer resolves to r!   r$      r%   )	eventTypemoduledatacurrentEventSrcr   r   debugr   errorr   r   r   
startswithr   strappendcheckForStopbingIterateinfourlFQDNlower	getTargetmatches
validateIPr   __name__notifyListeners)r   event	eventNamesrcModuleName	eventDataqrylistipaddrmyresipresr.   urlsiteipeevtr   r   r   handleEvent?   s    




	



      
   zsfp_bingsharedip.handleEvent)rB   
__module____qualname____doc__r   optdescsr   r   r   dictr   r#   r&   rQ   r   r   r   r   r      s(   
r   N)netaddrr   sflibr   r   r   r   r   r   r   r   <module>   s   