python 中编写的端口扫描器无法正常显示输出
Port Scanner written in python does not display output normally
所以我尝试在python3
中写一个端口扫描器
这是我的代码:
import sys #allows us to enter command line arguments, among other things
import socket
from datetime import datetime
if len(sys.argv) == 2:
target = socket.gethostbyname(sys.argv[1]) #Translate a hostname to IPv4
else:
print("Invalid amount of arguments.")
print("Syntax: python3 scanner.py <ip>")
sys.exit()
#Add a banner
print("-" * 50)
print("Scanning target "+target)
print("Time started: "+str(datetime.now()))
print("-" * 50)
try:
for port in range(50,85):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(1)
result = s.connect_ex((target,port)) #returns error indicator
print("Checking port {}".format(port))
if result == 0:
print("Port {} is open".format(port))
s.close()
except KeyboardInterrupt:
print("\nExiting program.")
sys.exit()
except socket.gaierror:
print("Hostname could not be resolved.")
sys.exit()
except socket.error:
print("Couldn't connect to server.")
sys.exit()
使用 Kali Linux 2020.2,最新版本 python,
我执行python3 scanner.py google.com
预计扫描仪在扫描过程中会一一显示"Checking port 50"、"Checking port 51"。
如果它发现任何一个端口是打开的,它会在 "Checking port xx"
之后显示 "Port xx is open"
但是,我的扫描仪卡在初始横幅上。
最终当它完成扫描时,它会一次性显示所有输出。
谁能告诉我如何解决这个问题?
只需在代码中切换以下行:
result = s.connect_ex((target,port)) #returns error indicator
print("Checking port {}".format(port))
变成:
print("Checking port {}".format(port))
result = s.connect_ex((target,port)) #returns error indicator
所以我尝试在python3
中写一个端口扫描器
这是我的代码:
import sys #allows us to enter command line arguments, among other things
import socket
from datetime import datetime
if len(sys.argv) == 2:
target = socket.gethostbyname(sys.argv[1]) #Translate a hostname to IPv4
else:
print("Invalid amount of arguments.")
print("Syntax: python3 scanner.py <ip>")
sys.exit()
#Add a banner
print("-" * 50)
print("Scanning target "+target)
print("Time started: "+str(datetime.now()))
print("-" * 50)
try:
for port in range(50,85):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(1)
result = s.connect_ex((target,port)) #returns error indicator
print("Checking port {}".format(port))
if result == 0:
print("Port {} is open".format(port))
s.close()
except KeyboardInterrupt:
print("\nExiting program.")
sys.exit()
except socket.gaierror:
print("Hostname could not be resolved.")
sys.exit()
except socket.error:
print("Couldn't connect to server.")
sys.exit()
使用 Kali Linux 2020.2,最新版本 python,
我执行python3 scanner.py google.com
预计扫描仪在扫描过程中会一一显示"Checking port 50"、"Checking port 51"。
如果它发现任何一个端口是打开的,它会在 "Checking port xx"
之后显示 "Port xx is open"但是,我的扫描仪卡在初始横幅上。
最终当它完成扫描时,它会一次性显示所有输出。
谁能告诉我如何解决这个问题?
只需在代码中切换以下行:
result = s.connect_ex((target,port)) #returns error indicator
print("Checking port {}".format(port))
变成:
print("Checking port {}".format(port))
result = s.connect_ex((target,port)) #returns error indicator