Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Lucksi
GitHub Repository: Lucksi/Mr.Holmes
Path: blob/master/Core/Searcher_phone.py
1071 views
1
# ORIGINAL CREATOR: Luca Garofalo (Lucksi)
2
# AUTHOR: Luca Garofalo (Lucksi)
3
# Copyright (C) 2021-2023 Lucksi <[email protected]>
4
# License: GNU General Public License v3.0
5
6
import os
7
import urllib
8
import json
9
import shutil
10
from datetime import datetime
11
from Core.Support.Phone import Numbers
12
from Core.Support import Font
13
from Core.Support import Creds
14
from Core.Support import FileTransfer
15
from Core.Support import Proxies
16
from Core.Support import Requests_Search
17
from Core.Support import Clear
18
from Core.Support import Dorks
19
from Core.Support import Logs
20
from Core.Support import Banner_Selector as banner
21
from Core.Support import Language
22
from Core.Support import DateFormat
23
from Core.Support import Notification
24
from Core.Support import Encoding
25
from time import sleep
26
27
filename = Language.Translation.Get_Language()
28
filename
29
30
Type = "Phone"
31
32
33
class Phone_search:
34
35
@staticmethod
36
def Banner(Mode):
37
Clear.Screen.Clear()
38
Folder = "Banners/Phone"
39
banner.Random.Get_Banner(Folder, Mode)
40
41
@staticmethod
42
def Google_dork(username,rep):
43
report = "GUI/Reports/Phone/Dorks/{}_dorks.txt".format(rep)
44
nomefile = "Site_lists/Phone/Google_dorks.txt"
45
fingerprints = "Site_lists/Phone/Fingerprints.txt"
46
if rep == username:
47
if os.path.isfile(report):
48
os.remove(report)
49
print(Font.Color.BLUE + "\n[I]" + Font.Color.WHITE +
50
Language.Translation.Translate_Language(filename, "Dorks", "Remove", "None").format(rep))
51
else:
52
pass
53
Type = "GOOGLE"
54
Dorks.Search.dork(username, report, nomefile, Type)
55
f = open(report, "a")
56
f.write(Language.Translation.Translate_Language(
57
filename, "Report", "Phone", "FingerPrints"))
58
f.close()
59
print(Font.Color.GREEN + "\n[+]" + Font.Color.WHITE +
60
Language.Translation.Translate_Language(filename, "Phone", "FingerPrints", "None"))
61
sleep(3)
62
f = open(fingerprints, "r")
63
for sites in f:
64
site = sites.rstrip("\n")
65
site = site.replace("{}", username)
66
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + site)
67
f = open(report, "a")
68
f.write(site + "\n")
69
sleep(2)
70
f.close()
71
f.close()
72
73
@staticmethod
74
def Yandex_dork(username,rep):
75
report = "GUI/Reports/Phone/Dorks/{}_dorks.txt".format(rep)
76
nomefile = "Site_lists/Phone/Yandex_dorks.txt"
77
fingerprints = "Site_lists/Phone/Yandex_Fingerprints.txt"
78
Type = "YANDEX"
79
Dorks.Search.dork(username, report, nomefile, Type)
80
f = open(report, "a")
81
f.write(Language.Translation.Translate_Language(
82
filename, "Report", "Phone", "FingerPrints"))
83
f.close()
84
print(Font.Color.GREEN + "\n[+]" + Font.Color.WHITE +
85
Language.Translation.Translate_Language(filename, "Phone", "FingerPrints", "None"))
86
sleep(3)
87
f = open(fingerprints, "r")
88
for sites in f:
89
site = sites.rstrip("\n")
90
site = site.replace("{}", username)
91
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + site)
92
f = open(report, "a")
93
f.write(site + "\n")
94
sleep(2)
95
f.close()
96
f.close()
97
98
@staticmethod
99
def lookup(username, report, international):
100
f = open(report, "a")
101
f.write("\nPHONE NUMBER FOUND ON:\n")
102
f.close()
103
f = open("Temp/Phone/Code.txt", "r", newline=None)
104
nation = f.read().rstrip("\n")
105
f.close()
106
if nation == "US":
107
data = "Site_lists/Phone/Lookup/USA_phone.json"
108
country = "UNITED-STATES"
109
token = True
110
elif nation == "IT":
111
data = "Site_lists/Phone/Lookup/ITA_phone.json"
112
country = "ITALY"
113
token = True
114
elif nation == "DE":
115
data = "Site_lists/Phone/Lookup/DEU_phone.json"
116
country = "GERMANY"
117
token = True
118
elif nation == "FR":
119
data = "Site_lists/Phone/Lookup/FRA_phone.json"
120
country = "FRANCE"
121
token = True
122
elif nation == "RO":
123
data = "Site_lists/Phone/Lookup/ROU_phone.json"
124
country = "ROMANIA"
125
token = True
126
elif nation == "CH":
127
data = "Site_lists/Phone/Lookup/SWIS_phone.json"
128
country = "SWITZERLAND"
129
token = True
130
else:
131
token = True
132
data = "Site_lists/Phone/Lookup/Undefined.json"
133
country = "UNDEFINED"
134
number = str(username)
135
os.remove("Temp/Phone/Code.txt")
136
subject = "PHONE-NUMBER"
137
print(Font.Color.YELLOW + "\n[+]" + Font.Color.WHITE +
138
Language.Translation.Translate_Language(filename, "Phone", "Country", "None").format(country))
139
if token:
140
print(Font.Color.GREEN + "\n[+]" + Font.Color.WHITE +
141
Language.Translation.Translate_Language(filename, "Phone", "Search", "None").format(number))
142
143
sc = int(input(
144
Font.Color.BLUE + "\n[?]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "choice", "None") + Font.Color.GREEN + "[#MR.HOLMES#]" + Font.Color.WHITE + "-->"))
145
if sc == 1:
146
http_proxy = Proxies.proxy.final_proxis
147
http_proxy2 = Proxies.proxy.choice3
148
source = "http://ip-api.com/json/" + http_proxy2
149
access = urllib.request.urlopen(source)
150
content = access.read()
151
final = json.loads(content)
152
identity = Language.Translation.Translate_Language(filename, "Default", "ProxyLoc", "None").format(
153
final["regionName"], final["country"])
154
else:
155
http_proxy = None
156
http_proxy2 = str(http_proxy)
157
identity = "None"
158
print(Font.Color.GREEN + "\n[+]" + Font.Color.WHITE +
159
Language.Translation.Translate_Language(filename, "Default", "Proxy", "None").format(http_proxy2))
160
if identity != "None":
161
print(Font.Color.GREEN + "[+]" + Font.Color.WHITE + identity)
162
else:
163
pass
164
folder = "Phone"
165
Logs.Log.Checker(username, folder)
166
successfull = []
167
successfullName = []
168
ScraperSites = []
169
Tags = []
170
Writable = True
171
json_file = "GUI/Reports/Phone/{}/{}.json".format(
172
username, username)
173
json_file2 = "GUI/Reports/Phone/{}/{}.json".format(
174
username, "Name")
175
f = open(data,)
176
data = json.loads(f.read())
177
for sites in data:
178
for data1 in sites:
179
name = sites[data1]["name"]
180
if name == "CarteTelefonae":
181
username = username.replace("40", "")
182
site1 = sites[data1]["url"].replace("{}", username)
183
site2 = sites[data1]["url2"].replace("{}", username)
184
main = sites[data1]["main"]
185
error = sites[data1]["Error"]
186
Tag = sites[data1]["Tag"]
187
is_scrapable = sites[data1]["Scrapable"]
188
print(
189
Font.Color.GREEN + "\n[+]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Attempt", "None").format(name))
190
try:
191
Requests_Search.Search.search(error, report, site1, site2, http_proxy, sites, data1, username,
192
subject, successfull, name, successfullName, is_scrapable, ScraperSites, Writable, main, json_file, json_file2, Tag, Tags, MostTags=[])
193
except ConnectionError:
194
print(
195
Font.Color.BLUE + "\n[N]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Connection_Error1", "None"))
196
http_proxy = None
197
try:
198
Requests_Search.Search.search(error, report, site1, site2, http_proxy, sites, data1, username,
199
subject, successfull, name, successfullName, is_scrapable, ScraperSites, Writable, main, json_file, json_file2,Tag, Tags, MostTags=[])
200
except Exception as e:
201
print(
202
Font.Color.BLUE + "\n[N]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Site_Error", "None") + str(e))
203
except Exception as e:
204
print(
205
Font.Color.BLUE + "\n[N]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Site_Error", "None") + str(e))
206
print(Font.Color.GREEN + "\n[+]" + Font.Color.WHITE +
207
Language.Translation.Translate_Language(filename, "Default", "TotFound", "None").format(subject, username))
208
209
if len(successfull):
210
for names in successfull:
211
print(Font.Color.YELLOW + "[v]" + Font.Color.WHITE + names)
212
else:
213
print(Font.Color.RED + "\n[!]" + Font.Color.WHITE + Language.Translation.Translate_Language(
214
filename, "Phone", "NotFound", "None"))
215
216
else:
217
print(Font.Color.BLUE + "\n[N]" + Font.Color.WHITE +
218
"OPS LOOKS LIKE THERE IS NO LOOKUP FILE FOR NOW..SKIPPING")
219
220
sleep(3)
221
dork = int(input(Font.Color.BLUE + "\n[?]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Dorks", "None") +
222
Font.Color.GREEN + "[#MR.HOLMES#]" + Font.Color.WHITE + "-->"))
223
if dork == 1:
224
print(Font.Color.GREEN + "[+]" + Font.Color.WHITE + "NORMAL FORMAT:")
225
Phone_search.Google_dork(username,username)
226
Phone_search.Yandex_dork(username,username)
227
print(Font.Color.GREEN + "[+]" + Font.Color.WHITE + "NATIONAL FORMAT:")
228
Phone_search.Google_dork(international[1].replace("-","",1),username)
229
Phone_search.Yandex_dork(international[1].replace("-","",1),username)
230
Phone_search.Google_dork(international[2],username)
231
Phone_search.Yandex_dork(international[2],username)
232
Phone_search.Google_dork(international[3],username)
233
Phone_search.Yandex_dork(international[3],username)
234
print(Font.Color.GREEN + "[+]" + Font.Color.WHITE + "INTERNATIONAL FORMAT:")
235
Phone_search.Google_dork(international[0].replace("+",""),username)
236
Phone_search.Yandex_dork(international[0].replace("+",""),username)
237
else:
238
pass
239
240
@staticmethod
241
def searcher(username, Mode):
242
Phone_search.Banner(Mode)
243
print(Font.Color.BLUE + "\n[I]" + Font.Color.WHITE + "INFO:" + "[{}]".format(Font.Color.GREEN + Language.Translation.Translate_Language(filename,"Phone","Explanation","None") + Font.Color.WHITE) )
244
now = datetime.now()
245
dataformat = DateFormat.Get.Format()
246
dt_string = now.strftime(dataformat)
247
Date = "Date: " + str(dt_string)
248
folder = "GUI/Reports/Phone/" + username + "/"
249
if os.path.isdir(folder):
250
shutil.rmtree(folder)
251
print(Font.Color.BLUE + "\n[I]" + Font.Color.WHITE +
252
Language.Translation.Translate_Language(filename, "Default", "Delete", "None").format(username))
253
os.mkdir(folder)
254
report = folder + username + ".txt"
255
f = open(report, "w")
256
f.write(Language.Translation.Translate_Language(
257
filename, "Report", "Default", "Date").format(Date) + "\n")
258
f.close()
259
num = username
260
code = 1
261
international = Numbers.Phony.Number(num, report, code, Mode, Type, username)
262
Phone_search.lookup(username, report, international)
263
print(Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Report", "None") +
264
report)
265
f = open(report, "a")
266
f.write(Language.Translation.Translate_Language(
267
filename, "Report", "Default", "By"))
268
f.close()
269
Notification.Notifier.Start(Mode)
270
Creds.Sender.mail(report, username)
271
choice = int(input(
272
Font.Color.BLUE + "\n[?]" + Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Transfer", "Question", "None") + Font.Color.GREEN + "[#MR.HOLMES#]" + Font.Color.WHITE + "-->"))
273
if choice == 1:
274
FileTransfer.Transfer.File(report,username,".txt")
275
Encoding.Encoder.Encode(report)
276
print(Font.Color.WHITE + Language.Translation.Translate_Language(filename, "Default", "Report", "None") +
277
report)
278
inp = input(Language.Translation.Translate_Language(
279
filename, "Default", "Continue", "None"))
280
281