探测端口的存活通常是在网络管理和安全领域中进行的重要任务之一。主要原因如下:
- 网络管理:探测端口的存活可以帮助网络管理员监视网络设备和服务的运行状态。通过定期检查特定端口的存活状态,管理员可以确保网络中的关键服务正常运行,及时发现并解决可能存在的故障或异常情况。
- 服务发现:对端口的存活进行探测还可以帮助发现网络中运行的服务。通过扫描主机的开放端口,可以识别出运行在这些端口上的服务类型和版本信息,从而帮助管理员了解网络的拓扑结构和服务配置情况。
- 安全审计:定期检测端口的存活状态也是安全审计的重要手段之一。安全人员可以通过扫描网络上的端口,识别出可能存在的安全漏洞和风险,及时采取措施加固和修复漏洞,提高网络的安全性。
- 入侵检测:探测端口的存活还可以用于入侵检测。通过监视网络上的端口活动情况,可以及时发现恶意攻击者对网络的入侵行为,从而采取相应的防御措施,保护网络的安全。
标题内容
话不多说,直接上代码
python探测端口存活
探测单个端口
# -*- coding: utf-8 -*-
# @Time : 2024/04/16 16:51
# @Author : TangHao
# flag=1 正常; flag=0 异常;
import socket
import sys
def check_port(port):
try:
# 创建一个套接字对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置超时时间为1秒
s.settimeout(1)
# 尝试连接端口
s.connect(('localhost', port))
# 关闭套接字
s.close()
return 1
except Exception as e:
return 0
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python port_monitor.py <port>")
sys.exit(1)
port = int(sys.argv[1])
if check_port(port):
print(f"Port {port} is open.")
else:
print(f"Port {port} is closed.")
运行效果
探测多个端口
# -*- coding: utf-8 -*-
# @Time : 2024/04/16 22:07
# @Author : TangHao
import socket
import sys
# flag=1 正常; flag=0 异常;
# 定义检查端口列表
ports = []
def check_port(ports):
con = []
discon = []
for port in ports:
dest = int(port)
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
s.connect(('localhost', dest))
s.close()
con.append(dest)
except Exception as e:
discon.append(dest)
if len(con) != len(ports):
return 0 ,"Port {} is closed".format(discon)
else:
return 1,"Port {} is open;".format(con)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python port_monitor.py <port>,各端口用空格隔开: python port_monitor.py 22 3306")
sys.exit(1)
# 获取命令行参数列表
args = sys.argv
# 第一个参数是脚本名称,从第二个参数开始是传入的参数
for i, arg in enumerate(args[1:], start=1):
ports.append(arg)
#ports = ["3306",'22', '53']
check = check_port(ports)
print(check)
运行结果


文章评论