094. 编写一个函数,实现简单的安全扫描工具
094. 编写一个函数,实现简单的安全扫描工具
编写一个简单的安全扫描工具可以帮助检测一些常见的安全问题,例如弱密码、未打补丁的软件版本、开放的危险端口等。以下是一个简单的 Python 安全扫描工具的实现,它包括以下功能:
- 端口扫描:检测目标主机上开放的端口。
- 弱密码检测:尝试使用常见的弱密码登录某些服务(如 SSH、FTP)。
- 检查常见漏洞:检测目标主机是否运行了已知存在漏洞的服务。
示例代码
import socket
import paramiko
import ftplib
import requests
import concurrent.futures
# 端口扫描
def scan_port(host, port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
result = sock.connect_ex((host, port))
if result == 0:
print(f"[+] Port {
port} on {
host} is open.")
return True
else:
return False
except Exception as e:
print(f"Error scanning port {
port}: {
e}")
return False
finally:
sock.close()
# 弱密码检测(SSH)
def check_ssh_weak_password(host, port=22, username="root", password_list=None):
if password_list is None:
password_list = ["password", "123456", "root", "admin"]
try:
for password in password_list:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
client.connect(host, port=port, username=username, password=password, timeout=5)
print(f"[+] Weak password found for SSH: {
username}:{
password}")
retu