Python 3.x 用Python进行端口扫描
我正在学习如何使用Python和Python 3.x 用Python进行端口扫描,python-3.x,sockets,Python 3.x,Sockets,我正在学习如何使用Python和socket模块扫描端口 这就是我得到的: import socket, sys def check_ports_socket(ip, portlist): try: for port in portlist: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) res
socket
模块扫描端口
这就是我得到的:
import socket, sys
def check_ports_socket(ip, portlist):
try:
for port in portlist:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
result = sock.connect_ex((ip, port))
if result == 0:
print(f'Port {port}: \t Open')
else:
print(f'Port {port}: \t Closed')
sock.close()
except socket.error as e:
print(str(e))
print('Connection Error')
sys.exit()
check_ports_socket('localhost', [80, 8080, 443, 9999])
问题是我故意打开了端口80和9999,以查看代码是否真的有效,对于这两个端口,它都返回“closed”
有人能解释一下吗?这到底是什么意思“我故意打开了端口80和9999”?如果netstat-an没有返回这些端口的信息,那么您就没有“打开”它们。这意味着我运行了
sudoufw allow 80
和9999。如果您没有为这些端口提供服务的服务器,这意味着什么都没有……哦。。。。因此,打开端口对端口扫描没有任何影响,除非我实际为这些端口提供服务。sudo ufw allow 80
不是打开端口,而是允许连接端口