3
@6^O                 @   sH   d dl Z d dlZd dlZd dlZd dlmZmZmZ G dd deZ	dS )    N)
SpiderFootSpiderFootPluginSpiderFootEventc               @   s\   e Zd ZdZddddgddZddd	d
ddZdZe fddZdd Z	dd Z
dd ZdS )sfp_onionsearchenginezOnionsearchengine.com:Footprint,Investigate:Search Engines::Search Tor onionsearchengine.com for mentions of the target domain.
      Tz.*://relate.*)timeout	max_pages
fetchlinks	blacklist	fullnameszQuery timeout, in seconds.z,Maximum number of pages of results to fetch.zQFetch the darknet pages (via TOR, if enabled) to verify they mention your target.z3Exclude results from sites matching these patterns.zSearch for human names?Nc             C   s8   || _ | j | _x"t|j D ]}|| | j|< qW d S )N)sftempStorageresultslistkeysopts)selfsfcuserOptsopt r   @/var/www/spiderfoot.crq.systems/modules/sfp_onionsearchengine.pysetup*   s    
zsfp_onionsearchengine.setupc             C   s
   dddgS )NDOMAIN_NAME
HUMAN_NAME	EMAILADDRr   )r   r   r   r   watchedEvents2   s    z#sfp_onionsearchengine.watchedEventsc             C   s
   dddgS )NDARKNET_MENTION_URLDARKNET_MENTION_CONTENTSEARCH_ENGINE_WEB_CONTENTr   )r   r   r   r   producedEvents8   s    z$sfp_onionsearchengine.producedEventsc             C   sv  |j }|j}|j}| jd  r*|dkr*d S || jkrL| jjd| d  d S d| j|< d}d}x|ov|t| jd krp| j rd S d|j	d	j
d
dd d dt|d}| jjdtjj| | jd | jd d}|d ks|jd r| jjd d S |d7 }d|d kr&d|d kr"qbd S d|d kr8d}td|d | j|}	| j|	 tjd|d tjtjB }
x|
D ]}| j rd S || jkrqxd| j|< d}xB| jd D ]4}tj||tjr| jjd| d |  d}qW |rqx| jjd|  | jj|jds qx| jd  sJtd!|| j|}	| j|	 qx| jj|| jd" | jd d#}|d d kr| jjd$| d%  qx||d kr| jjd$| d& |  qxtd!|| j|}	| j|	 y&|d j|d' }|t| d( }W n< tk
r4 } z| jjd)| d*  wxW Y d d }~X nX |d || }td+d,| d, | j|	}	| j|	 qxW qbW d S )-Nr   r   zAlready did a search for z, skipping.T   r	   "raw_unicode_escapeasciireplace)errorsZSearch)searchsubmitpagez)https://onionsearchengine.com/search.php?
_useragentr   )	useragentr   contentz/No results returned from onionsearchengine.com.z
url.php?u=zyou didn't submit a keywordz	forward >Fr    zurl\.php\?u=(.[^"']+)["']r   z	Skipping z as it matches blacklist zFound a darknet mention: z.onionr
   r   _fetchtimeout)r   r,   z	Ignoring z as no data returnedz as no mention of x      zString "z" not found in content.r   z...)	eventTypemoduledatar   r   r   debugintcheckForStopencodedecodestrfetchUrlurllibparse	urlencodegetinfor   __name__notifyListenersrefindall
IGNORECASEDOTALLmatchurlFQDNendswithindexlenBaseException)r   event	eventNamesrcModuleName	eventData	keepGoingr*   paramsr3   evtlinkslinkr   rres
startIndexendIndexer   r   r   handleEvent;   s    










z!sfp_onionsearchengine.handleEvent)r@   
__module____qualname____doc__r   optdescsr   dictr   r   r!   rZ   r   r   r   r   r      s    r   )
rB   urllib.requestr;   urllib.parseurllib.errorsflibr   r   r   r   r   r   r   r   <module>   s   