专栏首页菜鸟小白的学习分享太实用了!自己动手写软件——邮件用户名密码验证

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

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

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

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

IMAP协议

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

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

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

总结

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

协议

输入参数

输出参数

SMTP

服务器地址服务器端口用户名密码

验证结果

POP3

服务器地址服务器端口用户名密码

验证结果

IMAP

服务器地址服务器端口用户名密码

验证结果

本文分享自微信公众号 - 菜鸟小白的学习分享(cainiao-xiaobai),作者:菜鸟小白的学习分享

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 太实用了!自己动手写软件——SSH、FTP和SQL server的密码破解

    我们的密码破解工具一共分为如下六个部分,前面四个部分我们都有在之前的文章中介绍过了,点击蓝色字体即可跳转查看。

    菜鸟小白的学习分享
  • 通过hmail搭建一个内网测试的邮件服务器

    我们测试的软件基本上都是支持邮件功能,如果你的测试环境是在外网的话那还好说,可以直接使用QQ邮箱、163邮箱等。但是如果是测试环境在内网,无法直接访问到外网的时...

    菜鸟小白的学习分享
  • python使用cx_Oracle库连接oracle服务器

       使用python连接oracle数据库服务器需要三个软件的位数一致额版本配套(python版本、oracle数据库服务器版本和oracle客户端连接工具版...

    菜鸟小白的学习分享
  • 量子通讯扫盲

    2016年8月16日凌晨1:41,备受瞩目的中国首颗量子科学实验卫星“墨子”在酒泉成功发射升空。中国发射全球首颗量子卫星,这不仅仅是中国迈出构建量子通信网络的第...

    大数据和云计算技术
  • 【DB笔试面试836】在Oracle中,FGA审计和标准审计有什么区别?

    小麦苗DBA宝典
  • ElasticsearchRepository简单用法

    DencyCheng
  • IBM量子计算新突破:成功构建50个量子比特原型机

    维金 编译整理 量子位 出品 | 公众号 QbitAI ? IBM去年开始以云计算服务的形式提供量子计算能力。当时,IBM发布了包含5个量子比特的计算机。在短短...

    量子位
  • 好嗨哟~谷歌量子神经网络新进展揭秘

    谷歌人工智能量子团队自成立以来,一直致力于理解量子计算在机器学习中的作用。现有算法对全局优化的作用表明,量子计算机可能有助于更快地训练机器学习中的现有模型,因此...

    机器之心
  • 【前沿】IBM 宣布成功研制50量子位原型机,量子计算机商业化正在加速

    【导读】2016年,IBM 推出了 5 量子位的计算机,而就在昨天,IBM 取得了重大进展,这家公司通过其官方博客宣布了 20 量子位的量子计算机问世,并构建了...

    WZEARW
  • 号称3个月发布最强量子计算机,卖口罩的霍尼韦尔凭什么?

    新冠疫情的发生,霍尼韦尔这家口罩品牌引入众人眼帘。但实际上,口罩业务只是这家企业的一小块副业,它能做的业务十分多元。

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券