3
@6^                 @   s0   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               @   sZ   e Zd ZdZdddZdddZddiZd	Zd
Ze	 fddZ
dd Zdd Zdd Zd	S )sfp_pastebinzPasteBin:Footprint,Investigate,Passive:Leaks, Dumps and Breaches:apikey:PasteBin scraping (via Google) to identify related content. z!013611106330597893267:tfgl3wxdtbp)api_keycse_idz#Google API Key for PasteBin search.zGoogle Custom Search Engine ID.Zpastebinzpastebin.comNFc             C   s>   || _ | j | _d| _x"t|j D ]}|| | j|< q$W d S )NF)sftempStorageresults
errorStatelistkeysopts)selfsfcuserOptsopt r   7/var/www/spiderfoot.crq.systems/modules/sfp_pastebin.pysetup*   s
    
zsfp_pastebin.setupc             C   s
   dddgS )NDOMAIN_NAMEINTERNET_NAME	EMAILADDRr   )r   r   r   r   watchedEvents3   s    zsfp_pastebin.watchedEventsc             C   s   ddgS )NLEAKSITE_CONTENTLEAKSITE_URLr   )r   r   r   r   producedEvents9   s    zsfp_pastebin.producedEventsc                sB  |j }|j}|j} jrd S  jd dkrB jjdd d _d S | jkrPd S d j|< xt j	j
 D ]}t } j	|  jjdj|d jd  jd	  jd  jd
 dd}|d krd S |d }tt|t jj
  }	x|	D ]}
d j|
< qW  fdd|	D }x|D ]} jjd|   j rDd S  jj| jd  jd	 d}|d d kr jjd| d  q tjdtj| d |d tjd krq y|d j|}W n4 tk
r } z jjd w W Y d d }~X nX td| j|} j| td|d  j|} j| q W qlW d S )Nr   r   z:You enabled sfp_pastebin but did not set a Google API key!FTz&+site:{target_site} "{search_keyword}")Ztarget_siteZsearch_keyword_fetchtimeout
_useragentr   )timeout	useragentr   r   )searchStringr   urlsc                s"   g | ]} j j|jr|qS r   )r	   
urlBaseUrlendswith).0link)r   targetr   r   
<listcomp>j   s    z,sfp_pastebin.handleEvent.<locals>.<listcomp>zFound a link: )r    r!   contentz	Ignoring z as no data returnedz[^a-zA-Z\-\_0-9]z#String not found in pastes content.r   r   )	eventTypemoduledatar   r   r	   errorr   r   domainsr   googleIterateformatsetdebugcheckForStopfetchUrlresearchescape
IGNORECASEindexBaseExceptionr   __name__notifyListeners)r   event	eventNamesrcModuleName	eventDatadomlinksresr#   	new_linkslZrelevant_linksr'   
startIndexeevt1evt2r   )r   r(   r   handleEvent<   sf    





zsfp_pastebin.handleEvent)r<   
__module____qualname____doc__r   optdescsr/   r   r   dictr   r   r   rK   r   r   r   r   r      s   	r   )r6   sflibr   r   r   r   r   r   r   r   <module>   s   