U
    @6^                  $   @   s   d dl mZmZmZ ddgddgddgddgdd	gd
dgddgdddgdddgdddgddgdddgdgdgdddgddgddgdd
dgdddd	gddddgddd gdd!ddgdddgddgddgdgdgdgdgdgdgd gdgd gg d"#Zd#gd$d$d%d&gd'd(d$d)gd*ZG d+d, d,eZd-S ).    )
SpiderFootSpiderFootPluginSpiderFootEvent4svnxfwrdghjou1kilmp0qtea57yzcbvv)#r   r#   r"   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r    r!   r   r   23r   r   6r   8900Zl1l11111llZlllZ1l1)Zoor-   r,   c                   @   sB   e Zd ZdZi Zi ZdZe fddZdd Z	dd Z
d	d
 ZdS )sfp_similarzSimilar Domains:Footprint,Investigate:DNS::Search various sources to identify similar looking domain names, for instance squatted domains.Nc                 C   s:   || _ |  | _d| _t| D ]}|| | j|< q"d S )NDNS)sftempStorageresults__dataSource__listkeysopts)selfsfcuserOptsopt r;   6/var/www/spiderfoot.crq.systems/modules/sfp_similar.pysetupK   s
    
zsfp_similar.setupc                 C   s   dgS )NDOMAIN_NAMEr;   r7   r;   r;   r<   watchedEventsT   s    zsfp_similar.watchedEventsc                 C   s   dgS )NSIMILARDOMAINr;   r?   r;   r;   r<   producedEventsZ   s    zsfp_similar.producedEventsc                 C   s6  |j }|j}|j}t }| j|| jd }d||d d  }| jd| d |  || j	krhd S d| j	|< d}|D ]h}	|	t
krqztt
|	 dkrqz|d }
t
|	 D ].}|d| | ||
t|  }|| q|d7 }qztD ].}||krt| D ]}||||  qqt
D ]"}	|||	  ||	|  qd}|D ]<}	||d| |	 |	 ||d t|   |d7 }qH|D ]}d	}zl| j|| rd}| jd
| | rd}|r| jd| |  td|| | j|}| | W n. tk
r, } zW Y qW 5 d }~X Y nX qd S )N_internettlds.zKeyword extracted from z: Tr      Fzwww.z	Resolved rA   )	eventTypemoduledatar4   r0   domainKeywordr6   splitdebugr2   	nearcharslenappendpairsreplaceresolveHostr   __name__notifyListenersBaseException)r7   event	eventNamesrcModuleName	eventDataZdomlistdomtldposr"   nposZxcZnewdomr   r   r   resolvedevtr   r;   r;   r<   handleEvent^   s\    

 
. zsfp_similar.handleEvent)rS   
__module____qualname____doc__r6   optdescsr2   dictr=   r@   rB   r`   r;   r;   r;   r<   r.   =   s   	r.   N)sflibr   r   r   rM   rP   r.   r;   r;   r;   r<   <module>   sR   


'

