使用Python的端口扫描器
先决条件: Python中的套接字编程
本文只是提供一个生成端口扫描器的示例代码。此端口扫描器适用于 Web 应用程序和远程主机。创建此工具是为了提供端口扫描器的基本功能。套接字的一般概念已用于提供功能。 Port Scanner 基于Python 3 构建并使用一些额外的库,例如 socket 和 pyfiglet(用于精美的横幅)。
请找到以下端口扫描器的源代码:
源代码
Python3
import pyfiglet
import sys
import socket
from datetime import datetime
ascii_banner = pyfiglet.figlet_format("PORT SCANNER")
print(ascii_banner)
# Defining a target
if len(sys.argv) == 2:
# translate hostname to IPv4
target = socket.gethostbyname(sys.argv[1])
else:
print("Invalid amount of Argument")
# Add Banner
print("-" * 50)
print("Scanning Target: " + target)
print("Scanning started at:" + str(datetime.now()))
print("-" * 50)
try:
# will scan ports between 1 to 65,535
for port in range(1,65535):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(1)
# returns an error indicator
result = s.connect_ex((target,port))
if result ==0:
print("Port {} is open".format(port))
s.close()
except KeyboardInterrupt:
print("\n Exiting Program !!!!")
sys.exit()
except socket.gaierror:
print("\n Hostname Could Not Be Resolved !!!!")
sys.exit()
except socket.error:
print("\ Server not responding !!!!")
sys.exit()
输出:
注意:在上面第 27 行的代码中,即范围(1, 65535)中的端口:您可以自定义定义您必须扫描的范围内的端口。此端口扫描器通常需要最多 2 分钟的时间来生成格式输出,即某某端口打开或关闭。