forked from netsecurity-as/subfuz
-
Notifications
You must be signed in to change notification settings - Fork 0
/
plugin.py
35 lines (31 loc) · 1.09 KB
/
plugin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import json, requests
from core.env import SIGINT_handler
import signal
from core.logger import Output
NAME = 'virustotal'
ARG_HELP = 'VirusTotal subdomain certificates'
handler = SIGINT_handler()
signal.signal(signal.SIGINT, handler.signal_handler)
class VTError(Exception):
"""Base class for Virus Total exceptions"""
pass
def execute(domain, config, **kwargs):
if handler.SIGINT:
Output().warn("Aborted plugin: %s" % NAME, False)
return None
try:
query = "https://www.virustotal.com/vtapi/v2/domain/report?apikey=%s&domain=%s" % (config['api-key'], domain.rstrip())
r = requests.get(query)
if r.status_code == 200:
data = json.loads(r.content)
if 'subdomains' in data:
# data should always be returned as a array
return data['subdomains']
else:
return None
elif r.status_code == 403:
raise VTError('Virustotal plugin: API Unauthorized')
else:
raise VTError('Virustotal plugin: Unexpected Error')
except:
raise