快捷搜索:  汽车  科技

自动生成密码:自己动手写软件

自动生成密码:自己动手写软件user="1*********8@163.com"print("=======破解SMTP协议========")python内置的smtplib对SMTP协议进行了简单的包装,就完全可以实现我们验证用户名密码的操作(发送邮件只需要将注释的代码去掉注释即可),具体代码如下:import smtplib​

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

  • 数据库类——MySQL、Oracle和SQL server
  • 邮件类——imap、pop3和SMTP
  • 文件传输类——FTP
  • 运维类——SSH数据库类我们之前的文章就已经讲过了,详细可以查看这两篇文章(python连接MySQL数据库和python使用cx_Oracle库连接oracle服务器)
邮件协议介绍

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

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

  • 发件人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用户名密码需要四个参数:服务器地址服务器端口用户名密码输出用户名密码的验证结果

自动生成密码:自己动手写软件(1)

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协议类似,输入参数有:服务器地址服务器端口用户名密码输出用户名密码的验证结果

自动生成密码:自己动手写软件(2)

IMAP协议

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

自动生成密码:自己动手写软件(3)

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

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协议类似,输入参数有:服务器地址服务器端口用户名密码输出用户名密码的验证结果

自动生成密码:自己动手写软件(4)

总结

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

自动生成密码:自己动手写软件(5)

自动生成密码:自己动手写软件(6)

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

猜您喜欢: