-
Notifications
You must be signed in to change notification settings - Fork 10
/
pyhunter.py
125 lines (106 loc) · 3.47 KB
/
pyhunter.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
This script will return emails gathered from hunter.io given a target domain
"""
import json
import requests
import sys
import xlsxwriter
def export_results (emails):
"""
Exports the results into a XLSX file
"""
# Start from the first cell. Rows and columns are zero indexed.
row = 0
col = 0
i = 0
try:
print "Exporting the results in an excel"
# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('hunter.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write(row, col, "email")
row += 1
# Iterate over the data and write it out row by row.
for email in emails:
col = 0
worksheet.write(row, col, email)
row += 1
i += 1
#Close the excel
workbook.close()
except Exception as e:
print "Error in export_results" + str(e)
def manage_response (data):
"""
Treats the response obtained from the API
"""
emails = []
try:
for email in data['data']['emails']:
print "\n[*]Email: " + str(email['value'])
emails.append(str(email['value']))
except:
print "Not found information of the domain"
emails = "-"
finally:
return emails
def send_request (url):
"""
Sends custom request to the API
"""
response = None
try:
response = requests.get(url,timeout=5,allow_redirects =True)
except Exception as e:
print e
finally:
return response.json()
def banner():
"""
Prints cool custom banner
"""
print"\n"
print """
/$$ /$$
| $$ | $$
/$$$$$$ /$$ /$$| $$$$$$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$
/$$__ $$| $$ | $$| $$__ $$| $$ | $$| $$__ $$|_ $$_/ /$$__ $$ /$$__ $$
| $$ \\ $$| $$ | $$| $$ \\ $$| $$ | $$| $$ \\ $$ | $$ | $$$$$$$$| $$ \\__/
| $$ | $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$ | $$ /$$| $$_____/| $$
| $$$$$$$/| $$$$$$$| $$ | $$| $$$$$$/| $$ | $$ | $$$$/| $$$$$$$| $$
| $$____/ \\____ $$|__/ |__/ \\______/ |__/ |__/ \\___/ \\_______/|__/
| $$ /$$ | $$
| $$ | $$$$$$/
|__/ \\______/
"""
print """
** Tool to search possible emails indexed throught API's Hunter.io (https://hunter.io)
** Author: Ignacio Brihuega Rodriguez a.k.a N4xh4ck5
** DISCLAMER This tool was developed for educational goals.
** The author is not responsible for using to others goals.
** A high power, carries a high responsibility!
** Version 1.0"""
def main(argv):
"""
Main function of this tool
"""
banner()
target = str(sys.argv[1])
API=""
limit = 100 # By default limit = 10
r = None
emails = []
try:
url = "https://api.hunter.io/v2/domain-search?domain="+target+"&api_key="+API+"&limit="+str(limit)
#Sent request
r = send_request(url)
# Manage the response
emails = manage_response(r)
#Export results
export_results(emails)
except Exception as e:
print "Error in main function" + str(e)
if __name__ == "__main__":
main(sys.argv[1:])