3
@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   sJ   || _ | j | _d| _d| _d| _x"t|j D ]}|| | j|< q0W 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jd| d |  | jd dkrn| jd dkrn| jjdd d| _d S || j	kr| jjd| d	  d S |d
kr|dkr| jjd| d  d S | j
| jd krd S t }|jdrxPt|D ].}t|| j	kr|jt| d| j	t|< qW n|j| d| j	|< t }x|D ]}| j rRd S | jjd| | jd | jd | jd | jd dd}	|	d krd S |	d }
x(|
D ]}| jjd|  | jj|j }||kr||kr| jd s| j j|ddr| jjd| d  q| jd rR| jj|| rR| jjd| d |  q|dkrtd
|| j|}| j| td|| j|}| j| ntd|| j|}| j| |  j
d 7  _
|j| qW |
r>td!t|	| j|}| j| q>W d 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)rA   
__module____qualname____doc__r   optdescsr   r   r   dictr   r"   r%   rP   r   r   r   r   r      s$   r   N)netaddrr   sflibr   r   r   r   r   r   r   r   <module>   s   