U
    @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   s4   || _ |  | _t| D ]}|| | j|< q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   sl  |j }|j}|j}| jd s(|dkr(d S || jkrJ| jd| d  d S d| j|< d}d}|rh|t| jd krh|  rd S d|	d	j
d
dd d dt|d}| jjdtj| | jd | jd d}|d ks|ds| jd d S |d7 }d|d kr d|d krq\d S d|d kr2d}td|d | j|}	| |	 td|d tjtjB }
|
D ]}|  r d S || jkrqnd| j|< d}| jd D ]4}t||tjr| jd| d |  d}q|rqn| jd|  | j|dsqn| jd  s>td!|| j|}	| |	 qn| jj|| jd" | jd d#}|d d kr| jd$| d%  qn||d kr| jd$| d& |  qntd!|| j|}	| |	 z&|d |d' }|t| d( }W nB tk
r. } z"| jd)| d*  W Y qnW 5 d }~X Y nX |d || }td+d,| d, | j|	}	| |	 qnq\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+   paramsr4   evtlinkslinkr   rres
startIndexendIndexer   r   r   handleEvent;   s    


 
 





 z!sfp_onionsearchengine.handleEvent)rA   
__module____qualname____doc__r   optdescsr   dictr   r   r"   r[   r   r   r   r   r      s$   
r   )
rC   urllib.requestr<   urllib.parseurllib.errorsflibr   r   r   r   r   r   r   r   <module>   s   