欢迎访问宙启技术站
智能推送

使用ParamikoClient()在Python中实现SSH端口扫描和探测

发布时间:2023-12-24 08:08:45

Paramiko是一个Python库,用于在远程服务器上执行SSH操作。可以使用ParamikoClient()实现SSH端口扫描和探测。以下是一个使用ParamikoClient()实现SSH端口扫描和探测的示例:

import paramiko

def ssh_probe(ip, port, username, password):
    try:
        # 创建SSH客户端
        client = paramiko.SSHClient()
        # 自动添加远程服务器的SSH密钥
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        # 连接远程服务器
        client.connect(ip, port, username, password)
        print(f"SSH连接成功 - {ip}:{port} - {username}/{password}")
        # 执行命令
        stdin, stdout, stderr = client.exec_command("uname -a")
        print(stdout.read().decode())
        # 关闭连接
        client.close()
    except paramiko.AuthenticationException:
        print(f"SSH连接失败 - {ip}:{port} - {username}/{password} - 错误的用户名或密码")
    except paramiko.SSHException as e:
        print(f"SSH连接失败 - {ip}:{port} - {username}/{password} - {str(e)}")
    except paramiko.Exception as e:
        print(f"SSH连接失败 - {ip}:{port} - {username}/{password} - {str(e)}")

def ssh_scan(ip, ports, username, password):
    for port in ports:
        ssh_probe(ip, port, username, password)

# 设置要进行扫描的目标IP、端口、用户名和密码
ip = "192.168.0.1"
ports = [22, 2222]  # 扫描22和2222端口
username = "admin"
passwords = ["admin", "password", "123456"]  # 尝试多组密码

# 进行SSH端口扫描和探测
ssh_scan(ip, ports, username, passwords)

在上述示例中,我们使用了paramiko库中的SSHClient()类来创建SSH客户端,并使用connect()方法连接远程服务器。如果连接成功,则打印SSH连接成功的消息,并使用exec_command()方法执行一个命令(在示例中为uname -a)。然后,我们关闭SSH连接。

如果连接失败,则根据不同的错误类型打印相应的错误消息,例如错误的用户名或密码、SSH连接错误等。

我们还定义了一个ssh_scan()函数,该函数接受目标IP地址、端口、用户名和密码作为参数,并在给定的端口范围上调用ssh_probe()函数进行扫描和探测。

最后,我们设置了要扫描的目标IP地址、要探测的端口、用户名和密码。在示例中,我们尝试了多组密码,并使用ssh_scan()函数执行SSH端口扫描和探测。

此示例演示了如何使用Paramiko库实现SSH端口扫描和探测。请记住,在进行SSH扫描时要遵守法律和道德规范,并且仅对您有权限的目标进行扫描。