Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Lucksi
GitHub Repository: Lucksi/Mr.Holmes
Path: blob/master/Core/Support/Mail/Lookup.py
1071 views
1
# ORIGINAL CREATOR: Luca Garofalo (Lucksi)
2
# AUTHOR: Luca Garofalo (Lucksi)
3
# Copyright (C) 2023-2024 Lucksi <[email protected]>
4
# License: GNU General Public License v3.0
5
6
import json
7
import requests
8
from Core.Support import Font
9
from Core.Support import Language
10
from Core.Support import Headers
11
from time import sleep
12
import hashlib
13
14
15
filename = Language.Translation.Get_Language()
16
filename
17
18
headers = Headers.Get.classic()
19
20
class List:
21
22
@staticmethod
23
def Spotify(report,email,name):
24
print(Font.Color.GREEN + "\n[+]"+ Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "Check2", "None").format(email,name))
25
url = "https://spclient.wg.spotify.com/signup/public/v1/account?validate=1&email={}".format(email)
26
req = requests.get(url=url,headers=headers)
27
sleep(3)
28
if 'errors' in req.text:
29
response = Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name)
30
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name))
31
else:
32
response = Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name)
33
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name))
34
f = open(report,"a")
35
f.write("\n"+ response)
36
f.close()
37
38
@staticmethod
39
def Twitter(report,email,name):
40
print(Font.Color.GREEN + "\n[+]"+ Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "Check2", "None").format(email,name))
41
url = "https://api.twitter.com/i/users/email_available.json?email={}".format(email)
42
sleep(3)
43
try:
44
req = requests.get(url,headers=headers).text
45
parser = json.loads(req)
46
output = parser["taken"]
47
if output == False:
48
response = Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name)
49
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name))
50
elif output == True:
51
response = Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name)
52
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name))
53
f = open(report,"a")
54
f.write("\n"+ response)
55
f.close()
56
except Exception as e:
57
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Error", "None") + str(e))
58
59
@staticmethod
60
def Gmail(report,email,name):
61
url = "https://mail.google.com/mail/gxlu?email={}".format(email)
62
req = requests.get(url,headers)
63
sleep(3)
64
if 'Set-Cookie' in req.headers:
65
response = Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name)
66
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name))
67
else:
68
response = Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name)
69
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name))
70
f = open(report,"a")
71
f.write("\n"+ response)
72
f.close()
73
74
@staticmethod
75
def Github(report,email,name):
76
Image = []
77
username = []
78
Link = []
79
print(Font.Color.GREEN + "\n[+]"+ Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "Check2", "None").format(email,name))
80
url = "https://api.github.com/search/users?q={}+in:email%22".format(email)
81
sleep(3)
82
try:
83
req = requests.get(url,headers=headers).text
84
parser = json.loads(req)
85
output = parser["total_count"]
86
if output == 0:
87
response = Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name)
88
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name))
89
f = open(report,"a")
90
f.write("\n"+ response)
91
f.close()
92
elif output == 1:
93
response = Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name)
94
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name) + "\n")
95
f = open(report,"a")
96
f.write("\n"+ response)
97
f.close()
98
elif output >1:
99
response = Language.Translation.Translate_Language(filename, "Email", "MultipleRes", "None").format(name,(str(output)))
100
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "MultipleRes", "None").format(name,str(output)) + "\n")
101
f = open(report,"a")
102
f.write("\n"+ response)
103
f.close()
104
if output == 0:
105
pass
106
else:
107
if output <= 20:
108
output = output
109
else:
110
output = 20
111
for i in range(output):
112
usern = parser["items"][i]["login"]
113
link = parser["items"][i]["html_url"]
114
profile_pic = parser["items"][i]["avatar_url"]
115
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "USER FOUND: {}".format(Font.Color.WHITE + usern + Font.Color.WHITE))
116
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "PROFILE-PIC: {}".format(Font.Color.WHITE + profile_pic + Font.Color.WHITE))
117
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "LINK: {}\n".format(Font.Color.WHITE + link + Font.Color.WHITE))
118
f = open(report,"a")
119
f.write("\nUSER FOUND: {}".format(usern))
120
f.write("\nPROFILE-PIC: {}".format(profile_pic))
121
f.write("\nLINK: {}\n".format(link))
122
Image.append(profile_pic)
123
username.append(usern)
124
Link.append(link)
125
f.close()
126
if len(username):
127
json_file = "GUI/Reports/E-Mail/{}/Github.json".format(email)
128
f = open(json_file, "w")
129
f.write('''{
130
"List":[
131
]
132
}''')
133
f.close()
134
135
i = 0
136
for image in Image:
137
data2 = {
138
"username": "{}".format(username[i]),
139
"site": "{}".format(Link[i]),
140
"image": "{}".format(image)
141
}
142
with open(json_file, 'r+') as file:
143
file_data = json.load(file)
144
file_data["List"].append(data2)
145
file.seek(0)
146
json.dump(file_data, file, indent=4)
147
i = i +1
148
else:
149
pass
150
except Exception as e:
151
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Error", "None") + str(e))
152
153
@staticmethod
154
def Gravatar(report,email,name):
155
Image = []
156
username = []
157
Link = []
158
Names = []
159
hashedemail= hashlib.md5(email.encode()).hexdigest()
160
print(Font.Color.GREEN + "\n[+]"+ Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "Check2", "None").format(email,name))
161
url = "https://en.gravatar.com/{}.json".format(hashedemail)
162
try:
163
req = requests.get(url,headers=headers)
164
if "User not found" in req.text:
165
response = Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name)
166
f = open(report,"a")
167
f.write("\n"+ response)
168
f.close()
169
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name))
170
else:
171
response = Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name)
172
f = open(report,"a")
173
f.write("\n"+ response)
174
f.close()
175
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name))
176
reader = req.text
177
converted = json.loads(reader)
178
hashid = converted["entry"][0]["hash"]
179
user = converted["entry"][0]["preferredUsername"]
180
link = converted["entry"][0]["profileUrl"]
181
displayname = converted["entry"][0]["displayName"]
182
profile_pic = converted["entry"][0]["thumbnailUrl"]
183
if "aboutMe" in reader:
184
bio = converted["entry"][0]["aboutMe"]
185
else:
186
bio = ""
187
if "formatted" in reader:
188
name = converted["entry"][0]["name"]["formatted"]
189
else:
190
name = "None"
191
if "urls" in reader:
192
urls = converted["entry"][0]["urls"]
193
else:
194
urls = "None"
195
if "last_profile_edit" in reader:
196
modification = converted["entry"][0]["last_profile_edit"]
197
else:
198
modification = "None"
199
f = open(report, "a", encoding="utf-8")
200
f.write("\nGRAVATAR DATA:\n")
201
202
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "HASH: {}".format(hashid))
203
f.write("HASH: {}\r\n".format(hashid))
204
205
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "USERNAME: {}".format(user))
206
f.write("USERNAME: {}\r\n".format(user))
207
208
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "DISPLAY-NAME: {}".format(displayname))
209
f.write("DISPLAY-NAME: {}\r\n".format(displayname))
210
211
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "NAME: {}".format(name))
212
f.write("NAME: {}\r\n".format(name))
213
214
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "BIO: {}".format(bio))
215
f.write("BIO: {}\r\n".format(bio))
216
217
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "UPADTED ON: {}".format(modification))
218
f.write("UPDATED-ON: {}\r\n".format(modification))
219
i = 1
220
if urls != "None":
221
for url in urls:
222
print(Font.Color.YELLOW + "[V]" + Font.Color.WHITE + "LINK N°{}: {}".format(i,url["value"]))
223
f.write("LINK N°{}: {}\r\n".format(i,url["value"]))
224
i = i +1
225
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "PROFILE-PIC: {}".format(profile_pic))
226
f.write("PROFILE-PIC: {}\r\n".format(profile_pic))
227
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + "PROFILE-LINK: {}".format(link))
228
f.write("PROFILE-LINK: {}\r\n".format(link))
229
f.close()
230
Image.append(profile_pic)
231
username.append(user)
232
Link.append(link)
233
Names.append(name)
234
f.close()
235
if len(username):
236
json_file = "GUI/Reports/E-Mail/{}/Gravatar.json".format(email)
237
f = open(json_file, "w")
238
f.write('''{
239
"List":[
240
]
241
}''')
242
f.close()
243
244
i = 0
245
for image in Image:
246
data2 = {
247
"username": "{}".format(username[i]),
248
"name": "{}".format(Names[i]),
249
"site": "{}".format(Link[i]),
250
"image": "{}".format(image)
251
}
252
with open(json_file, 'r+') as file:
253
file_data = json.load(file)
254
file_data["List"].append(data2)
255
file.seek(0)
256
json.dump(file_data, file, indent=4)
257
i = i +1
258
else:
259
pass
260
except Exception as e:
261
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Error", "None") + str(e))
262
263
@staticmethod
264
def Imgur(report,email,name):
265
print(Font.Color.GREEN + "\n[+]"+ Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "Check2", "None").format(email,name))
266
data ={
267
"email": email
268
}
269
url = "https://imgur.com/signin/ajax_email_available"
270
sleep(3)
271
try:
272
req = requests.post(url,headers=headers,data = data).text
273
parser = json.loads(req)
274
output = parser["data"]["available"]
275
if output == True:
276
response = Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name)
277
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "FalseRes", "None").format(name))
278
elif output == False:
279
response = Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name)
280
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "TrueRes", "None").format(name))
281
f = open(report,"a")
282
f.write("\n"+ response)
283
f.close()
284
except Exception as e:
285
print(Font.Color.RED + "[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Error", "None") + str(e))
286
287
@staticmethod
288
def Main(report,email):
289
print(Font.Color.BLUE + "\n[I]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Email", "Lookup", "None"))
290
List.Gmail(report,email,"GMAIL/G-SUITE")
291
List.Twitter(report,email,"TWITTER")
292
List.Spotify(report,email,"SPOTIFY")
293
List.Github(report,email,"GITHUB")
294
List.Gravatar(report,email,"GRAVATAR")
295
List.Imgur(report,email,"IMGUR")
296
297