3
@6^                 @   s8   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               @   sV   e Zd ZdZddiZddiZdZdZe fddZ	d	d
 Z
dd Zdd Zdd ZdS )sfp_haveibeenpwnedzHaveIBeenPwned:Footprint,Investigate,Passive:Leaks, Dumps and Breaches:apikey:Check HaveIBeenPwned.com for hacked e-mail addresses identified in breaches.api_key zHaveIBeenPwned.com API key.NFc             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   =/var/www/spiderfoot.crq.systems/modules/sfp_haveibeenpwned.pysetup$   s
    
zsfp_haveibeenpwned.setupc             C   s   dgS )N	EMAILADDRr   )r   r   r   r   watchedEvents0   s    z sfp_haveibeenpwned.watchedEventsc             C   s   dgS )NEMAILADDR_COMPROMISEDr   )r   r   r   r   producedEvents4   s    z!sfp_haveibeenpwned.producedEventsc       	      C   s6  d }| j d rd}nd}d| d | }dd| d i}d	}| j d rT| j d |d
< x|dk rtjd | jj|| j d d|d}|d dkrP |d dkrd S |d dkrtjd |d7 }|d dkrV| jjdd d| _d S qVW ytj|d }W n8 t	k
r0 } z| jjdt
| d d S d }~X nX |S )Nr   32z https://haveibeenpwned.com/api/vz/breachedaccount/Acceptz application/vnd.haveibeenpwned.vz+jsonr   zhibp-api-key   g      ?_fetchtimeoutr   )timeout	useragentheaderscode200404429   401z3Failed to authenticate key with HaveIBeenPwned.com.FTcontentz5Error processing JSON response from HaveIBeenPwned?: )r   timesleepr   fetchUrlerrorr   jsonloads	Exceptionstr)	r   qryretvurlhdrsretryreser   r   r   query7   s<    





zsfp_haveibeenpwned.queryc       
      C   s   |j }|j}|j}| jrd S | jjd| d |  || jkrV| jjd| d  d S d| j|< | j|}|d krvd S xV|D ]N}| jd s|d }n|d }|d	 }t	||d
 | d | j
|}	| j|	 q|W d S )NzReceived event, z, from z	Skipping z as already mapped.Tr   TitleNameZ_COMPROMISEDz [])	eventTypemoduledatar   r   debugr
   r9   r   r   __name__notifyListeners)
r   event	eventNamesrcModuleName	eventDatar?   nsiteevtr8   r   r   r   handleEventd   s*    






zsfp_haveibeenpwned.handleEvent)rA   
__module____qualname____doc__r   optdescsr
   r   dictr   r   r   r9   rJ   r   r   r   r   r      s   -r   )r-   r)   sflibr   r   r   r   r   r   r   r   <module>   s   