太实用了!自己动手写软件——邮件用户名密码验证

28 篇文章 2 订阅
4 篇文章 0 订阅

我们计划实现的弱口令破解软件一共支持如下四类协议的解析:

邮件协议介绍

今天我们就来看看第二类——邮件协议的解析。

作为知识储备,我们首先可以了解一下一封邮件的从发件人到收件人的简单分析过程。

  • 发件人A写好一封邮件,通过SMTP协议发送到SMTP服务器上

  • 收件人B定时从邮件服务器上通过POP3协议或者IMAP协议下载发件人A发出来的邮件

    简单来说SMTP负责发邮件,POP3或者IMAP负责收邮件。那POP3和IMAP都是收邮件的话,二者有什么区别呢?

    最简单的解释,POP3只是单向地从邮件服务器下载邮件,不会将下载后的邮件状态再同步给邮件服务器;IMAP和邮件服务器之间是双向的通信过程,除了收邮件以外,还会将客户端上对邮件的操作(如:移动邮件到另外一个文件夹)同步到邮件服务器上。

SMTP协议

python内置的smtplib对SMTP协议进行了简单的包装,就完全可以实现我们验证用户名密码的操作(发送邮件只需要将注释的代码去掉注释即可),具体代码如下:

import smtplib
​
print("=======破解SMTP协议========")
user="1*********8@163.com"
password="1***X"
​
try:
    smtpObj = smtplib.SMTP(timeout=30)
    smtpObj.set_debuglevel(0)
    smtpObj.connect('smtp.163.com', 25)  # 25 为 SMTP 端口号
    smtpObj.login(user, password)
    print(f"用户名:%s,密码:%s登录成功\n"%(user, password))
except smtplib.SMTPException:
    print(f"用户名:%s,密码:%s无法登录成功\n" % (user, password))

我们用于验证邮箱密码的代码比较简单,从代码中看出我们要验证SMTP用户名密码需要四个参数:服务器地址服务器端口用户名密码输出用户名密码的验证结果

image

POP3协议

POP3协议我们使用的是poplib库,具体代码如下:

import poplib
​
print("=======破解POP3协议========")
user="1*********8@163.com"
password="1***X"
​
try:
    pop3_server = poplib.POP3("pop3.163.com",110)
    pop3_server.user(user)
    pop3_server.pass_(password)
    print("用户名:%s,密码:%s登录成功\n" % (user, password))
except:
    print("用户名:%s,密码:%s无法登录成功\n" % (user, password))

和SMTP协议类似,输入参数有:服务器地址服务器端口用户名密码输出用户名密码的验证结果

image

IMAP协议

连接IMAP协议需要我们使用pip命令安装一个imapclient第三方模块。

image

安装之后我们验证用户名密码的代码也十分简单

import imapclient
​
print("=======破解IMAP协议========")
user="1*********8@163.com"
password="1***X"
​
try:
    imap = imapclient("imap.163.com",port=143, ssl=True)
    imap.login(user, password)
    print("用户名:%s,密码:%s登录成功\n" % (user, password))
except:
    print("用户名:%s,密码:%s登录成功\n" % (user, password))

和SMTP协议类似,输入参数有:服务器地址服务器端口用户名密码输出用户名密码的验证结果

image

总结

我们发现,其实我们要实现的用户名密码验证功能实现是非常简单的。现在我们看看我们破解邮件协议都需要哪些输入和输出参数,便于我们后续GUI的界面设计。

协议输入参数输出参数
SMTP服务器地址、服务器端口、用户名、密码验证结果
POP3服务器地址、服务器端口、用户名、密码验证结果
IMAP服务器地址、服务器端口、用户名、密码验证结果

image

好了,今天的内容就先聊到这里吧,有什么疑问可以在公众号添加菜鸟小白的微信,我们相互讨论。

往期推荐

太实用了!自己动手写软件——GUI编程

python也能玩视频剪辑!moviepy操作记录总结

太好用!图片转文字没有python环境也能运行了!!!

通过server酱实现定时推送天气情况,再不用担心你的糊涂蛋女友忘带伞了~~

六十来行python代码完成一个文件分类器

媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。

image

一个人的学习——孤单

一群人的学习——幸福

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,您可以使用以下代码实现一个简单的用户登录界面: ```python import tkinter as tk from tkinter import messagebox def login(): username = username_entry.get() password = password_entry.get() if username == "lxt" and password == "123": # 如果用户名密码正确,显示主界面 login_window.withdraw() # 隐藏登录窗口 main_window.deiconify() # 显示主窗口 else: # 如果用户名密码错误,弹出消息框提示错误信息 messagebox.showerror("登录失败", "用户名密码错误!") # 创建登录窗口 login_window = tk.Tk() login_window.title("用户登录") # 创建用户名标签、输入框和密码标签、输入框 username_label = tk.Label(login_window, text="用户名:") username_label.grid(row=0, column=0, padx=5, pady=5) username_entry = tk.Entry(login_window) username_entry.grid(row=0, column=1, padx=5, pady=5) password_label = tk.Label(login_window, text="密码:") password_label.grid(row=1, column=0, padx=5, pady=5) password_entry = tk.Entry(login_window, show="*") password_entry.grid(row=1, column=1, padx=5, pady=5) # 创建登录按钮 login_button = tk.Button(login_window, text="登录", command=login) login_button.grid(row=2, column=0, columnspan=2, padx=5, pady=5) # 创建主窗口 main_window = tk.Toplevel(login_window) main_window.title("主界面") main_window.withdraw() # 隐藏主窗口 # 创建主窗口的内容 label = tk.Label(main_window, text="欢迎使用本系统!") label.pack(padx=50, pady=50) # 启动主循环 login_window.mainloop() ``` 这段代码中,我们创建了一个登录窗口和一个主窗口,当用户点击登录按钮时,会读取用户名密码,如果用户名密码正确,则隐藏登录窗口,显示主窗口;否则,弹出一个消息框提示错误信息。您可以根据需要修改代码中的变量名、提示信息和主窗口的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟小白的学习分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值