-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgetnames.py
More file actions
executable file
·119 lines (105 loc) · 3.56 KB
/
getnames.py
File metadata and controls
executable file
·119 lines (105 loc) · 3.56 KB
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
#!/usr/bin/env python3
import bs4
import requests
import argparse
import sys
import re
###python3 getname.py -f file.txt -e <fn>.<ln>@email.com
parser = argparse.ArgumentParser(description='Create emails based on a google search result')
parser.add_argument('-c', '--company', help='Name of target organization', required=True)
parser.add_argument('-e', '--emailformat', help='Format you would like the email in. e.g. <fn>.<ln>@gmail.com', required=True)
parser.add_argument('-o', '--outfile', help='File to write output to')
args = parser.parse_args()
if args.outfile:
outfile = open(sys.argv[6], "w")
fname = ""
lname = ""
def returnformat(fname, lname):
format = sys.argv[4]
format = re.split(r"[<>]", format)
if format[2] == ".":
if format[1] == "fn":
if format[3] == "ln":
email = fname + format[2] + lname + format[4]
return email
if format[3] == "li":
email = fname + format[2] + lname[0] + format[4]
return email
if format[1] == "fi":
if format[3] == "ln":
email = fname[0] + format[2] + lname + format[4]
return email
if format[3] == "li":
email = fname[0] + format[2] + lname[0] + format[4]
return email
if format[1] == "ln":
if format[3] == "fn":
email = lname + format[2] + fname + format[4]
return email
if format[3] == "fi":
email = lname + format[2] + fname[0] + format[4]
return email
if format[1] == "li":
if format[3] == "fn":
email = lname[0] + format[2] + fname + format[4]
return email
if format[3] == "fi":
email = lname[0] + format[2] + fname[0] + format[4]
return email
else:
if format[1] == "fn":
if format[3] == "ln":
email = fname + lname + format[4]
return email
if format[3] == "li":
email = fname + lname[0] + format[4]
return email
if format[1] == "fi":
if format[3] == "ln":
email = fname[0] + lname + format[4]
return email
if format[3] == "li":
email = fname[0] + lname[0] + format[4]
return email
if format[1] == "ln":
if format[3] == "fn":
email = lname + fname + format[4]
return email
if format[3] == "fi":
email = lname + fname[0] + format[4]
return email
if format[1] == "li":
if format[3] == "fn":
email = lname[0] + fname + format[4]
return email
if format[3] == "fi":
email = lname[0] + fname[0] + format[4]
return email
# need to get rid of common false positives
def prune(email):
bnames = ['Manager', 'manager', 'Analyst', 'analyst', 'Tax', 'tax', 'Partner', 'partner', 'United', 'united', 'State', 'state', 'Region', 'region', 'Consult', 'consult', 'Officer', 'officer', 'Audit', 'audit', 'Service', 'service']
for bword in bnames:
if(bword in email):
return
if args.outfile:
outfile.write(email)
outfile.write('\n')
else:
print(pruned_email)
def main():
# adding a loop to run throuhg multiple pages of google results
i=0
while(i<500):
url = 'https://google.com/search?q=site:linkedin.com%20"' + sys.argv[2] + '"&num=100&start=' + str(i) + ''
request_result=requests.get( url )
soup = bs4.BeautifulSoup(request_result.text, "html.parser")
output = re.findall(r'[a-zA-Z]{1,7} [a-zA-Z]{1,7} -', soup.prettify())
for line in output:
splitline = line.split(" ")
fname = splitline[0]
lname = splitline[1]
email = returnformat(fname, lname)
prune(email)
i=i+100
if __name__ == "__main__":
main()