太实用了!自己动手写软件——SSH、FTP和SQL server的密码破解

2020-07-20 17:52:30 浏览数 (1)

我们的密码破解工具一共分为如下六个部分,前面四个部分我们都有在之前的文章中介绍过了,点击蓝色字体即可跳转查看。

  • 用户图形界面——GUI编程
  • 密码字典获取——Excel文件读取
  • 数据库类——MySQL、Oracle和SQL server
  • 邮件类——IMAP、POP3和SMTP
  • 文件传输类——FTP
  • 运维类——SSH

今天我们再将剩下来的ssh、ftp和SQL server协议的登录过程模拟看看。

SSH登录验证

SSH的登录需要我们安装一个paramiko第三方模块,安装命令:

代码语言:javascript复制
pip install paramiko

我们的登录验证代码是这样的

代码语言:javascript复制
import paramiko

server_ip = '192.168.106.1'
port = 22
user = 'admin'
password = 'admin'
print("=======破解SSH协议========")
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:
    ssh.connect(hostname=server_ip, port=port, username=user, password=password)
    print("用户名:%s,密码:%s登录成功n" % (user, password))
except:
    print("用户名:%s,密码:%s无法登录成功n" % (user, password))

从代码中看出我们要验证SSH用户名密码需要四个参数:服务器地址、服务器端口、用户名和密码。输出用户名密码的验证结果

FTP登录验证

FTP连接可以直接使用python内置模块——ftplib,连接过程编码如下:

代码语言:javascript复制
import ftplib

server_ip = '127.0.0.1'
port = 21
user = 'admin'
password = 'admin'
print("=======破解FTP协议========")

ftp = ftplib.FTP()
ftp.connect(server_ip, port)
try:
    ftp.login(user, password)
    ftp.quit()
    print("用户名:%s,密码:%s登录成功n" % (user, password))
except:
    print("用户名:%s,密码:%s无法登录成功n" % (user, password))

从代码中看出我们要验证FTP用户名密码需要四个参数:服务器地址、服务器端口、用户名和密码。输出用户名密码的验证结果

SQL server登录验证

连接SQL server数据库需要我们安装第三方模块——pymssql,安装命令如下:

代码语言:javascript复制
pip install pymssql

安装完成后,我们的用户名密码验证编码如下:

代码语言:javascript复制
import pymssql

server_ip = '192.168.106.100'
port = '51502'
user = 'sa'
password = '123456'
print("=======破解SQL server协议========")
try:
    pymssql.connect(server_ip, user, password,port=port)
    print("用户名:%s,密码:%s登录成功n" % (user, password))
except :
    print("用户名:%s,密码:%s无法登录成功n" % (user, password))

同样是可以看到我们验证SQL server的用户名密码需要四个输入参数:服务器地址、服务器端口、用户名和密码。输出用户名密码的验证结果

总结

接下来我们同样总结一下这三个协议的输入输出参数。

协议

输入参数

输出参数

SSH

服务器地址服务器端口用户名密码

验证结果

FTP

服务器地址服务器端口用户名密码

验证结果

SQL Server

服务器地址服务器端口用户名密码

验证结果

经过两天的时间对协议的连接梳理,我们发现所有的协议破解都是需要四个输入参数:服务器地址、服务器端口、用户名和密码。但是对于邮件协议和其它网络协议不一致的地方在于它们的用户名需要符合特殊的格式。

这样梳理之后,我们发现我们的密码破解工具输入参数应该是五个,除了前面说的服务器地址、服务器端口、用户名和密码以外,再添加一个破解的协议类型。输出为破解结果。

0 人点赞